diff --git a/.github/ISSUE_TEMPLATE/1-standalone-bug.md b/.github/ISSUE_TEMPLATE/1-standalone-bug.md new file mode 100644 index 0000000000..6b80eec4cb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1-standalone-bug.md @@ -0,0 +1,27 @@ +--- +name: 1.16.3 Standalone Bug +about: For bugs that occur with Biomes O' Plenty for 1.16.3. We do not support older versions! +title: '' +labels: bug-minor +assignees: '' + +--- + +## Bug Report + +[ Lines between [ ] (square brackets) should be removed before posting. ]
+ +### What's the issue you encountered? + +[ Describe the issue in detail and what you were doing beforehand. ]
+ +### How can the issue be reproduced? + +[ Include a detailed step by step process for recreating your issue with only Biomes O' Plenty installed. ]
+ +### Logs + +[ Please include any relevant logs here. This can be done by dragging and dropping your log files into the issue. ]
+ +### Mod Version +[ Please put the version of the mod you were using here. ]
diff --git a/.github/ISSUE_TEMPLATE/2-standalone-crash.md b/.github/ISSUE_TEMPLATE/2-standalone-crash.md new file mode 100644 index 0000000000..3997419860 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2-standalone-crash.md @@ -0,0 +1,23 @@ +--- +name: 1.16.3 Standalone Crash +about: For crashes that occur with Biomes O' Plenty for 1.16.3. We do not support older versions! +title: '' +labels: crash +assignees: '' + +--- + +## Bug Report + +[ Lines between [ ] (square brackets) should be removed before posting. ]
+ +### How can the crash be reproduced? + +[ Include a detailed step by step process for recreating your crash with only Biomes O' Plenty installed. ]
+ +### Crash Report and Logs + +[ Please include your crash report and logs here. This can be done by dragging and dropping your log files and crash report files into the issue. ]
+ +### Mod Version +[ Please put the version of the mod you were using here. ]
diff --git a/.github/ISSUE_TEMPLATE/3-feature-request.md b/.github/ISSUE_TEMPLATE/3-feature-request.md new file mode 100644 index 0000000000..b5a2f54a51 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/3-feature-request.md @@ -0,0 +1,20 @@ +--- +name: 1.16.3 Feature Request +about: Feature requests for Biomes O' Plenty for 1.16.3. We do not support older versions! +title: '' +labels: feature +assignees: '' + +--- + +## Feature Request + +[ Lines between [ ] (square brackets) should be removed before posting. ]
+ +### What feature are you suggesting? + +[ Provide an overview of the feature being suggested. ]
+ +### Why should it be added? + +[ Describe the benefits of implementing this feature. ]
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..b87b036065 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Glitchfiend Discord + url: https://discord.gg/GyyzU6T + about: Please ask general questions here instead of opening issues for them. \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..cbe4ebe3e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ +/build/ +/bin/ +/out/ +/Mixin/ +/repo/ +/run/ +/logs/ +.idea/* +/.gradle/ +/.settings/ +/.classpath +/.project + +# OS generated files +*.DS_Store + +# IntelliJ project files +*.iml +*.ipr +*.iws + +*.launch +mappings/.gradle/ +#mappings/mcp/ +mappings/build/ +mappings/*.csv +mappings/.project +mappings/last_updated.json diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000000..0fb0afa150 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,60 @@ +@Library('forge-shared-library')_ + +pipeline { + options { + disableConcurrentBuilds() + } + agent { + docker { + image 'gradle:jdk8' + args '-v forgegc:/home/gradle/.gradle/' + } + } + environment { + GRADLE_ARGS = '--no-daemon --console=plain' // No daemon for now as FG3 kinda derps. //'-Dorg.gradle.daemon.idletimeout=5000' + JENKINS_HEAD = 'https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png' + } + + stages { + stage('fetch') { + steps { + checkout scm + } + } + stage('setup') { + steps { + withGradle { + sh './gradlew ${GRADLE_ARGS} --refresh-dependencies' + } + script { + env.MYVERSION = sh(returnStdout: true, script: './gradlew :properties -q | grep "^version:" | awk \'{print $2}\'').trim() + } + } + } + stage('changelog') { + when { + not { + changeRequest() + } + } + steps { + writeChangelog(currentBuild, "build/BiomesOPlenty-${env.MYVERSION}-changelog.txt") + } + } + stage('publish') { + when { + not { + changeRequest() + } + } + environment { + CURSE_API_KEY = credentials('curse-api-key') + } + steps { + withGradle { + sh './gradlew ${GRADLE_ARGS} :uploadArchives curseforge -PcurseApiKey=${CURSE_API_KEY}' + } + } + } + } +} \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000000..31b14f50c0 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,325 @@ +Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 +International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-NonCommercial-NoDerivatives 4.0 International Public +License ("Public License"). To the extent this Public License may be +interpreted as a contract, You are granted the Licensed Rights in +consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the +Licensor receives from making the Licensed Material available under +these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + c. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + d. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + e. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + f. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + g. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + h. NonCommercial means not primarily intended for or directed towards + commercial advantage or monetary compensation. For purposes of + this Public License, the exchange of the Licensed Material for + other material subject to Copyright and Similar Rights by digital + file-sharing or similar means is NonCommercial provided there is + no payment of monetary compensation in connection with the + exchange. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part, for NonCommercial purposes only; and + + b. produce and reproduce, but not Share, Adapted Material + for NonCommercial purposes only. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties, including when + the Licensed Material is used other than for NonCommercial + purposes. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material, You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + For the avoidance of doubt, You do not have permission under + this Public License to Share Adapted Material. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database for NonCommercial purposes + only and provided You do not Share Adapted Material; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. \ No newline at end of file diff --git a/README.md b/README.md index a0ebdf1632..e362fac559 100644 --- a/README.md +++ b/README.md @@ -1 +1,17 @@ -# BiomesOPlentyDev \ No newline at end of file +

+ +

+ +

https://discord.gg/GyyzU6T

+ +**Biomes O' Plenty** is a **Minecraft mod** that adds **over 50 new biomes** to the Overworld, Nether, and End. From Lavender Fields to Redwood Forests and many more, all of our biomes are decorated with a variety of **new trees, flowers, and plants!** + +----------------- + +**Note:** To use the mod on a **server**, you must set the **level-type** setting in your server's config file to **biomesoplenty** + +----------------- + + [](http://creativecommons.org/licenses/by-nc-nd/4.0/deed.en_US) + +Biomes O' Plenty is licensed under a [Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License](http://creativecommons.org/licenses/by-nc-nd/4.0/deed.en_US). \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000000..81e991dc09 --- /dev/null +++ b/build.gradle @@ -0,0 +1,188 @@ +buildscript { + repositories { + mavenLocal() + maven { url = 'https://files.minecraftforge.net/maven' } + jcenter() + mavenCentral() + } + dependencies { + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true + } +} + +plugins { + id "com.matthewprenger.cursegradle" version "1.4.0" +} + +apply plugin: 'net.minecraftforge.gradle' +apply plugin: 'eclipse' +apply plugin: 'idea' +apply plugin: 'maven' + +repositories { mavenLocal() } + +group = "com.github.glitchfiend.biomesoplenty" +archivesBaseName = "BiomesOPlenty" + +def getGitHash = { + def stdout = new ByteArrayOutputStream() + exec { + commandLine 'git', 'rev-parse', '--short', 'HEAD' + standardOutput = stdout + } + return stdout.toString().trim() +} + +version = "${minecraft_version}-${mod_version}.${System.getenv().BUILD_NUMBER}" + +minecraft { + mappings channel: 'official', version: minecraft_version + + accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') + + runs { + client = { + workingDirectory = project.file("run").canonicalPath + source sourceSets.main + } + server = { + workingDirectory = project.file("run").canonicalPath + source sourceSets.main + } + } +} + +processResources { + from (sourceSets.main.resources.srcDirs) { + include 'META-INF/mods.toml' + expand 'version': project.version + } +} + +jar { + classifier = 'universal' +} + +dependencies { + minecraft 'net.minecraftforge:forge:' + minecraft_version + '-' + forge_version +} + +task sourcesJar(type: Jar) { + from sourceSets.main.allJava + from (sourceSets.main.output) { + include 'LICENSE.txt' + } + + classifier = 'sources' +} + +task deobfJar(type: Jar) { + from sourceSets.main.output + classifier = 'deobf' +} + +task apiJar(type: Jar) { + from(sourceSets.main.allJava) { + include 'biomesoplenty/api/**' + } + from (sourceSets.main.output) { + include 'LICENSE.txt' + include 'biomesoplenty/api/**' + } + + classifier = 'api' +} + +def changelog_file = rootProject.file("build/BiomesOPlenty-${version}-changelog.txt") + +curseforge { + if (project.hasProperty('curseApiKey')) { + apiKey = project.getProperty('curseApiKey') + project { + id = '220318' + + if (changelog_file.exists()) { + changelog = changelog_file + } + + releaseType = 'beta' + + mainArtifact(jar) { + displayName = "Biomes O' Plenty ${version}" + } + addArtifact sourcesJar + addArtifact deobfJar + addArtifact apiJar + } + } +} + +artifacts { + if (changelog_file.exists()) { + archives changelog_file + } + archives jar + archives sourcesJar + archives deobfJar + archives apiJar +} + +uploadArchives { + repositories { + mavenDeployer { + if (project.hasProperty('forgeMavenPassword')) { + repository(url: "https://files.minecraftforge.net/maven/manage/upload") { + authentication(userName: project.getProperty('forgeMavenUsername'), password: project.getProperty('forgeMavenPassword')) + } + } + else { + // local repo folder. Might wanna juset use gradle install if you wanans end it to maven-local + repository(url: 'file://localhost/' + project.file('repo').getAbsolutePath()) + } + + pom { + groupId = project.group + version = project.version + artifactId = project.archivesBaseName + project { + name project.archivesBaseName + packaging 'jar' + description 'Biomes O Plenty' + url 'https://github.com/Glitchfiend/BiomesOPlenty' + + scm { + url 'https://github.com/Glitchfiend/BiomesOPlenty' + connection 'scm:git:git://github.com/Glitchfiend/BiomesOPlenty.git' + developerConnection 'scm:git:git@github.com:Glitchfiend/BiomesOPlenty.git' + } + + issueManagement { + system 'github' + url 'https://github.com/Glitchfiend/BiomesOPlenty/issues' + } + + licenses { + license { + name 'Creative Commons Attribution-NonCommercial-NoDerivs 4.0 International Public License' + url 'http://creativecommons.org/licenses/by-nc-nd/4.0/' + distribution 'repo' + } + } + + developers { + developer { + id 'Adubbz' + name 'Adubbz' + roles { role 'developer' } + } + developer { + id 'Forstride' + name 'Forstride' + roles { role 'developer' } + } + } + } + } + } + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000000..e6562e4b44 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,12 @@ +# Sets default memory used for gradle commands. Can be overridden by user or command line properties. +# This is required to provide enough memory for the Minecraft decompilation process. +org.gradle.jvmargs=-Xmx3G +org.gradle.daemon=false + +mod_version=13.1.0 + +minecraft_version=1.16.5 +minecraft_version_toml=16 +forge_version=36.1.0 +forge_version_toml=36 +forge_group=net.minecraftforge diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000..7a3265ee94 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 0000000000..949819d28a --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip diff --git a/gradlew b/gradlew new file mode 100644 index 0000000000..cbe9e0dc67 --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env bash + +############################################################################## +## +## 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 0000000000..8a0b282aa6 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@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 + +@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= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@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 Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_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=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +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/src/main/java/biomesoplenty/api/biome/BOPBiomes.java b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java new file mode 100644 index 0000000000..bc157e3261 --- /dev/null +++ b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java @@ -0,0 +1,104 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.api.biome; + +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biome; + +public class BOPBiomes +{ + public static RegistryKey alps = register("alps"); + public static RegistryKey alps_foothills = register("alps_foothills"); + public static RegistryKey bamboo_blossom_grove = register("bamboo_blossom_grove"); + public static RegistryKey bayou = register("bayou"); + public static RegistryKey bayou_mangrove = register("bayou_mangrove"); + public static RegistryKey burnt_forest = register("burnt_forest"); + public static RegistryKey cherry_blossom_grove = register("cherry_blossom_grove"); + public static RegistryKey cold_desert = register("cold_desert"); + public static RegistryKey coniferous_forest = register("coniferous_forest"); + public static RegistryKey coniferous_lakes = register("coniferous_lakes"); + public static RegistryKey dead_forest = register("dead_forest"); + public static RegistryKey deep_bayou = register("deep_bayou"); + public static RegistryKey dense_marsh = register("dense_marsh"); + public static RegistryKey dense_woodland = register("dense_woodland"); + public static RegistryKey dryland = register("dryland"); + public static RegistryKey dry_boneyard = register("dry_boneyard"); + public static RegistryKey fir_clearing = register("fir_clearing"); + public static RegistryKey flower_meadow = register("flower_meadow"); + public static RegistryKey fungal_field = register("fungal_field"); + public static RegistryKey fungal_jungle = register("fungal_jungle"); + public static RegistryKey golden_prairie = register("golden_prairie"); + public static RegistryKey grassland = register("grassland"); + public static RegistryKey grassland_clover_patch = register("grassland_clover_patch"); + public static RegistryKey gravel_beach = register("gravel_beach"); + public static RegistryKey grove = register("grove"); + public static RegistryKey grove_clearing = register("grove_clearing"); + public static RegistryKey grove_lakes = register("grove_lakes"); + public static RegistryKey highland = register("highland"); + public static RegistryKey highland_crag = register("highland_crag"); + public static RegistryKey highland_moor = register("highland_moor"); + public static RegistryKey jade_cliffs = register("jade_cliffs"); + public static RegistryKey lavender_field = register("lavender_field"); + public static RegistryKey lavender_forest = register("lavender_forest"); + public static RegistryKey lush_desert = register("lush_desert"); + public static RegistryKey lush_savanna = register("lush_savanna"); + public static RegistryKey marsh = register("marsh"); + public static RegistryKey meadow = register("meadow"); + public static RegistryKey meadow_forest = register("meadow_forest"); + public static RegistryKey muskeg = register("muskeg"); + public static RegistryKey mystic_grove = register("mystic_grove"); + public static RegistryKey mystic_plains = register("mystic_plains"); + public static RegistryKey ominous_woods = register("ominous_woods"); + public static RegistryKey ominous_mire = register("ominous_mire"); + public static RegistryKey orchard = register("orchard"); + public static RegistryKey origin_valley = register("origin_valley"); + public static RegistryKey prairie = register("prairie"); + public static RegistryKey rainbow_hills = register("rainbow_hills"); + public static RegistryKey rainforest = register("rainforest"); + public static RegistryKey rainforest_cliffs = register("rainforest_cliffs"); + public static RegistryKey rainforest_floodplain = register("rainforest_floodplain"); + public static RegistryKey redwood_forest = register("redwood_forest"); + public static RegistryKey redwood_forest_edge = register("redwood_forest_edge"); + public static RegistryKey redwood_hills = register("redwood_hills"); + public static RegistryKey scrubland = register("scrubland"); + public static RegistryKey seasonal_forest = register("seasonal_forest"); + public static RegistryKey seasonal_orchard = register("seasonal_orchard"); + public static RegistryKey seasonal_pumpkin_patch = register("seasonal_pumpkin_patch"); + public static RegistryKey shroomy_wetland = register("shroomy_wetland"); + public static RegistryKey shrubland = register("shrubland"); + public static RegistryKey shrubland_hills = register("shrubland_hills"); + public static RegistryKey snowy_coniferous_forest = register("snowy_coniferous_forest"); + public static RegistryKey snowy_fir_clearing = register("snowy_fir_clearing"); + public static RegistryKey snowy_maple_forest = register("snowy_maple_forest"); + public static RegistryKey tall_dead_forest = register("tall_dead_forest"); + public static RegistryKey tropic_beach = register("tropic_beach"); + public static RegistryKey tropics = register("tropics"); + public static RegistryKey tundra = register("tundra"); + public static RegistryKey tundra_basin = register("tundra_basin"); + public static RegistryKey tundra_bog = register("tundra_bog"); + public static RegistryKey volcanic_plains = register("volcanic_plains"); + public static RegistryKey volcano = register("volcano"); + public static RegistryKey wasteland = register("wasteland"); + public static RegistryKey wetland = register("wetland"); + public static RegistryKey wetland_forest = register("wetland_forest"); + public static RegistryKey wooded_scrubland = register("wooded_scrubland"); + public static RegistryKey woodland = register("woodland"); + + public static RegistryKey crystalline_chasm = register("crystalline_chasm"); + public static RegistryKey undergrowth = register("undergrowth"); + public static RegistryKey visceral_heap = register("visceral_heap"); + public static RegistryKey withered_abyss = register("withered_abyss"); + + private static RegistryKey register(String name) + { + return RegistryKey.create(Registry.BIOME_REGISTRY, new ResourceLocation(BiomesOPlenty.MOD_ID, name)); + } +} diff --git a/src/main/java/biomesoplenty/api/block/BOPBlocks.java b/src/main/java/biomesoplenty/api/block/BOPBlocks.java new file mode 100644 index 0000000000..c5400635e4 --- /dev/null +++ b/src/main/java/biomesoplenty/api/block/BOPBlocks.java @@ -0,0 +1,346 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.api.block; + +import net.minecraft.block.Block; + +public class BOPBlocks +{ + public static Block white_sand; + public static Block white_sandstone; + public static Block cut_white_sandstone; + public static Block cut_white_sandstone_slab; + public static Block chiseled_white_sandstone; + public static Block smooth_white_sandstone; + public static Block smooth_white_sandstone_slab; + public static Block smooth_white_sandstone_stairs; + public static Block white_sandstone_slab; + public static Block white_sandstone_stairs; + public static Block white_sandstone_wall; + + public static Block orange_sand; + public static Block orange_sandstone; + public static Block cut_orange_sandstone; + public static Block cut_orange_sandstone_slab; + public static Block chiseled_orange_sandstone; + public static Block smooth_orange_sandstone; + public static Block smooth_orange_sandstone_slab; + public static Block smooth_orange_sandstone_stairs; + public static Block orange_sandstone_slab; + public static Block orange_sandstone_stairs; + public static Block orange_sandstone_wall; + + public static Block black_sand; + public static Block black_sandstone; + public static Block cut_black_sandstone; + public static Block cut_black_sandstone_slab; + public static Block chiseled_black_sandstone; + public static Block smooth_black_sandstone; + public static Block smooth_black_sandstone_slab; + public static Block smooth_black_sandstone_stairs; + public static Block black_sandstone_slab; + public static Block black_sandstone_stairs; + public static Block black_sandstone_wall; + + public static Block mud; + public static Block mud_bricks; + public static Block mud_brick_slab; + public static Block mud_brick_stairs; + public static Block mud_brick_wall; + + public static Block origin_grass_block; + public static Block dried_salt; + public static Block flesh; + public static Block nether_crystal_block; + public static Block nether_crystal; + + public static Block toadstool_block; + public static Block glowshroom_block; + + public static Block origin_sapling; + public static Block origin_leaves; + public static Block flowering_oak_sapling; + public static Block flowering_oak_leaves; + public static Block rainbow_birch_sapling; + public static Block rainbow_birch_leaves; + public static Block yellow_autumn_sapling; + public static Block yellow_autumn_leaves; + public static Block orange_autumn_sapling; + public static Block orange_autumn_leaves; + public static Block maple_sapling; + public static Block maple_leaves; + + public static Block fir_sapling; + public static Block fir_leaves; + public static Block fir_log; + public static Block stripped_fir_log; + public static Block fir_wood; + public static Block stripped_fir_wood; + public static Block fir_planks; + public static Block fir_slab; + public static Block fir_stairs; + public static Block fir_fence; + public static Block fir_fence_gate; + public static Block fir_door; + public static Block fir_trapdoor; + public static Block fir_pressure_plate; + public static Block fir_button; + public static Block fir_sign; + public static Block fir_wall_sign; + + public static Block redwood_sapling; + public static Block redwood_leaves; + public static Block redwood_log; + public static Block stripped_redwood_log; + public static Block redwood_wood; + public static Block stripped_redwood_wood; + public static Block redwood_planks; + public static Block redwood_slab; + public static Block redwood_stairs; + public static Block redwood_fence; + public static Block redwood_fence_gate; + public static Block redwood_door; + public static Block redwood_trapdoor; + public static Block redwood_pressure_plate; + public static Block redwood_button; + public static Block redwood_sign; + public static Block redwood_wall_sign; + + public static Block white_cherry_sapling; + public static Block white_cherry_leaves; + public static Block pink_cherry_sapling; + public static Block pink_cherry_leaves; + public static Block cherry_log; + public static Block stripped_cherry_log; + public static Block cherry_wood; + public static Block stripped_cherry_wood; + public static Block cherry_planks; + public static Block cherry_slab; + public static Block cherry_stairs; + public static Block cherry_fence; + public static Block cherry_fence_gate; + public static Block cherry_door; + public static Block cherry_trapdoor; + public static Block cherry_pressure_plate; + public static Block cherry_button; + public static Block cherry_sign; + public static Block cherry_wall_sign; + + public static Block mahogany_sapling; + public static Block mahogany_leaves; + public static Block mahogany_log; + public static Block stripped_mahogany_log; + public static Block mahogany_wood; + public static Block stripped_mahogany_wood; + public static Block mahogany_planks; + public static Block mahogany_slab; + public static Block mahogany_stairs; + public static Block mahogany_fence; + public static Block mahogany_fence_gate; + public static Block mahogany_door; + public static Block mahogany_trapdoor; + public static Block mahogany_pressure_plate; + public static Block mahogany_button; + public static Block mahogany_sign; + public static Block mahogany_wall_sign; + + public static Block jacaranda_sapling; + public static Block jacaranda_leaves; + public static Block jacaranda_log; + public static Block stripped_jacaranda_log; + public static Block jacaranda_wood; + public static Block stripped_jacaranda_wood; + public static Block jacaranda_planks; + public static Block jacaranda_slab; + public static Block jacaranda_stairs; + public static Block jacaranda_fence; + public static Block jacaranda_fence_gate; + public static Block jacaranda_door; + public static Block jacaranda_trapdoor; + public static Block jacaranda_pressure_plate; + public static Block jacaranda_button; + public static Block jacaranda_sign; + public static Block jacaranda_wall_sign; + + public static Block palm_sapling; + public static Block palm_leaves; + public static Block palm_log; + public static Block stripped_palm_log; + public static Block palm_wood; + public static Block stripped_palm_wood; + public static Block palm_planks; + public static Block palm_slab; + public static Block palm_stairs; + public static Block palm_fence; + public static Block palm_fence_gate; + public static Block palm_door; + public static Block palm_trapdoor; + public static Block palm_pressure_plate; + public static Block palm_button; + public static Block palm_sign; + public static Block palm_wall_sign; + + public static Block willow_sapling; + public static Block willow_leaves; + public static Block willow_log; + public static Block stripped_willow_log; + public static Block willow_wood; + public static Block stripped_willow_wood; + public static Block willow_planks; + public static Block willow_slab; + public static Block willow_stairs; + public static Block willow_fence; + public static Block willow_fence_gate; + public static Block willow_door; + public static Block willow_trapdoor; + public static Block willow_pressure_plate; + public static Block willow_button; + public static Block willow_sign; + public static Block willow_wall_sign; + + public static Block dead_sapling; + public static Block dead_leaves; + public static Block dead_log; + public static Block stripped_dead_log; + public static Block dead_wood; + public static Block stripped_dead_wood; + public static Block dead_planks; + public static Block dead_slab; + public static Block dead_stairs; + public static Block dead_fence; + public static Block dead_fence_gate; + public static Block dead_door; + public static Block dead_trapdoor; + public static Block dead_pressure_plate; + public static Block dead_button; + public static Block dead_sign; + public static Block dead_wall_sign; + + public static Block magic_sapling; + public static Block magic_leaves; + public static Block magic_log; + public static Block stripped_magic_log; + public static Block magic_wood; + public static Block stripped_magic_wood; + public static Block magic_planks; + public static Block magic_slab; + public static Block magic_stairs; + public static Block magic_fence; + public static Block magic_fence_gate; + public static Block magic_door; + public static Block magic_trapdoor; + public static Block magic_pressure_plate; + public static Block magic_button; + public static Block magic_sign; + public static Block magic_wall_sign; + + public static Block umbran_sapling; + public static Block umbran_leaves; + public static Block umbran_log; + public static Block stripped_umbran_log; + public static Block umbran_wood; + public static Block stripped_umbran_wood; + public static Block umbran_planks; + public static Block umbran_slab; + public static Block umbran_stairs; + public static Block umbran_fence; + public static Block umbran_fence_gate; + public static Block umbran_door; + public static Block umbran_trapdoor; + public static Block umbran_pressure_plate; + public static Block umbran_button; + public static Block umbran_sign; + public static Block umbran_wall_sign; + + public static Block hellbark_sapling; + public static Block hellbark_leaves; + public static Block hellbark_log; + public static Block stripped_hellbark_log; + public static Block hellbark_wood; + public static Block stripped_hellbark_wood; + public static Block hellbark_planks; + public static Block hellbark_slab; + public static Block hellbark_stairs; + public static Block hellbark_fence; + public static Block hellbark_fence_gate; + public static Block hellbark_door; + public static Block hellbark_trapdoor; + public static Block hellbark_pressure_plate; + public static Block hellbark_button; + public static Block hellbark_sign; + public static Block hellbark_wall_sign; + + public static Block rose; + public static Block violet; + public static Block lavender; + public static Block wildflower; + public static Block orange_cosmos; + public static Block pink_daffodil; + public static Block pink_hibiscus; + public static Block glowflower; + public static Block wilted_lily; + public static Block burning_blossom; + + public static Block blue_hydrangea; + public static Block goldenrod; + + public static Block willow_vine; + public static Block spanish_moss; + public static Block spanish_moss_plant; + + public static Block sprout; + public static Block bush; + public static Block clover; + public static Block huge_clover_petal; + public static Block dune_grass; + public static Block desert_grass; + public static Block dead_grass; + public static Block cattail; + public static Block barley; + public static Block reed; + public static Block watergrass; + public static Block mangrove_root; + public static Block dead_branch; + public static Block bramble; + + public static Block toadstool; + public static Block glowshroom; + + public static Block potted_origin_sapling; + public static Block potted_flowering_oak_sapling; + public static Block potted_rainbow_birch_sapling; + public static Block potted_yellow_autumn_sapling; + public static Block potted_orange_autumn_sapling; + public static Block potted_maple_sapling; + public static Block potted_fir_sapling; + public static Block potted_redwood_sapling; + public static Block potted_white_cherry_sapling; + public static Block potted_pink_cherry_sapling; + public static Block potted_mahogany_sapling; + public static Block potted_jacaranda_sapling; + public static Block potted_palm_sapling; + public static Block potted_willow_sapling; + public static Block potted_dead_sapling; + public static Block potted_magic_sapling; + public static Block potted_umbran_sapling; + public static Block potted_hellbark_sapling; + public static Block potted_rose; + public static Block potted_violet; + public static Block potted_lavender; + public static Block potted_wildflower; + public static Block potted_orange_cosmos; + public static Block potted_pink_daffodil; + public static Block potted_pink_hibiscus; + public static Block potted_glowflower; + public static Block potted_wilted_lily; + public static Block potted_burning_blossom; + public static Block potted_sprout; + public static Block potted_clover; + public static Block potted_toadstool; + public static Block potted_glowshroom; +} diff --git a/src/main/java/biomesoplenty/api/entity/BOPEntities.java b/src/main/java/biomesoplenty/api/entity/BOPEntities.java new file mode 100644 index 0000000000..b3ea10f31a --- /dev/null +++ b/src/main/java/biomesoplenty/api/entity/BOPEntities.java @@ -0,0 +1,16 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.api.entity; + +import net.minecraft.entity.EntityType; +import net.minecraft.entity.item.BoatEntity; + +public class BOPEntities +{ + public static EntityType boat_bop; +} diff --git a/src/main/java/biomesoplenty/api/enums/BOPClimates.java b/src/main/java/biomesoplenty/api/enums/BOPClimates.java new file mode 100644 index 0000000000..f18966812b --- /dev/null +++ b/src/main/java/biomesoplenty/api/enums/BOPClimates.java @@ -0,0 +1,211 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.api.enums; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.init.ModBiomes; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import net.minecraft.util.RegistryKey; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraftforge.common.BiomeManager; +import net.minecraftforge.common.BiomeManager.BiomeType; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Set; +import java.util.stream.Collectors; + +public enum BOPClimates +{ + ICE_CAP (BiomeType.ICY), + TUNDRA (BiomeType.ICY), + WET_BOREAL (BiomeType.COOL), + DRY_BOREAL (BiomeType.COOL), + WET_TEMPERATE (BiomeType.COOL), + DRY_TEMPERATE (BiomeType.WARM), + COOL_TEMPERATE (BiomeType.COOL), + WARM_TEMPERATE (BiomeType.WARM), + SUBTROPICAL (BiomeType.WARM), + TROPICAL (BiomeType.DESERT), + MEDITERRANEAN (BiomeType.WARM), + SAVANNA (BiomeType.DESERT), + HOT_DESERT (BiomeType.DESERT), + WASTELAND (null), + NETHER (null); + + public final BiomeType biomeType; + private int totalBiomesWeight; + private int totalIslandBiomesWeight; + + private ArrayList landBiomes = Lists.newArrayList(); + private ArrayList islandBiomes = Lists.newArrayList(); + + BOPClimates(BiomeType biomeType) + { + this.biomeType = biomeType; + } + + public BOPClimates addBiome(int weight, RegistryKey biome) + { + return this.addBiome(new WeightedBiomeEntry(weight, biome)); + } + + public BOPClimates addBiome(WeightedBiomeEntry biomeEntry) + { + this.totalBiomesWeight += biomeEntry.weight; + this.landBiomes.add(biomeEntry); + return this; + } + + public BOPClimates addIslandBiome(int weight, RegistryKey biome) + { + return this.addIslandBiome(new WeightedBiomeEntry(weight, biome)); + } + + public BOPClimates addIslandBiome(WeightedBiomeEntry biomeEntry) + { + this.totalIslandBiomesWeight += biomeEntry.weight; + this.islandBiomes.add(biomeEntry); + return this; + } + + public RegistryKey getRandomBiome(INoiseRandom context, RegistryKey fallback) + { + if (this.totalBiomesWeight == 0) + return fallback; + + int weight = context.nextRandom(this.totalBiomesWeight); + Iterator iterator = this.landBiomes.iterator(); + WeightedBiomeEntry item; + do + { + item = iterator.next(); + weight -= item.weight; + } + while (weight >= 0); + return item.biome; + } + + public RegistryKey getRandomIslandBiome(INoiseRandom context, RegistryKey fallback) + { + if (this.totalIslandBiomesWeight == 0) + return fallback; + + int weight = context.nextRandom(this.totalIslandBiomesWeight); + Iterator iterator = this.islandBiomes.iterator(); + WeightedBiomeEntry item; + do + { + item = iterator.next(); + weight -= item.weight; + } + while (weight >= 0); + return item.biome; + } + + public RegistryKey getRandomOceanBiome(INoiseRandom context, boolean deep) + { + return (deep ? Biomes.DEEP_OCEAN : Biomes.OCEAN); + } + + public ImmutableList getLandBiomes() + { + return this.landBiomes.isEmpty() ? ImmutableList.of(this.getDefaultWeightedBiomeEntry()) : ImmutableList.copyOf(this.landBiomes); + } + + public ImmutableList getIslandBiomes() + { + return this.islandBiomes.isEmpty() ? ImmutableList.of(this.getDefaultWeightedBiomeEntry()) : ImmutableList.copyOf(this.islandBiomes); + } + + private WeightedBiomeEntry getDefaultWeightedBiomeEntry() + { + return new WeightedBiomeEntry(100, Biomes.OCEAN); + } + + private static BOPClimates[] values = BOPClimates.values(); + + public static BOPClimates lookup(int i) {return values[i];} + + // map temperature and rainfall to climates + // temperature values from 0 (cold) to 8 (hot) and rainfall values from 0 (wet) to 11 (dry), index is (temperatureValue * 12) + rainfallValue + // we will contrive to make any combination equally likely, so the overall rarity of each climate is in proportion to the number of times it appears in the array + private static final BOPClimates[] climateMapping = new BOPClimates[] + { + TUNDRA, TUNDRA, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, TUNDRA, TUNDRA, + WET_BOREAL, WET_BOREAL, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, DRY_BOREAL, DRY_BOREAL, + WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, + WET_TEMPERATE, WET_TEMPERATE, WET_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE, + WET_TEMPERATE, WET_TEMPERATE, WET_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE, + SUBTROPICAL, SUBTROPICAL, WET_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, DRY_TEMPERATE, SAVANNA, SAVANNA, + SUBTROPICAL, SUBTROPICAL, SUBTROPICAL, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, SAVANNA, SAVANNA, SAVANNA, + TROPICAL, TROPICAL, SUBTROPICAL, SUBTROPICAL, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, SAVANNA, SAVANNA, HOT_DESERT, HOT_DESERT, + TROPICAL, TROPICAL, SUBTROPICAL, SUBTROPICAL, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, SAVANNA, SAVANNA, HOT_DESERT, HOT_DESERT + }; + + public static int[] getClimateMappingInts() + { + // 9 temperature values, 12 rainfall values, 12 * 9 = 108 + int[] out = new int[108]; + for (int i = 0; i < 108; i++) + { + out[i] = climateMapping[i].ordinal(); + } + return out; + } + + public static ImmutableSet> getOverworldBiomes() + { + Set> set = Sets.newHashSet(); + + for (BOPClimates climate : BOPClimates.values()) + { + if (climate == BOPClimates.NETHER) + { + continue; + } + + set.addAll(climate.getLandBiomes().stream().map(weightedBiomeEntry -> weightedBiomeEntry.biome).collect(Collectors.toSet())); + set.addAll(climate.getIslandBiomes().stream().map(weightedBiomeEntry -> weightedBiomeEntry.biome).collect(Collectors.toSet())); + } + + ModBiomes.subBiomes.values().forEach(weightedSubBiome -> set.add(weightedSubBiome.biome)); + return ImmutableSet.copyOf(set); + } + + public static class WeightedBiomeEntry + { + public final int weight; + public final RegistryKey biome; + + public WeightedBiomeEntry(int weight, RegistryKey biome) + { + this.weight = weight; + this.biome = biome; + } + } + + // for debugging purposes + public static void printWeights() + { + for (BOPClimates climate : BOPClimates.values()) + { + for (WeightedBiomeEntry entry : climate.landBiomes) + { + System.out.println(climate.name()+" "+entry.biome.location()+" "+entry.weight); + } + } + } + +} diff --git a/src/main/java/biomesoplenty/api/item/BOPItems.java b/src/main/java/biomesoplenty/api/item/BOPItems.java new file mode 100644 index 0000000000..5aa98461aa --- /dev/null +++ b/src/main/java/biomesoplenty/api/item/BOPItems.java @@ -0,0 +1,32 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.api.item; + +import net.minecraft.item.Item; + +public class BOPItems +{ + public static Item bop_icon; + + public static Item mud_ball; + public static Item mud_brick; + + public static Item fir_boat; + public static Item redwood_boat; + public static Item cherry_boat; + public static Item mahogany_boat; + public static Item jacaranda_boat; + public static Item palm_boat; + public static Item willow_boat; + public static Item dead_boat; + public static Item magic_boat; + public static Item umbran_boat; + public static Item hellbark_boat; + + public static Item music_disc_wanderer; +} diff --git a/src/main/java/biomesoplenty/api/particle/BOPParticleTypes.java b/src/main/java/biomesoplenty/api/particle/BOPParticleTypes.java new file mode 100644 index 0000000000..58801d73b9 --- /dev/null +++ b/src/main/java/biomesoplenty/api/particle/BOPParticleTypes.java @@ -0,0 +1,13 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.api.particle; + +public enum BOPParticleTypes +{ + MUD +} diff --git a/src/main/java/biomesoplenty/api/sound/BOPSounds.java b/src/main/java/biomesoplenty/api/sound/BOPSounds.java new file mode 100644 index 0000000000..793e0a8116 --- /dev/null +++ b/src/main/java/biomesoplenty/api/sound/BOPSounds.java @@ -0,0 +1,15 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.api.sound; + +import net.minecraft.util.SoundEvent; + +public class BOPSounds +{ + public static SoundEvent music_disc_wanderer; +} diff --git a/src/main/java/biomesoplenty/client/BOPClassicPack.java b/src/main/java/biomesoplenty/client/BOPClassicPack.java new file mode 100644 index 0000000000..5b12123378 --- /dev/null +++ b/src/main/java/biomesoplenty/client/BOPClassicPack.java @@ -0,0 +1,141 @@ +/**Copied from Twilight Forest and modified with permission**/ + +package biomesoplenty.client; + +import biomesoplenty.core.BiomesOPlenty; +import com.google.common.base.Joiner; +import net.minecraft.resources.ResourcePack; +import net.minecraft.resources.ResourcePackFileNotFoundException; +import net.minecraft.resources.ResourcePackType; +import net.minecraft.resources.data.IMetadataSectionSerializer; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fml.loading.moddiscovery.ModFile; + +import javax.annotation.Nullable; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; +import java.util.Collection; +import java.util.Collections; +import java.util.Set; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +@OnlyIn(Dist.CLIENT) +public class BOPClassicPack extends ResourcePack +{ + private final ModFile modFile; + private static final String subDir = "classic/"; + + public BOPClassicPack(ModFile modFile) + { + super(modFile.getFilePath().toFile()); + this.modFile = modFile; + } + + @Override + public Set getNamespaces(ResourcePackType type) + { + try + { + Path root = modFile.getLocator().findPath(modFile, subDir + type.getDirectory()).toAbsolutePath(); + return Files.walk(root,1).map(path -> root.relativize(path.toAbsolutePath())).filter(path -> path.getNameCount() > 0).map(p->p.toString().replaceAll("/$","")).filter(s -> !s.isEmpty()).collect(Collectors.toSet()); + } + catch (Throwable t) + { + BiomesOPlenty.logger.error("BOPClassicPack failed to collect resource namespaces!", t); + return Collections.emptySet(); + } + } + + @Override + protected InputStream getResource(String location) throws IOException + { + final Path path = modFile.getLocator().findPath(modFile, subDir + location); + + if (!Files.exists(path)) + { + BiomesOPlenty.logger.error("File does not exist!"); + throw new ResourcePackFileNotFoundException(path.toFile(), location); + } + + return Files.newInputStream(path, StandardOpenOption.READ); + } + + @Override + protected boolean hasResource(String resourcePath) + { + return Files.exists(modFile.getLocator().findPath(modFile, subDir + resourcePath)); + } + + @Override + public Collection getResources(ResourcePackType type, String namespaceIn, String pathIn, int maxDepthIn, Predicate filterIn) + { + try + { + Path root = modFile.getLocator().findPath(modFile, subDir + type.getDirectory()).toAbsolutePath(); + Path inputPath = root.getFileSystem().getPath(pathIn); + + return Files.walk(root).map(path -> root.relativize(path.toAbsolutePath())).filter(path -> path.getNameCount() > 1 && path.getNameCount() - 1 <= maxDepthIn).filter(path -> !path.toString().endsWith(".mcmeta")).filter(path -> path.subpath(1, path.getNameCount()).startsWith(inputPath)).filter(path -> filterIn.test(path.getFileName().toString())).map(path -> new ResourceLocation(path.getName(0).toString(), Joiner.on('/').join(path.subpath(1, Math.min(maxDepthIn, path.getNameCount()))))).collect(Collectors.toList()); + } + catch (IOException e) + { + return Collections.emptyList(); + } + } + + @Override + public void close() { } + + @Override + public String getName() + { + return "BOP Programmer Art"; + } + + @Nullable + @Override + public T getMetadataSection(IMetadataSectionSerializer serializer) throws IOException + { + InputStream inputStream = getResource("pack.mcmeta"); + Throwable throwable = null; + T resourceMetaData; + + try + { + resourceMetaData = getMetadataFromStream(serializer, inputStream); + } + catch (Throwable t) + { + throwable = t; + throw t; + } + finally + { + if (inputStream != null) + { + if (throwable != null) + { + try + { + inputStream.close(); + } + catch (Throwable t) + { + throwable.addSuppressed(t); + } + } + else + { + inputStream.close(); + } + } + } + + return resourceMetaData; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/client/handler/GuiEventHandler.java b/src/main/java/biomesoplenty/client/handler/GuiEventHandler.java new file mode 100644 index 0000000000..0121d34250 --- /dev/null +++ b/src/main/java/biomesoplenty/client/handler/GuiEventHandler.java @@ -0,0 +1,50 @@ +package biomesoplenty.client.handler; + +import biomesoplenty.init.ModBiomes; +import biomesoplenty.init.ModConfig; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screen.*; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.event.GuiOpenEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import java.util.Optional; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE) +public class GuiEventHandler +{ + @OnlyIn(Dist.CLIENT) + @SubscribeEvent + public static void onGuiOpened(GuiOpenEvent event) + { + Screen gui = event.getGui(); + Minecraft mc = Minecraft.getInstance(); + Screen prevScreen = mc.screen; + + // Default to the bop worldtype + if (ModConfig.ClientConfig.useWorldType.get() && gui instanceof CreateWorldScreen && prevScreen instanceof WorldSelectionScreen) + { + WorldOptionsScreen optionsScreen = ((CreateWorldScreen)gui).worldGenSettingsComponent; + optionsScreen.preset = Optional.of(findBopBiomeGeneratorTypeScreen()); + optionsScreen.settings = optionsScreen.preset.get().create(optionsScreen.registryHolder, optionsScreen.settings.seed(), optionsScreen.settings.generateFeatures(), optionsScreen.settings.generateBonusChest()); + } + } + + private static BiomeGeneratorTypeScreens findBopBiomeGeneratorTypeScreen() + { + for (BiomeGeneratorTypeScreens screen : BiomeGeneratorTypeScreens.PRESETS) + { + TranslationTextComponent desc = (TranslationTextComponent)screen.description; + + if (desc.getKey().equals("generator.minecraft.biomesoplenty")) + { + return screen; + } + } + + throw new RuntimeException("Failed to locate biomesoplenty biome generator type screen!"); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/client/renderer/BoatRendererBOP.java b/src/main/java/biomesoplenty/client/renderer/BoatRendererBOP.java new file mode 100644 index 0000000000..ecfc4d11ad --- /dev/null +++ b/src/main/java/biomesoplenty/client/renderer/BoatRendererBOP.java @@ -0,0 +1,78 @@ +package biomesoplenty.client.renderer; + +import biomesoplenty.common.entity.item.BoatEntityBOP; +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.IVertexBuilder; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererManager; +import net.minecraft.client.renderer.entity.model.BoatModel; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.vector.Quaternion; +import net.minecraft.util.math.vector.Vector3f; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static biomesoplenty.core.BiomesOPlenty.MOD_ID; + +@OnlyIn(Dist.CLIENT) +public class BoatRendererBOP extends EntityRenderer { + protected final BoatModel model = new BoatModel(); + + public BoatRendererBOP(EntityRendererManager renderer) { + super(renderer); + this.shadowRadius = 0.8f; + } + + @Override + public void render(BoatEntityBOP entity, float entityYaw, float partialTicks, MatrixStack matrixStack, IRenderTypeBuffer renderTypeBuffer, int light) { + matrixStack.pushPose(); + matrixStack.translate(0d, 0.375d, 0d); + matrixStack.mulPose(Vector3f.YP.rotationDegrees(180f - entityYaw)); + float f = (float) entity.getHurtTime() - partialTicks; + float f1 = entity.getDamage() - partialTicks; + if (f1 < 0f) { + f1 = 0f; + } + if (f > 0f) { + matrixStack.mulPose(Vector3f.XP.rotationDegrees(MathHelper.sin(f) * f * f1 / 10f * (float) entity.getHurtDir())); + } + float f2 = entity.getBubbleAngle(partialTicks); + if (!MathHelper.equal(f2, 0f)) { + matrixStack.mulPose(new Quaternion(new Vector3f(1f, 0f, 1f), entity.getBubbleAngle(partialTicks), true)); + } + matrixStack.scale(-1f, -1f, 1f); + matrixStack.mulPose(Vector3f.YP.rotationDegrees(90.0F)); + this.model.setupAnim(entity, partialTicks, 0f, -0.1f, 0f, 0f); + IVertexBuilder ivertexbuilder = renderTypeBuffer.getBuffer(this.model.renderType(this.getTextureLocation(entity))); + this.model.renderToBuffer(matrixStack, ivertexbuilder, light, OverlayTexture.NO_OVERLAY, 1f, 1f, 1f, 1f); + if (!entity.isUnderWater()) { + IVertexBuilder ivertexbuilder1 = renderTypeBuffer.getBuffer(RenderType.waterMask()); + this.model.waterPatch().render(matrixStack, ivertexbuilder1, light, OverlayTexture.NO_OVERLAY); + } + matrixStack.popPose(); + super.render(entity, entityYaw, partialTicks, matrixStack, renderTypeBuffer, light); + } + + @Override + public ResourceLocation getTextureLocation(BoatEntityBOP entity) { + return BOAT_TEXTURE_LOCATIONS[entity.getModel().ordinal()]; + } + + private static final ResourceLocation[] BOAT_TEXTURE_LOCATIONS = new ResourceLocation[] { + new ResourceLocation(MOD_ID, "textures/entity/boat/fir.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/redwood.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/cherry.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/mahogany.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/jacaranda.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/palm.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/willow.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/dead.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/magic.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/umbran.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/hellbark.png") + }; +} diff --git a/src/main/java/biomesoplenty/common/biome/BiomeConfigData.java b/src/main/java/biomesoplenty/common/biome/BiomeConfigData.java new file mode 100644 index 0000000000..9c31b62b24 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/BiomeConfigData.java @@ -0,0 +1,64 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome; + +import com.google.common.collect.Maps; +import com.google.gson.annotations.SerializedName; + +import java.util.Map; +import java.util.TreeMap; + +public class BiomeConfigData +{ + @SerializedName("standard_weights") + public TreeMap standardBiomeWeights = Maps.newTreeMap(); + + @SerializedName("technical_biome_toggles") + public TreeMap technicalBiomeEntries = Maps.newTreeMap(); + + @SerializedName("sub_biome_weights") + public TreeMap subBiomeEntries = Maps.newTreeMap(); + + @SerializedName("island_biome_toggles") + public TreeMap islandBiomeEntries = Maps.newTreeMap(); + + @SerializedName("vanilla_biome_weights") + public TreeMap vanillaBiomeEntries = Maps.newTreeMap(); + + public static class WeightedBiomeEntry + { + public int weight; + + public WeightedBiomeEntry(int weight) + { + this.weight = weight; + } + } + + public static class ToggleableBiomeEntry + { + public boolean enabled; + + public ToggleableBiomeEntry(boolean enabled) + { + this.enabled = enabled; + } + } + + public static class SubBiomeEntry + { + public int weight; + public float rarity; + + public SubBiomeEntry(int weight, float rarity) + { + this.weight = weight; + this.rarity = rarity; + } + } +} diff --git a/src/main/java/biomesoplenty/common/biome/BiomeMetadata.java b/src/main/java/biomesoplenty/common/biome/BiomeMetadata.java new file mode 100644 index 0000000000..b391f13451 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/BiomeMetadata.java @@ -0,0 +1,90 @@ +/******************************************************************************* + * Copyright 2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import com.google.common.collect.ImmutableMap; +import net.minecraft.util.RegistryKey; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; + +import javax.annotation.Nullable; +import java.util.HashMap; +import java.util.Map; +import java.util.function.BiFunction; + +public class BiomeMetadata +{ + private final ImmutableMap weightMap; + + @Nullable + private final RegistryKey beachBiome; + + @Nullable + private final RegistryKey riverBiome; + + @Nullable + private final BiFunction foliageColorFunction; + + @Nullable + private final BiFunction grassColorFunction; + + @Nullable + private final BiFunction waterColorFunction; + + protected BiomeMetadata(Map weights, @Nullable RegistryKey beachBiome, @Nullable RegistryKey riverBiome, BiFunction foliageColorFunction, BiFunction grassColorFunction, BiFunction waterColorFunction) + { + this.weightMap = ImmutableMap.copyOf(weights); + this.beachBiome = beachBiome; + this.riverBiome = riverBiome; + this.foliageColorFunction = foliageColorFunction; + this.grassColorFunction = grassColorFunction; + this.waterColorFunction = waterColorFunction; + } + + public Map getWeightMap() + { + return this.weightMap; + } + + @Nullable + public RegistryKey getBeachBiome() + { + return this.beachBiome; + } + + @Nullable + public RegistryKey getRiverBiome() + { + return this.riverBiome; + } + + @Nullable + public BiFunction getFoliageColorFunction() + { + return this.foliageColorFunction; + } + + @Nullable + public BiFunction getGrassColorFunction() + { + return this.grassColorFunction; + } + + @Nullable + public BiFunction getWaterColorFunction() + { + return this.waterColorFunction; + } + + public boolean hasWeights() + { + return !this.weightMap.isEmpty() && !this.weightMap.entrySet().stream().allMatch((entry) -> entry.getValue().equals(0)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/BiomeRegistry.java b/src/main/java/biomesoplenty/common/biome/BiomeRegistry.java new file mode 100644 index 0000000000..deb78d562a --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/BiomeRegistry.java @@ -0,0 +1,680 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.common.util.config.JsonUtil; +import biomesoplenty.core.BiomesOPlenty; +import biomesoplenty.init.ModBiomes; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import com.google.gson.reflect.TypeToken; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.biome.Biome; +import net.minecraftforge.fml.loading.FMLPaths; +import net.minecraftforge.registries.ForgeRegistries; +import org.apache.commons.lang3.tuple.Pair; + +import javax.annotation.Nullable; +import java.io.File; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.*; +import java.util.function.Consumer; + +public class BiomeRegistry +{ + private static final String CONFIG_FILE_NAME = "biomes.json"; + + private static Map> deferrances = Maps.newHashMap(); + + public static void deferStandardRegistration(BiomeTemplate biome, String name) + { + defer(RegistrationType.STANDARD_BIOME, new StandardBiomeRegistrationData(biome, name)); + } + + public static void deferTechnicalBiomeRegistration(BiomeTemplate biome, String name) + { + defer(RegistrationType.TECHNICAL_BIOME, new ToggleableStandardBiomeRegistrationData(biome, name, true)); + } + + public static void deferSubBiomeRegistration(RegistryKey parent, RegistryKey child, int weight, float rarity) + { + // Don't register sub biome if the parent or child don't exist + if (!BiomeUtil.exists(parent) || !BiomeUtil.exists(child)) { + return; + } + + defer(RegistrationType.SUB_BIOME, new SubBiomeRegistrationData(parent, child, weight, rarity)); + } + + public static void deferIslandBiomeRegistration(RegistryKey key, BOPClimates climate, int weight) + { + if (!BiomeUtil.exists(key)) + return; + + defer(RegistrationType.ISLAND_BIOME, new SingleClimateRegistrationData(key, climate, weight)); + } + + public static void deferVanillaBiomeRegistration(RegistryKey key, BOPClimates climate, int weight) + { + if (!BiomeUtil.exists(key)) + return; + + defer(RegistrationType.VANILLA_BIOME, new SingleClimateRegistrationData(key, climate, weight)); + } + + public static void configureStandardBiomes() + { + List standardRegistrations = deferrances.get(RegistrationType.STANDARD_BIOME); + TreeMap defaultEntries = Maps.newTreeMap(); + Map regDataMap = Maps.newHashMap(); + + for (DeferredRegistration registration : standardRegistrations) + { + StandardBiomeRegistrationData regData = registration.regData; + + // Ignore biomes which don't have any weights set by default + if (regData.getMetadata().hasWeights()) + { + String biomeName = new ResourceLocation(BiomesOPlenty.MOD_ID, regData.getName()).toString(); + Pair primaryWeight = regData.getPrimaryWeight(); + defaultEntries.put(biomeName, new BiomeConfigData.WeightedBiomeEntry(primaryWeight.getValue())); + regDataMap.put(biomeName, registration.regData); + } + } + + BiomeConfigData defaultConfigData = new BiomeConfigData(); + defaultConfigData.standardBiomeWeights = defaultEntries; + BiomeConfigData configData = getConfigData(defaultConfigData); + + TreeMap revisedStandardBiomeWeights = Maps.newTreeMap(defaultEntries); + + // Merge the config file with the default values + for (Map.Entry biomeEntry : configData.standardBiomeWeights.entrySet()) + { + if (revisedStandardBiomeWeights.containsKey(biomeEntry.getKey())) + { + revisedStandardBiomeWeights.put(biomeEntry.getKey(), biomeEntry.getValue()); + } + } + + // Write back to the config file + configData.standardBiomeWeights = revisedStandardBiomeWeights; + JsonUtil.writeFile(getConfigFile(), configData); + + for (Map.Entry biomeEntry : configData.standardBiomeWeights.entrySet()) + { + String name = biomeEntry.getKey(); + BiomeConfigData.WeightedBiomeEntry weight = biomeEntry.getValue(); + + // Replace the default weight map for this biome with those from the config file + if (regDataMap.containsKey(name)) + { + StandardBiomeRegistrationData registrationData = regDataMap.get(name); + registrationData.setPrimaryWeight(weight.weight); + } + } + } + + public static void configureTechnicalBiomes() + { + List biomeRegistrations = deferrances.get(RegistrationType.TECHNICAL_BIOME); + TreeMap defaultBiomeEntries = Maps.newTreeMap(); + + for (DeferredRegistration registration : biomeRegistrations) + { + ToggleableStandardBiomeRegistrationData regData = registration.regData; + String biomeName = new ResourceLocation(BiomesOPlenty.MOD_ID, regData.getName()).toString(); + defaultBiomeEntries.put(biomeName, new BiomeConfigData.ToggleableBiomeEntry(true)); + } + + BiomeConfigData defaultConfigData = new BiomeConfigData(); + defaultConfigData.technicalBiomeEntries = defaultBiomeEntries; + BiomeConfigData configData = getConfigData(defaultConfigData); + + TreeMap revisedBiomeEntries = Maps.newTreeMap(defaultBiomeEntries); + + // Merge the config file with the default values + for (Map.Entry biomeEntry : configData.technicalBiomeEntries.entrySet()) + { + if (revisedBiomeEntries.containsKey(biomeEntry.getKey())) + { + revisedBiomeEntries.put(biomeEntry.getKey(), biomeEntry.getValue()); + } + } + + // Write back to the config file + configData.technicalBiomeEntries = revisedBiomeEntries; + JsonUtil.writeFile(getConfigFile(), configData); + + for (DeferredRegistration registration : biomeRegistrations) + { + ToggleableStandardBiomeRegistrationData regData = registration.regData; + String biomeName = new ResourceLocation(BiomesOPlenty.MOD_ID, regData.getName()).toString(); + + if (revisedBiomeEntries.containsKey(biomeName)) + { + BiomeConfigData.ToggleableBiomeEntry entry = revisedBiomeEntries.get(biomeName); + + if (!entry.enabled) + { + registration.regData.setEnabled(false); + } + } + } + } + + public static void configureSubBiomes() + { + List subBiomeRegistrations = deferrances.get(RegistrationType.SUB_BIOME); + TreeMap defaultSubBiomeEntries = Maps.newTreeMap(); + Map regDataMap = Maps.newHashMap(); + + for (DeferredRegistration registration : subBiomeRegistrations) + { + SubBiomeRegistrationData regData = registration.regData; + String biomeName = registration.regData.getChild().location().toString(); + defaultSubBiomeEntries.put(biomeName, new BiomeConfigData.SubBiomeEntry(regData.getWeight(), regData.getRarity())); + regDataMap.put(biomeName, registration.regData); + } + + BiomeConfigData defaultConfigData = new BiomeConfigData(); + defaultConfigData.subBiomeEntries = defaultSubBiomeEntries; + BiomeConfigData configData = getConfigData(defaultConfigData); + + TreeMap revisedSubBiomeEntries = Maps.newTreeMap(defaultSubBiomeEntries); + + // Merge the config file with the default values + for (Map.Entry biomeEntry : configData.subBiomeEntries.entrySet()) + { + if (revisedSubBiomeEntries.containsKey(biomeEntry.getKey())) + { + revisedSubBiomeEntries.put(biomeEntry.getKey(), biomeEntry.getValue()); + } + } + + // Write back to the config file + configData.subBiomeEntries = revisedSubBiomeEntries; + JsonUtil.writeFile(getConfigFile(), configData); + + for (Map.Entry biomeEntry : configData.subBiomeEntries.entrySet()) + { + String name = biomeEntry.getKey(); + BiomeConfigData.SubBiomeEntry subBiomeEntry = biomeEntry.getValue(); + + // Replace the default values for this biome with those from the config file + if (regDataMap.containsKey(name)) + { + SubBiomeRegistrationData registrationData = regDataMap.get(name); + registrationData.setWeight(subBiomeEntry.weight); + registrationData.setRarity(subBiomeEntry.rarity); + } + } + } + + public static void configureIslandBiomes() + { + List biomeRegistrations = deferrances.get(RegistrationType.ISLAND_BIOME); + TreeMap defaultBiomeEntries = Maps.newTreeMap(); + + for (DeferredRegistration registration : biomeRegistrations) + { + SingleClimateRegistrationData regData = registration.regData; + String biomeName = regData.getBiome().location().toString(); + defaultBiomeEntries.put(biomeName, new BiomeConfigData.ToggleableBiomeEntry(true)); + } + + BiomeConfigData defaultConfigData = new BiomeConfigData(); + defaultConfigData.islandBiomeEntries = defaultBiomeEntries; + BiomeConfigData configData = getConfigData(defaultConfigData); + + TreeMap revisedBiomeEntries = Maps.newTreeMap(defaultBiomeEntries); + + // Merge the config file with the default values + for (Map.Entry biomeEntry : configData.islandBiomeEntries.entrySet()) + { + if (revisedBiomeEntries.containsKey(biomeEntry.getKey())) + { + revisedBiomeEntries.put(biomeEntry.getKey(), biomeEntry.getValue()); + } + } + + // Write back to the config file + configData.islandBiomeEntries = revisedBiomeEntries; + JsonUtil.writeFile(getConfigFile(), configData); + + for (DeferredRegistration registration : biomeRegistrations) + { + SingleClimateRegistrationData regData = registration.regData; + String biomeName = regData.getBiome().location().toString(); + + if (revisedBiomeEntries.containsKey(biomeName)) + { + BiomeConfigData.ToggleableBiomeEntry entry = revisedBiomeEntries.get(biomeName); + + if (!entry.enabled) + { + registration.regData.setWeight(0); + } + } + } + } + + public static void configureVanillaBiomes() + { + List biomeRegistrations = deferrances.get(RegistrationType.VANILLA_BIOME); + TreeMap defaultBiomeEntries = Maps.newTreeMap(); + Map regDataMap = Maps.newHashMap(); + + for (DeferredRegistration registration : biomeRegistrations) + { + SingleClimateRegistrationData regData = registration.regData; + String biomeName = registration.regData.getBiome().location().toString(); + defaultBiomeEntries.put(biomeName, new BiomeConfigData.WeightedBiomeEntry(regData.getWeight())); + regDataMap.put(biomeName, registration.regData); + } + + BiomeConfigData defaultConfigData = new BiomeConfigData(); + defaultConfigData.vanillaBiomeEntries = defaultBiomeEntries; + BiomeConfigData configData = getConfigData(defaultConfigData); + + TreeMap revisedBiomeEntries = Maps.newTreeMap(defaultBiomeEntries); + + // Merge the config file with the default values + for (Map.Entry biomeEntry : configData.vanillaBiomeEntries.entrySet()) + { + if (revisedBiomeEntries.containsKey(biomeEntry.getKey())) + { + revisedBiomeEntries.put(biomeEntry.getKey(), biomeEntry.getValue()); + } + } + + // Write back to the config file + configData.vanillaBiomeEntries = revisedBiomeEntries; + JsonUtil.writeFile(getConfigFile(), configData); + + for (Map.Entry biomeEntry : configData.vanillaBiomeEntries.entrySet()) + { + String name = biomeEntry.getKey(); + BiomeConfigData.WeightedBiomeEntry islandBiomeEntry = biomeEntry.getValue(); + + // Replace the default values for this biome with those from the config file + if (regDataMap.containsKey(name)) + { + SingleClimateRegistrationData registrationData = regDataMap.get(name); + registrationData.setWeight(islandBiomeEntry.weight); + } + } + } + + private static File getConfigDirFile() + { + Path configPath = FMLPaths.CONFIGDIR.get(); + Path bopConfigPath = Paths.get(configPath.toAbsolutePath().toString(), "biomesoplenty"); + return bopConfigPath.toFile(); + } + + private static File getConfigFile() + { + return new File(getConfigDirFile(), CONFIG_FILE_NAME); + } + + private static BiomeConfigData getConfigData(BiomeConfigData defaultConfigData) + { + BiomeConfigData configData = JsonUtil.getOrCreateConfigFile(getConfigDirFile(), CONFIG_FILE_NAME, defaultConfigData, new TypeToken(){}.getType()); + return configData; + } + + private static void defer(RegistrationType type, T data) + { + if (!deferrances.containsKey(type)) + deferrances.put(type, Lists.newArrayList()); + + List list = deferrances.get(type); + list.add(new DeferredRegistration(type.regFunc, data)); + } + + public static void finalizeRegistrations(RegistrationType type) + { + if (!deferrances.containsKey(type)) + return; + + if (type == RegistrationType.SUB_BIOME) + { + Set> children = Sets.newHashSet(); + deferrances.get(RegistrationType.SUB_BIOME).forEach((reg) -> { + RegistryKey biome = ((SubBiomeRegistrationData)reg.regData).getChild(); + if (children.contains(biome)) + { + throw new RuntimeException(String.format("Sub biome %s cannot be added to multiple parents", biome.location().toString())); + } + children.add(biome); + }); + + } + + for (DeferredRegistration reg : deferrances.get(type)) + { + reg.register(); + } + } + + public enum RegistrationType + { + STANDARD_BIOME((StandardBiomeRegistrationData data) -> { + Biome biome = data.getBiome(); + BiomeMetadata metadata = data.getMetadata(); + String name = data.getName(); + + // Don't register biomes with their weight set to 0, that normally have weights that are non-zero + if (!metadata.getWeightMap().isEmpty() && (data.weightMap.isEmpty() || data.weightMap.entrySet().stream().allMatch((entry) -> entry.getValue().equals(0)))) + { + BiomesOPlenty.logger.debug("Weights absent for " + data.getName() + ", disabling..."); + return; + } + + biome.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, name)); + ForgeRegistries.BIOMES.register(biome); + + for (Map.Entry entry : data.getWeights().entrySet()) + { + if (entry != null && entry.getValue() > 0) + { + BOPClimates climate = entry.getKey(); + int weight = entry.getValue(); + BiomesOPlenty.logger.debug(String.format("%s weight set to %d for climate %s", name, weight, climate.name())); + climate.addBiome(weight, BiomeUtil.createKey(data.getBiome())); + } + } + + if (data.getMetadata() != null) + { + ModBiomes.biomeMetadata.put(BiomeUtil.createKey(data.getBiome()), data.getMetadata()); + } + }), + TECHNICAL_BIOME((ToggleableStandardBiomeRegistrationData data) -> { + Biome biome = data.getBiome(); + String name = data.getName(); + + if (!data.getEnabled()) + { + BiomesOPlenty.logger.debug("Technical biome " + data.getName() + " is disabled."); + return; + } + + biome.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, name)); + ForgeRegistries.BIOMES.register(biome); + + if (data.getMetadata() != null) + { + ModBiomes.biomeMetadata.put(BiomeUtil.createKey(data.getBiome()), data.getMetadata()); + } + }), + SUB_BIOME((SubBiomeRegistrationData data) -> { + if (data.getWeight() == 0) + { + BiomesOPlenty.logger.debug("Weights absent for sub biome" + data.getChild().location().toString() + ", disabling..."); + return; + } + + String childName = data.getChild().location().toString(); + BiomesOPlenty.logger.debug(String.format("Sub biome %s weight set to %d", childName, data.getWeight())); + ModBiomes.subBiomes.put(BiomeUtil.getBiomeId(data.getParent()), new ModBiomes.WeightedSubBiome(data.getChild(), data.getRarity(), data.getWeight())); + }), + ISLAND_BIOME((SingleClimateRegistrationData data) -> { + if (data.getWeight() == 0) + { + BiomesOPlenty.logger.debug("Weights absent for island biome" + data.getBiome().location().toString() + ", disabling..."); + return; + } + + String biomeName = data.getBiome().location().toString(); + BiomesOPlenty.logger.debug(String.format("Island biome %s weight set to %d for climate %s", biomeName, data.getWeight(), data.getClimate().name())); + ModBiomes.islandBiomeIds.add(BiomeUtil.getBiomeId(data.getBiome())); + data.getClimate().addIslandBiome(data.getWeight(), data.getBiome()); + }), + VANILLA_BIOME((SingleClimateRegistrationData data) -> { + if (data.getWeight() == 0) + { + BiomesOPlenty.logger.debug("Weights absent for vanilla biome" + data.getBiome().location().toString() + ", disabling..."); + return; + } + + data.getClimate().addBiome(data.getWeight(), data.getBiome()); + }); + + public final Consumer regFunc; + + RegistrationType(Consumer regFunc) + { + this.regFunc = regFunc; + } + } + + private interface IRegistrationData + { + + } + + private static abstract class TemplateRegistrationData implements IRegistrationData + { + private final Biome biome; + private final BiomeMetadata metadata; + + public TemplateRegistrationData(BiomeTemplate template) + { + this.biome = template.build(); + this.metadata = template.buildMetadata(); + } + + public TemplateRegistrationData(Biome biome) + { + this.biome = biome; + this.metadata = null; + } + + public Biome getBiome() + { + return this.biome; + } + + @Nullable + public BiomeMetadata getMetadata() + { + return this.metadata; + } + } + + private static class StandardBiomeRegistrationData extends TemplateRegistrationData + { + private final String name; + private Map weightMap; + + public StandardBiomeRegistrationData(BiomeTemplate biome, String name) + { + super(biome); + this.name = name; + this.weightMap = Maps.newHashMap(this.getMetadata().getWeightMap()); + this.ensureSingleWeight(); + } + + public String getName() + { + return this.name; + } + + public ImmutableMap getWeights() + { + return ImmutableMap.copyOf(this.weightMap); + } + + public int getWeight(BOPClimates climate) + { + return this.weightMap.get(climate); + } + + public void setWeight(BOPClimates climate, int weight) + { + this.weightMap.put(climate, weight); + this.ensureSingleWeight(); + } + + public Pair getPrimaryWeight() + { + List> pairs = Lists.newArrayList(); + this.weightMap.entrySet().forEach((entry) -> pairs.add(Pair.of(entry.getKey(), entry.getValue()))); + return pairs.get(0); + } + + public void setPrimaryWeight(int value) + { + BOPClimates climate = this.getPrimaryWeight().getKey(); + this.setWeight(climate, value); + } + + // This limitation is enforced for config file simplicity, and because we don't need it at this time + private void ensureSingleWeight() + { + if (this.weightMap.size() > 1) + { + throw new RuntimeException(String.format("%s cannot be assigned to multiple climates!\n%s", new ResourceLocation(BiomesOPlenty.MOD_ID, name).toString(), this.weightMap)); + } + } + } + + private static class SubBiomeRegistrationData implements IRegistrationData + { + private final RegistryKey parent; + private final RegistryKey child; + private int weight; + private float rarity; + + public SubBiomeRegistrationData(RegistryKey parent, RegistryKey child, int weight, float rarity) + { + this.parent = parent; + this.child = child; + this.weight = weight; + this.rarity = rarity; + } + + public RegistryKey getParent() + { + return this.parent; + } + + public RegistryKey getChild() + { + return this.child; + } + + public int getWeight() + { + return this.weight; + } + + public void setWeight(int weight) + { + this.weight = weight; + } + + public float getRarity() + { + return this.rarity; + } + + public void setRarity(float rarity) + { + this.rarity = rarity; + } + } + + private static class SingleClimateRegistrationData implements IRegistrationData + { + private final BOPClimates climate; + private final RegistryKey biome; + private int weight; + + public SingleClimateRegistrationData(RegistryKey biome, BOPClimates climate, int weight) + { + this.biome = biome; + this.climate = climate; + this.weight = weight; + } + + public RegistryKey getBiome() + { + return this.biome; + } + + public BOPClimates getClimate() + { + return this.climate; + } + + public int getWeight() + { + return this.weight; + } + + public void setWeight(int weight) + { + this.weight = weight; + } + } + + private static class ToggleableStandardBiomeRegistrationData extends TemplateRegistrationData + { + private final String name; + private boolean enabled; + + public ToggleableStandardBiomeRegistrationData(BiomeTemplate biome, String name, boolean enabled) + { + super(biome); + this.name = name; + this.enabled = enabled; + } + + public String getName() + { + return this.name; + } + + public boolean getEnabled() + { + return this.enabled; + } + + public void setEnabled(boolean enabled) + { + this.enabled = enabled; + } + } + + private static class DeferredRegistration + { + private final Consumer regFunc; + private final T regData; + + public DeferredRegistration(Consumer regFunc, T regData) + { + this.regFunc = regFunc; + this.regData = regData; + } + + public void register() + { + this.regFunc.accept(this.regData); + } + } +} diff --git a/src/main/java/biomesoplenty/common/biome/BiomeTemplate.java b/src/main/java/biomesoplenty/common/biome/BiomeTemplate.java new file mode 100644 index 0000000000..3cc3e2c050 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/BiomeTemplate.java @@ -0,0 +1,101 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome; + +import biomesoplenty.api.enums.BOPClimates; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.BiomeGenerationSettings; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.biome.MobSpawnInfo; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.BiFunction; + +public class BiomeTemplate +{ + private Map weightMap = new HashMap(); + private RegistryKey beachBiome = Biomes.BEACH; + private RegistryKey riverBiome = Biomes.RIVER; + private BiFunction foliageColorFunction; + private BiFunction grassColorFunction; + private BiFunction waterColorFunction; + + protected void configureBiome(Biome.Builder builder) {} + protected void configureGeneration(BiomeGenerationSettings.Builder builder) {} + protected void configureMobSpawns(MobSpawnInfo.Builder builder) {} + + protected void configureDefaultMobSpawns(MobSpawnInfo.Builder builder) + { + builder.setPlayerCanSpawn(); + } + + public final Biome build() + { + Biome.Builder biomeBuilder = new Biome.Builder(); + + // Configure the biome generation + BiomeGenerationSettings.Builder biomeGenBuilder = new BiomeGenerationSettings.Builder(); + this.configureGeneration(biomeGenBuilder); + biomeBuilder.generationSettings(biomeGenBuilder.build()); + + // Configure mob spawning + MobSpawnInfo.Builder mobSpawnBuilder = new MobSpawnInfo.Builder(); + this.configureDefaultMobSpawns(mobSpawnBuilder); + this.configureMobSpawns(mobSpawnBuilder); + biomeBuilder.mobSpawnSettings(mobSpawnBuilder.build()); + + // Configure and build the biome + this.configureBiome(biomeBuilder); + return biomeBuilder.build(); + } + + public final BiomeMetadata buildMetadata() + { + return new BiomeMetadata(this.weightMap, this.beachBiome, this.riverBiome, this.foliageColorFunction, this.grassColorFunction, this.waterColorFunction); + } + + public void addWeight(BOPClimates climate, int weight) + { + this.weightMap.put(climate, weight); + } + + public void setBeachBiome(RegistryKey biome) + { + this.beachBiome = biome; + } + + public void setRiverBiome(RegistryKey biome) + { + this.riverBiome = biome; + } + + public void setFoliageColorFunction(BiFunction func) + { + this.foliageColorFunction = func; + } + + public void setGrassColorFunction(BiFunction func) + { + this.grassColorFunction = func; + } + + public void setWaterColorFunction(BiFunction func) + { + this.waterColorFunction = func; + } + + public static int calculateSkyColor(float temperature) + { + float lvt_1_1_ = temperature / 3.0F; + lvt_1_1_ = MathHelper.clamp(lvt_1_1_, -1.0F, 1.0F); + return MathHelper.hsvToRgb(0.62222224F - lvt_1_1_ * 0.05F, 0.5F + lvt_1_1_ * 0.1F, 1.0F); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/NetherBiomeTemplate.java b/src/main/java/biomesoplenty/common/biome/NetherBiomeTemplate.java new file mode 100644 index 0000000000..af21387628 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/NetherBiomeTemplate.java @@ -0,0 +1,18 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome; + +import net.minecraft.world.biome.MobSpawnInfo; + +public class NetherBiomeTemplate extends BiomeTemplate +{ + protected void configureDefaultMobSpawns(MobSpawnInfo.Builder builder) + { + // Do nothing + } +} diff --git a/src/main/java/biomesoplenty/common/biome/nether/CrystallineChasmBiome.java b/src/main/java/biomesoplenty/common/biome/nether/CrystallineChasmBiome.java new file mode 100644 index 0000000000..fe1df062b5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/nether/CrystallineChasmBiome.java @@ -0,0 +1,69 @@ +package biomesoplenty.common.biome.nether; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.NetherBiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.client.audio.BackgroundMusicTracks; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.util.SoundEvents; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.carver.ConfiguredCarvers; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class CrystallineChasmBiome extends NetherBiomeTemplate +{ + public CrystallineChasmBiome() + { + this.addWeight(BOPClimates.NETHER, 5); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.NETHER).depth(0.1F).scale(0.2F).temperature(2.0F).downfall(0.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x59002C).skyColor(calculateSkyColor(2.0F)).ambientParticle(new ParticleEffectAmbience(ParticleTypes.INSTANT_EFFECT, 0.001785F)).ambientLoopSound(SoundEvents.AMBIENT_CRIMSON_FOREST_LOOP).ambientMoodSound(new MoodSoundAmbience(SoundEvents.AMBIENT_BASALT_DELTAS_MOOD, 6000, 8, 2.0D)).ambientAdditionsSound(new SoundAdditionsAmbience(SoundEvents.AMBIENT_BASALT_DELTAS_ADDITIONS, 0.0111D)).backgroundMusic(BackgroundMusicTracks.createGameMusic(SoundEvents.MUSIC_BIOME_NETHER_WASTES)).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.NETHER); + + //Terrain + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_NETHER); + builder.addStructureStart(StructureFeatures.NETHER_BRIDGE); + builder.addStructureStart(StructureFeatures.BASTION_REMNANT); + builder.addCarver(GenerationStage.Carving.AIR, ConfiguredCarvers.NETHER_CAVE); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_OPEN); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.PATCH_FIRE); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.PATCH_SOUL_FIRE); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.GLOWSTONE_EXTRA); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.GLOWSTONE); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.BROWN_MUSHROOM_NETHER); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.RED_MUSHROOM_NETHER); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.ORE_MAGMA); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_CLOSED); + + //Decoration + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.LARGE_CRYSTAL); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.SMALL_CRYSTAL); + + DefaultBiomeFeatures.addNetherDefaultOres(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + //Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.STRIDER, 60, 1, 2)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/nether/UndergrowthBiome.java b/src/main/java/biomesoplenty/common/biome/nether/UndergrowthBiome.java new file mode 100644 index 0000000000..00563a584d --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/nether/UndergrowthBiome.java @@ -0,0 +1,77 @@ +package biomesoplenty.common.biome.nether; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.NetherBiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.client.audio.BackgroundMusicTracks; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.util.SoundEvents; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.carver.ConfiguredCarvers; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class UndergrowthBiome extends NetherBiomeTemplate +{ + public UndergrowthBiome() + { + this.addWeight(BOPClimates.NETHER, 10); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.NETHER).depth(0.1F).scale(0.2F).temperature(2.0F).downfall(0.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x1C2109).skyColor(calculateSkyColor(2.0F)).ambientParticle(new ParticleEffectAmbience(ParticleTypes.MYCELIUM, 0.00714F)).ambientLoopSound(SoundEvents.AMBIENT_WARPED_FOREST_LOOP).ambientMoodSound(new MoodSoundAmbience(SoundEvents.AMBIENT_CRIMSON_FOREST_MOOD, 6000, 8, 2.0D)).ambientAdditionsSound(new SoundAdditionsAmbience(SoundEvents.AMBIENT_NETHER_WASTES_ADDITIONS, 0.0111D)).backgroundMusic(BackgroundMusicTracks.createGameMusic(SoundEvents.MUSIC_BIOME_NETHER_WASTES)).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.NETHER); + + //Terrain + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_NETHER); + builder.addStructureStart(StructureFeatures.NETHER_BRIDGE); + builder.addStructureStart(StructureFeatures.BASTION_REMNANT); + builder.addCarver(GenerationStage.Carving.AIR, ConfiguredCarvers.NETHER_CAVE); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_OPEN); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.PATCH_FIRE); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.PATCH_SOUL_FIRE); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.GLOWSTONE_EXTRA); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.GLOWSTONE); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.BROWN_MUSHROOM_NETHER); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.RED_MUSHROOM_NETHER); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.ORE_MAGMA); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_CLOSED); + + //Vegetation + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.UNDERGROWTH_TREES); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.NETHER_BRAMBLE); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.UNDERGROWTH_FLOWERS); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.SPROUTS_UNDERGROWTH); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_45); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.NETHER_VINES); + + DefaultBiomeFeatures.addNetherDefaultOres(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + //Entities + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.GHAST, 50, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.MAGMA_CUBE, 2, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.HOGLIN, 9, 3, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.STRIDER, 60, 1, 2)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/nether/VisceralHeapBiome.java b/src/main/java/biomesoplenty/common/biome/nether/VisceralHeapBiome.java new file mode 100644 index 0000000000..81fb6ff8bc --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/nether/VisceralHeapBiome.java @@ -0,0 +1,65 @@ +package biomesoplenty.common.biome.nether; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.NetherBiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.client.audio.BackgroundMusicTracks; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.util.SoundEvents; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.carver.ConfiguredCarvers; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class VisceralHeapBiome extends NetherBiomeTemplate +{ + public VisceralHeapBiome() + { + this.addWeight(BOPClimates.NETHER, 7); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.NETHER).depth(0.1F).scale(0.2F).temperature(2.0F).downfall(0.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x601F18).skyColor(calculateSkyColor(2.0F)).ambientParticle(new ParticleEffectAmbience(ParticleTypes.FALLING_LAVA, 0.001785F)).ambientLoopSound(SoundEvents.AMBIENT_NETHER_WASTES_LOOP).ambientMoodSound(new MoodSoundAmbience(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_MOOD, 6000, 8, 2.0D)).ambientAdditionsSound(new SoundAdditionsAmbience(SoundEvents.AMBIENT_CRIMSON_FOREST_ADDITIONS, 0.0111D)).backgroundMusic(BackgroundMusicTracks.createGameMusic(SoundEvents.MUSIC_BIOME_CRIMSON_FOREST)).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.VISCERAL_HEAP); + + //Terrain + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_NETHER); + builder.addStructureStart(StructureFeatures.NETHER_BRIDGE); + builder.addStructureStart(StructureFeatures.BASTION_REMNANT); + builder.addCarver(GenerationStage.Carving.AIR, ConfiguredCarvers.NETHER_CAVE); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_OPEN); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.ORE_MAGMA); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_CLOSED); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.FLESH_TENDON); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.BONE_SPINE); + + DefaultBiomeFeatures.addNetherDefaultOres(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + //Entities + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.GHAST, 50, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIFIED_PIGLIN, 100, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.STRIDER, 60, 1, 2)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/nether/WitheredAbyssBiome.java b/src/main/java/biomesoplenty/common/biome/nether/WitheredAbyssBiome.java new file mode 100644 index 0000000000..046196c8f7 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/nether/WitheredAbyssBiome.java @@ -0,0 +1,57 @@ +package biomesoplenty.common.biome.nether; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.NetherBiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.client.audio.BackgroundMusicTracks; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.util.SoundEvents; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.carver.ConfiguredCarvers; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; + +public class WitheredAbyssBiome extends NetherBiomeTemplate +{ + public WitheredAbyssBiome() + { + this.addWeight(BOPClimates.NETHER, 3); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.NETHER).depth(0.1F).scale(0.2F).temperature(2.0F).downfall(0.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x09060F).skyColor(calculateSkyColor(2.0F)).ambientParticle(new ParticleEffectAmbience(ParticleTypes.SMOKE, 0.00357F)).ambientLoopSound(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_LOOP).ambientMoodSound(new MoodSoundAmbience(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_MOOD, 6000, 8, 2.0D)).backgroundMusic(BackgroundMusicTracks.createGameMusic(SoundEvents.MUSIC_BIOME_BASALT_DELTAS)).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.WITHERED_ABYSS); + + //Terrain + builder.addStructureStart(StructureFeatures.NETHER_BRIDGE); + builder.addStructureStart(StructureFeatures.BASTION_REMNANT); + builder.addCarver(GenerationStage.Carving.AIR, ConfiguredCarvers.NETHER_CAVE); + + //Decoration + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.OBSIDIAN_SPLATTER); + + DefaultBiomeFeatures.addNetherDefaultOres(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + //Entities + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 1, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITHER_SKELETON, 1, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/AlpsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/AlpsBiome.java new file mode 100644 index 0000000000..76d11d13bf --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/AlpsBiome.java @@ -0,0 +1,71 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; + +public class AlpsBiome extends BiomeTemplate +{ + public AlpsBiome() + { + this.addWeight(BOPClimates.ICE_CAP, 5); + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(7.5F).scale(0.2F).temperature(-0.25F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.DEEP_SNOW); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.LLAMA, 5, 4, 6)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.STRAY, 80, 4, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/AlpsFoothillsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/AlpsFoothillsBiome.java new file mode 100644 index 0000000000..388c888357 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/AlpsFoothillsBiome.java @@ -0,0 +1,83 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class AlpsFoothillsBiome extends BiomeTemplate +{ + public AlpsFoothillsBiome() + { + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(3.0F).scale(0.3F).temperature(-0.25F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.ALPS_FOOTHILLS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ALPS_FOOTHILLS_TREES); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.LLAMA, 5, 4, 6)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.STRAY, 80, 4, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BambooBlossomGroveBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/BambooBlossomGroveBiome.java new file mode 100644 index 0000000000..d4e7715df9 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/BambooBlossomGroveBiome.java @@ -0,0 +1,95 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class BambooBlossomGroveBiome extends BiomeTemplate +{ + public BambooBlossomGroveBiome() + { + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.05F).scale(0.05F).temperature(0.6F).downfall(0.9F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x85CE71).foliageColorOverride(0x63BF66).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BAMBOO_BLOSSOM_GROVE_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CHERRY_BLOSSOM_GROVE_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHORT_BAMBOO_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_COLD); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PANDA, 80, 1, 2)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BayouBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/BayouBiome.java new file mode 100644 index 0000000000..4d13d656d5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/BayouBiome.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class BayouBiome extends BiomeTemplate +{ + public BayouBiome() + { + this.addWeight(BOPClimates.SUBTROPICAL, 10); + this.setBeachBiome(BOPBiomes.bayou_mangrove); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.3F).scale(0.0F).temperature(0.95F).downfall(0.9F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x62AF84).waterFogColor(0x0C211C).fogColor(12638463).skyColor(calculateSkyColor(0.95F)).grassColorOverride(0x6FAA50).foliageColorOverride(0x8BDB67).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addSwampClayDisk(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.MUD_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BAYOU_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_7); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 1, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BayouMangroveBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/BayouMangroveBiome.java new file mode 100644 index 0000000000..4c7ba3ad81 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/BayouMangroveBiome.java @@ -0,0 +1,86 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; + +public class BayouMangroveBiome extends BiomeTemplate +{ + public BayouMangroveBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.175F).scale(-0.075F).temperature(0.95F).downfall(0.9F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x62AF84).waterFogColor(0x0C211C).fogColor(12638463).skyColor(calculateSkyColor(0.95F)).grassColorOverride(0x6FAA50).foliageColorOverride(0x8BDB67).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.MANGROVE); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_COMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MANGROVE_ROOTS); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_75); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_RIVER); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.COD, 10, 3, 6)); + builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.TROPICAL_FISH, 5, 8, 8)); + builder.addSpawn(EntityClassification.WATER_CREATURE, new MobSpawnInfo.Spawners(EntityType.SQUID, 5, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BurntForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/BurntForestBiome.java new file mode 100644 index 0000000000..9524f01dad --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/BurntForestBiome.java @@ -0,0 +1,86 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class BurntForestBiome extends BiomeTemplate +{ + public BurntForestBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.1F).scale(0.1F).temperature(0.3F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.3F)).grassColorOverride(0x514F46).foliageColorOverride(0xB7B763).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_LAVA); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BURNT_FOREST_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLACK_SAND_SPLATTER); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_25); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/CherryBlossomGroveBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/CherryBlossomGroveBiome.java new file mode 100644 index 0000000000..c82e74089a --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/CherryBlossomGroveBiome.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class CherryBlossomGroveBiome extends BiomeTemplate +{ + public CherryBlossomGroveBiome() + { + this.addWeight(BOPClimates.COOL_TEMPERATE, 1); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(-0.1F).scale(0.1F).temperature(0.6F).downfall(0.9F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x85CE71).foliageColorOverride(0x63BF66).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CHERRY_BLOSSOM_GROVE_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CHERRY_BLOSSOM_GROVE_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PEONY_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_COLD); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ColdDesertBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ColdDesertBiome.java new file mode 100644 index 0000000000..1d27e5d817 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/ColdDesertBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; + +public class ColdDesertBiome extends BiomeTemplate +{ + public ColdDesertBiome() + { + this.addWeight(BOPClimates.ICE_CAP, 7); + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.ICY).depth(0.0F).scale(-0.075F).temperature(0.25F).downfall(0.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.25F)).grassColorOverride(0xAD9364).foliageColorOverride(0xB5A76C).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.COLD_DESERT); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_SNOWY); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_LAVA); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_GRASS_1); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.POLAR_BEAR, 1, 1, 2)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.STRAY, 80, 4, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ConiferousForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ConiferousForestBiome.java new file mode 100644 index 0000000000..3b4977cd30 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/ConiferousForestBiome.java @@ -0,0 +1,101 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.init.ModEntities; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class ConiferousForestBiome extends BiomeTemplate +{ + public ConiferousForestBiome() + { + this.addWeight(BOPClimates.WET_BOREAL, 10); + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.2F).scale(0.1F).temperature(0.45F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.45F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + builder.addStructureStart(StructureFeatures.VILLAGE_TAIGA); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + builder.addStructureStart(StructureFeatures.WOODLAND_MANSION); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CONIFEROUS_FOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CONIFEROUS_FOREST_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ConiferousLakesBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ConiferousLakesBiome.java new file mode 100644 index 0000000000..1d8ea002be --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/ConiferousLakesBiome.java @@ -0,0 +1,102 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import biomesoplenty.init.ModEntities; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class ConiferousLakesBiome extends BiomeTemplate +{ + public ConiferousLakesBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(-0.3F).scale(0.2F).temperature(0.45F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.45F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.EXPOSED_STONE); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.GRAVEL_DISK_EXTRA); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CONIFEROUS_LAKES_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CONIFEROUS_FOREST_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_RIVER); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.SALMON, 5, 1, 5)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/DeadForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/DeadForestBiome.java new file mode 100644 index 0000000000..ae33534e6d --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/DeadForestBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class DeadForestBiome extends BiomeTemplate +{ + public DeadForestBiome() + { + this.addWeight(BOPClimates.DRY_BOREAL, 3); + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.2F).scale(0.2F).temperature(0.3F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.3F)).grassColorOverride(0xBAAD64).foliageColorOverride(0xB7B763).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.WOODLAND_MANSION); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEAD_FOREST_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/DeepBayouBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/DeepBayouBiome.java new file mode 100644 index 0000000000..ca54e1671f --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/DeepBayouBiome.java @@ -0,0 +1,99 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class DeepBayouBiome extends BiomeTemplate +{ + public DeepBayouBiome() + { + this.setBeachBiome(BOPBiomes.bayou_mangrove); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.315F).scale(-0.05F).temperature(0.95F).downfall(0.9F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x62AF84).waterFogColor(0x0C211C).fogColor(12638463).skyColor(calculateSkyColor(0.95F)).grassColorOverride(0x6FAA50).foliageColorOverride(0x8BDB67).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addSwampClayDisk(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.MUD_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEEP_BAYOU_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEEP_BAYOU_VINES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_14); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 1, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/DenseMarshBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/DenseMarshBiome.java new file mode 100644 index 0000000000..3375ed4f04 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/DenseMarshBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; + +public class DenseMarshBiome extends BiomeTemplate +{ + public DenseMarshBiome() + { + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.15F).scale(-0.05F).temperature(0.65F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.65F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.MARSH); + + // Structures + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUB_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_100); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_250); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_250); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entity spawning + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/DenseWoodlandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/DenseWoodlandBiome.java new file mode 100644 index 0000000000..29f6d686e7 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/DenseWoodlandBiome.java @@ -0,0 +1,94 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class DenseWoodlandBiome extends BiomeTemplate +{ + public DenseWoodlandBiome() + { + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.2F).scale(0.15F).temperature(0.8F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xA7C047).foliageColorOverride(0x92AF1A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DENSE_WOODLAND_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GROVE_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GOLDENROD_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_TOADSTOOL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_TOADSTOOL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/DryBoneyardBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/DryBoneyardBiome.java new file mode 100644 index 0000000000..6c8e8237f8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/DryBoneyardBiome.java @@ -0,0 +1,86 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class DryBoneyardBiome extends BiomeTemplate +{ + public DryBoneyardBiome() + { + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.SAVANNA).depth(0.1F).scale(0.1F).temperature(0.85F).downfall(0.05F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(0x9E9DFF).grassColorOverride(0xE5DFA9).foliageColorOverride(0xDAE0B3).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.DRYLAND); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + builder.addStructureStart(StructureFeatures.NETHER_FOSSIL); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DRY_BONEYARD_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BONE_SPINE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/DrylandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/DrylandBiome.java new file mode 100644 index 0000000000..a090776a03 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/DrylandBiome.java @@ -0,0 +1,84 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class DrylandBiome extends BiomeTemplate +{ + public DrylandBiome() + { + this.addWeight(BOPClimates.SAVANNA, 3); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.SAVANNA).depth(0.1F).scale(0.1F).temperature(0.85F).downfall(0.05F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(0x9E9DFF).grassColorOverride(0xE5DFA9).foliageColorOverride(0xDAE0B3).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.DRYLAND); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DRYLAND_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/FirClearingBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/FirClearingBiome.java new file mode 100644 index 0000000000..6463d345e7 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/FirClearingBiome.java @@ -0,0 +1,95 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.init.ModEntities; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class FirClearingBiome extends BiomeTemplate +{ + public FirClearingBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.2F).scale(0.1F).temperature(0.45F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.45F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FIR_CLEARING_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CONIFEROUS_FOREST_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/FlowerMeadowBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/FlowerMeadowBiome.java new file mode 100644 index 0000000000..aefaa95434 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/FlowerMeadowBiome.java @@ -0,0 +1,86 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class FlowerMeadowBiome extends BiomeTemplate +{ + public FlowerMeadowBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.0F).scale(0.0F).temperature(0.4F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0x63B26D).foliageColorOverride(0x63B26D).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FLOWER_MEADOW_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FLOWER_MEADOW_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SUNFLOWER_1); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/FungalFieldBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/FungalFieldBiome.java new file mode 100644 index 0000000000..495705b5aa --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/FungalFieldBiome.java @@ -0,0 +1,91 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class FungalFieldBiome extends BiomeTemplate +{ + public FungalFieldBiome() + { + this.setBeachBiome(null); + this.setGrassColorFunction(this::getGrassColor); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(0.1F).scale(0.0F).temperature(0.9F).downfall(0.9F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4445678).waterFogColor(270131).fogColor(12638463).skyColor(calculateSkyColor(0.9F)).grassColorOverride(0x4AA2F9).foliageColorOverride(0x4ADCF9).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GLOWSHROOM_UNCOMMON); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_14); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_GLOWSHROOM_UNCOMMON); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_64); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.MOOSHROOM, 8, 4, 8)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } + + public int getGrassColor(double x, double z) + { + double d0 = Biome.BIOME_INFO_NOISE.getValue(x * 0.0225D, z * 0.0225D, false); + return d0 < -0.1D ? 0x4AA2F9 : 0x4DD6CA; + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/FungalJungleBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/FungalJungleBiome.java new file mode 100644 index 0000000000..4948e8c4e5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/FungalJungleBiome.java @@ -0,0 +1,99 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class FungalJungleBiome extends BiomeTemplate +{ + public FungalJungleBiome() + { + this.addWeight(BOPClimates.TROPICAL, 1); + this.setBeachBiome(null); + this.setGrassColorFunction(this::getGrassColor); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(0.15F).scale(0.1F).temperature(0.9F).downfall(0.9F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4445678).waterFogColor(270131).fogColor(12638463).skyColor(calculateSkyColor(0.9F)).grassColorOverride(0x4AA2F9).foliageColorOverride(0x4ADCF9).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FUNGAL_JUNGLE_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GLOWSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_GLOWSHROOM); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_7); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYCELIUM_SPLATTER); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_GLOWSHROOM); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.MOOSHROOM, 8, 4, 8)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } + + public int getGrassColor(double x, double z) + { + double d0 = Biome.BIOME_INFO_NOISE.getValue(x * 0.0225D, z * 0.0225D, false); + return d0 < -0.1D ? 0x4AA2F9 : 0x4DD6CA; + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/GoldenPrairieBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GoldenPrairieBiome.java new file mode 100644 index 0000000000..df77c1d3a0 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/GoldenPrairieBiome.java @@ -0,0 +1,75 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class GoldenPrairieBiome extends BiomeTemplate +{ + public GoldenPrairieBiome() {} + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.0F).scale(-0.1F).temperature(0.8F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xE4EA77).foliageColorOverride(0xC7E672).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BARLEY); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_64); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/GrasslandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GrasslandBiome.java new file mode 100644 index 0000000000..c54d80beff --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/GrasslandBiome.java @@ -0,0 +1,90 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class GrasslandBiome extends BiomeTemplate +{ + public GrasslandBiome() + { + this.addWeight(BOPClimates.COOL_TEMPERATE, 3); + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.1F).scale(0.2F).temperature(0.6F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x88C57F).foliageColorOverride(0x6AB66F).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_PLAINS); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE_DESERT); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/GrasslandCloverPatchBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GrasslandCloverPatchBiome.java new file mode 100644 index 0000000000..5a661ff407 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/GrasslandCloverPatchBiome.java @@ -0,0 +1,88 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class GrasslandCloverPatchBiome extends BiomeTemplate +{ + public GrasslandCloverPatchBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.0F).scale(0.1F).temperature(0.6F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x88C57F).foliageColorOverride(0x6AB66F).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_PATCH_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_250); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_CLOVER); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/GravelBeachBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GravelBeachBiome.java new file mode 100644 index 0000000000..c973958bc6 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/GravelBeachBiome.java @@ -0,0 +1,70 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class GravelBeachBiome extends BiomeTemplate +{ + public GravelBeachBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.BEACH).depth(0.0F).scale(0.025F).temperature(0.6F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.GRAVEL_FULL); + + // Structures + builder.addStructureStart(StructureFeatures.MINESHAFT); + builder.addStructureStart(StructureFeatures.BURIED_TREASURE); + builder.addStructureStart(StructureFeatures.SHIPWRECH_BEACHED); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/GroveBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GroveBiome.java new file mode 100644 index 0000000000..728b1b7ae8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/GroveBiome.java @@ -0,0 +1,95 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class GroveBiome extends BiomeTemplate +{ + public GroveBiome() + { + this.addWeight(BOPClimates.MEDITERRANEAN, 10); + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.5F).scale(0.3F).temperature(0.8F).downfall(0.275F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.PODZOL_MIXED); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_PLAINS); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GROVE_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GROVE_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PEONY_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/GroveClearingBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GroveClearingBiome.java new file mode 100644 index 0000000000..d2ccde85dd --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/GroveClearingBiome.java @@ -0,0 +1,94 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class GroveClearingBiome extends BiomeTemplate +{ + public GroveClearingBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.2F).scale(0.1F).temperature(0.8F).downfall(0.275F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_PLAINS); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GROVE_CLEARING_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GROVE_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PEONY_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/GroveLakesBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GroveLakesBiome.java new file mode 100644 index 0000000000..c502b0019a --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/GroveLakesBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class GroveLakesBiome extends BiomeTemplate +{ + public GroveLakesBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(-0.5F).scale(0.0F).temperature(0.8F).downfall(0.275F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.GROVE_LAKES); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_OCEAN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_DIORITE); + + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.DIORITE_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/HighlandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/HighlandBiome.java new file mode 100644 index 0000000000..e04a41c38c --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/HighlandBiome.java @@ -0,0 +1,89 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class HighlandBiome extends BiomeTemplate +{ + public HighlandBiome() + { + this.addWeight(BOPClimates.COOL_TEMPERATE, 5); + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.EXTREME_HILLS).depth(2.3F).scale(0.2F).temperature(0.6F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.LLAMA, 5, 4, 6)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/HighlandCragBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/HighlandCragBiome.java new file mode 100644 index 0000000000..b8ecc5bfad --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/HighlandCragBiome.java @@ -0,0 +1,86 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class HighlandCragBiome extends BiomeTemplate +{ + public HighlandCragBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.EXTREME_HILLS).depth(3.0F).scale(0.7F).temperature(0.6F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.HIGHLAND_CRAG); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CRAG_SPLATTER); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.LLAMA, 5, 4, 6)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/HighlandMoorBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/HighlandMoorBiome.java new file mode 100644 index 0000000000..8fc47668a9 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/HighlandMoorBiome.java @@ -0,0 +1,97 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class HighlandMoorBiome extends BiomeTemplate +{ + public HighlandMoorBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(1.8F).scale(-0.05F).temperature(0.6F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_COMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addSwampClayDisk(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MOOR_FLOWERS); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MOOR_FLOWERS_2); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUB_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_RIVER); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.LLAMA, 5, 4, 6)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/JadeCliffsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/JadeCliffsBiome.java new file mode 100644 index 0000000000..fcc108d268 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/JadeCliffsBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class JadeCliffsBiome extends BiomeTemplate +{ + public JadeCliffsBiome() + { + this.addWeight(BOPClimates.WARM_TEMPERATE, 1); + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(2.0F).scale(1.15F).temperature(0.8F).downfall(0.85F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0xBBD1D5).skyColor(0xB7CCAD).grassColorOverride(0x7CA568).foliageColorOverride(0x8BB76E).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.DEEP_GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.JADE_CLIFFS_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/LavenderFieldBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/LavenderFieldBiome.java new file mode 100644 index 0000000000..4f39f33c35 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/LavenderFieldBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class LavenderFieldBiome extends BiomeTemplate +{ + public LavenderFieldBiome() + { + this.addWeight(BOPClimates.MEDITERRANEAN, 3); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.0F).scale(0.05F).temperature(0.8F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xA1C36D).foliageColorOverride(0xA1C36D).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LAVENDER_FIELD_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LAVENDER_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/LavenderForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/LavenderForestBiome.java new file mode 100644 index 0000000000..314d85ec09 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/LavenderForestBiome.java @@ -0,0 +1,86 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class LavenderForestBiome extends BiomeTemplate +{ + public LavenderForestBiome() + { + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.1F).scale(0.1F).temperature(0.8F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xA1C36D).foliageColorOverride(0xA1C36D).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LAVENDER_FOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LAVENDER_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/LushDesertBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/LushDesertBiome.java new file mode 100644 index 0000000000..65a2bc3011 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/LushDesertBiome.java @@ -0,0 +1,97 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class LushDesertBiome extends BiomeTemplate +{ + public LushDesertBiome() + { + this.addWeight(BOPClimates.SAVANNA, 1); + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.DESERT).depth(0.6F).scale(0.6F).temperature(0.9F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(0.9F)).grassColorOverride(0xEFE182).foliageColorOverride(0xD3D156).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.LUSH_DESERT); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_DESERT); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LUSH_DESERT_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LUSH_DESERT_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DESERT_GRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DUNE_GRASS_128); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_DEAD_BUSH_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATER_SPRING_EXTRA); + + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.HUSK, 80, 4, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/LushSavannaBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/LushSavannaBiome.java new file mode 100644 index 0000000000..5dea12e2dd --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/LushSavannaBiome.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class LushSavannaBiome extends BiomeTemplate +{ + public LushSavannaBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.DESERT).depth(0.25F).scale(0.1F).temperature(0.9F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(0.9F)).grassColorOverride(0xEFE182).foliageColorOverride(0xD3D156).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.LUSH_SAVANNA); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.POPPY_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_50); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATER_SPRING_EXTRA); + + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.HUSK, 80, 4, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MarshBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MarshBiome.java new file mode 100644 index 0000000000..c6ea3acd0f --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/MarshBiome.java @@ -0,0 +1,90 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class MarshBiome extends BiomeTemplate +{ + public MarshBiome() + { + this.addWeight(BOPClimates.COOL_TEMPERATE, 7); + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.15F).scale(-0.05F).temperature(0.65F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.65F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.MARSH); + + // Structures + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_COMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_250); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_50); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entity spawning + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MeadowBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MeadowBiome.java new file mode 100644 index 0000000000..3f421ab44d --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/MeadowBiome.java @@ -0,0 +1,103 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class MeadowBiome extends BiomeTemplate +{ + public MeadowBiome() + { + this.addWeight(BOPClimates.WET_BOREAL, 7); + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.0F).scale(0.05F).temperature(0.4F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0x63B26D).foliageColorOverride(0x63B26D).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_TAIGA); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MEADOW_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MEADOW_FLOWERS); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MEADOW_FLOWERS_2); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SUNFLOWER_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MeadowForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MeadowForestBiome.java new file mode 100644 index 0000000000..6f284d1ce1 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/MeadowForestBiome.java @@ -0,0 +1,100 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class MeadowForestBiome extends BiomeTemplate +{ + public MeadowForestBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.0F).scale(0.05F).temperature(0.4F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0x63B26D).foliageColorOverride(0x63B26D).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_TAIGA); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MEADOW_FOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MEADOW_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MuskegBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MuskegBiome.java new file mode 100644 index 0000000000..618c5d7524 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/MuskegBiome.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class MuskegBiome extends BiomeTemplate +{ + public MuskegBiome() + { + this.addWeight(BOPClimates.ICE_CAP, 1); + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(-0.175F).scale(-0.05F).temperature(-0.25F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).grassColorOverride(0x94966E).foliageColorOverride(0x8D9B6B).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_CLAY); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_GRAVEL); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.MUD_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MUSKEG_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_1); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 1, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MysticGroveBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MysticGroveBiome.java new file mode 100644 index 0000000000..0d334c4313 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/MysticGroveBiome.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class MysticGroveBiome extends BiomeTemplate +{ + public MysticGroveBiome() + { + this.addWeight(BOPClimates.WET_TEMPERATE, 1); + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.1F).scale(0.1F).temperature(0.7F).downfall(0.8F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x9C3FE4).waterFogColor(0x2E0533).fogColor(0xFFC9DA).skyColor(0xAAEFFF).grassColorOverride(0x69CFDB).foliageColorOverride(0x70E0B5).ambientParticle(new ParticleEffectAmbience(ParticleTypes.END_ROD, 0.00011532552F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_CLAY); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.WHITE_SAND_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYSTIC_GROVE_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYSTIC_GROVE_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_RED_MUSHROOM_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_RED_MUSHROOM); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 20, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MysticPlainsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MysticPlainsBiome.java new file mode 100644 index 0000000000..0bfa1f4a54 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/MysticPlainsBiome.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class MysticPlainsBiome extends BiomeTemplate +{ + public MysticPlainsBiome() + { + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.0F).scale(-0.05F).temperature(0.7F).downfall(0.8F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x9C3FE4).waterFogColor(0x2E0533).fogColor(0xFFC9DA).skyColor(0xAAEFFF).grassColorOverride(0x69CFDB).foliageColorOverride(0x70E0B5).ambientParticle(new ParticleEffectAmbience(ParticleTypes.END_ROD, 0.00011532552F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_CLAY); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.WHITE_SAND_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYSTIC_PLAINS_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYSTIC_PLAINS_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_25); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 20, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/OminousMireBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/OminousMireBiome.java new file mode 100644 index 0000000000..c07eb0f6d1 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/OminousMireBiome.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class OminousMireBiome extends BiomeTemplate +{ + public OminousMireBiome() + { + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(-0.215F).scale(-0.05F).temperature(0.6F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x312346).waterFogColor(0x0A030C).fogColor(0x7881A5).skyColor(0x84A1CC).grassColorOverride(0x4C4A70).foliageColorOverride(0x6B487C).ambientParticle(new ParticleEffectAmbience(ParticleTypes.SMOKE, 0.00023065104F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.MARSH); + + // Structures + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.BLACK_SAND_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OMINOUS_MIRE_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OMINOUS_WOODS_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BRAMBLE_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 50, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 25, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/OminousWoodsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/OminousWoodsBiome.java new file mode 100644 index 0000000000..fb5d3d4859 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/OminousWoodsBiome.java @@ -0,0 +1,94 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class OminousWoodsBiome extends BiomeTemplate +{ + public OminousWoodsBiome() + { + this.addWeight(BOPClimates.WET_BOREAL, 1); + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.25F).scale(0.15F).temperature(0.6F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x312346).waterFogColor(0x0A030C).fogColor(0x7881A5).skyColor(0x84A1CC).grassColorOverride(0x4C4A70).foliageColorOverride(0x6B487C).ambientParticle(new ParticleEffectAmbience(ParticleTypes.SMOKE, 0.00023065104F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.WOODLAND_MANSION); + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.BLACK_SAND_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OMINOUS_WOODS_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OMINOUS_WOODS_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BRAMBLE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ILLUSIONER, 50, 2, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 50, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 25, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/OrchardBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/OrchardBiome.java new file mode 100644 index 0000000000..9c49ce1a8c --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/OrchardBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class OrchardBiome extends BiomeTemplate +{ + public OrchardBiome() { } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.0F).scale(0.0F).temperature(0.8F).downfall(0.4F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xA9DB69).foliageColorOverride(0xC9F75D).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ORCHARD_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ORCHARD_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entity spawning + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/OriginValleyBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/OriginValleyBiome.java new file mode 100644 index 0000000000..919d334b7b --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/OriginValleyBiome.java @@ -0,0 +1,88 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.carver.BOPConfiguredCarvers; +import biomesoplenty.common.world.gen.carver.BOPWorldCarvers; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; + +public class OriginValleyBiome extends BiomeTemplate +{ + public OriginValleyBiome() + { + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.NONE).depth(0.1F).scale(0.2F).temperature(0.6F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x0E31FF).waterFogColor(0x070059).fogColor(0xB0CFFF).skyColor(0x8CBDFF).grassColorOverride(0x9AFF5F).foliageColorOverride(0x3AFF00).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.ORIGIN_VALLEY); + + // Underground + builder.addCarver(GenerationStage.Carving.AIR, BOPConfiguredCarvers.ORIGIN_CAVE); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_CLAY); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_DIRT); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_GRAVEL); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_COAL); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_IRON); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_GOLD); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_REDSTONE); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_DIAMOND); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ORIGIN_VALLEY_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ORIGIN_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/PrairieBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/PrairieBiome.java new file mode 100644 index 0000000000..8e20f3fde0 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/PrairieBiome.java @@ -0,0 +1,91 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class PrairieBiome extends BiomeTemplate +{ + public PrairieBiome() + { + this.addWeight(BOPClimates.MEDITERRANEAN, 7); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.05F).scale(0.0F).temperature(0.8F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xE4EA77).foliageColorOverride(0xC7E672).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_PLAINS); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PRAIRIE_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CONIFEROUS_FOREST_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GOLDENROD_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RainbowHillsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RainbowHillsBiome.java new file mode 100644 index 0000000000..cecd8cb14f --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/RainbowHillsBiome.java @@ -0,0 +1,100 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.core.ClientProxy; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class RainbowHillsBiome extends BiomeTemplate +{ + public RainbowHillsBiome() + { + this.setBeachBiome(null); + this.setGrassColorFunction(this::getGrassColor); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.5F).scale(0.5F).temperature(0.55F).downfall(1.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(0.55F)).grassColorOverride(0x75CE8D).foliageColorOverride(getFoliageColor()).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINBOW_HILLS_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINBOW_HILLS_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GOLDENROD_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PEONY_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + } + + public int getGrassColor(double x, double z) + { + double d0 = Biome.BIOME_INFO_NOISE.getValue(x * 0.0225D, z * 0.0225D, false); + return d0 < -0.1D ? 0x77CE7F : 0x75CE8D; + } + + public int getFoliageColor() + { + return 0x75CE8D; + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RainforestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RainforestBiome.java new file mode 100644 index 0000000000..3034594d6e --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/RainforestBiome.java @@ -0,0 +1,101 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class RainforestBiome extends BiomeTemplate +{ + public RainforestBiome() + { + this.addWeight(BOPClimates.TROPICAL, 7); + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(0.15F).scale(0.35F).temperature(1.2F).downfall(2.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x3FDF99).waterFogColor(0x042F26).fogColor(12638463).skyColor(calculateSkyColor(1.2F)).grassColorOverride(0xA7E140).foliageColorOverride(0x88E140).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.JUNGLE_TEMPLE); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_JUNGLE); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.ORANGE_SAND_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_25); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_MELON); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PARROT, 40, 1, 2)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.OCELOT, 2, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RainforestCliffsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RainforestCliffsBiome.java new file mode 100644 index 0000000000..92e65a00df --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/RainforestCliffsBiome.java @@ -0,0 +1,102 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class RainforestCliffsBiome extends BiomeTemplate +{ + public RainforestCliffsBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(2.9F).scale(0.6F).temperature(1.2F).downfall(2.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x3FDF99).waterFogColor(0x042F26).fogColor(12638463).skyColor(calculateSkyColor(1.2F)).grassColorOverride(0xA7E140).foliageColorOverride(0x88E140).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.RAINFOREST_CLIFFS); + + // Structures + builder.addStructureStart(StructureFeatures.JUNGLE_TEMPLE); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.ORANGE_SAND_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_CLIFFS_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_7); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_CLIFFS_VINES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_25); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATER_SPRING_EXTRA); + + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PARROT, 40, 1, 2)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.OCELOT, 2, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RainforestFloodplainBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RainforestFloodplainBiome.java new file mode 100644 index 0000000000..e2a0a13c72 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/RainforestFloodplainBiome.java @@ -0,0 +1,91 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class RainforestFloodplainBiome extends BiomeTemplate +{ + public RainforestFloodplainBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(-0.125F).scale(-0.05F).temperature(1.2F).downfall(2.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x3FDF99).waterFogColor(0x042F26).fogColor(12638463).skyColor(calculateSkyColor(1.2F)).grassColorOverride(0xA7E140).foliageColorOverride(0x88E140).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.SWAMP); + + // Structures + builder.addStructureStart(StructureFeatures.JUNGLE_TEMPLE); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_COMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_FLOODPLAIN_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_7); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_250); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestBiome.java new file mode 100644 index 0000000000..c2563d6a83 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestBiome.java @@ -0,0 +1,92 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class RedwoodForestBiome extends BiomeTemplate +{ + public RedwoodForestBiome() + { + this.addWeight(BOPClimates.WARM_TEMPERATE, 5); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.25F).scale(0.05F).temperature(0.8F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xB5D55C).foliageColorOverride(0x8EBF42).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.PODZOL_FULL); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REDWOOD_FOREST_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_25); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestEdgeBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestEdgeBiome.java new file mode 100644 index 0000000000..c6eda047e0 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestEdgeBiome.java @@ -0,0 +1,89 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class RedwoodForestEdgeBiome extends BiomeTemplate +{ + public RedwoodForestEdgeBiome() {} + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.25F).scale(0.05F).temperature(0.8F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xB5D55C).foliageColorOverride(0x8EBF42).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.PODZOL_MIXED); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REDWOOD_FOREST_EDGE_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_7); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RedwoodHillsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodHillsBiome.java new file mode 100644 index 0000000000..0b9c25f8ab --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodHillsBiome.java @@ -0,0 +1,88 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class RedwoodHillsBiome extends BiomeTemplate +{ + public RedwoodHillsBiome() + { + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(1.5F).scale(0.2F).temperature(0.8F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xB5D55C).foliageColorOverride(0x8EBF42).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.PODZOL_FULL); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REDWOOD_HILLS_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.FLOWER_DEFAULT); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_25); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ScrublandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ScrublandBiome.java new file mode 100644 index 0000000000..ea5dfaad04 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/ScrublandBiome.java @@ -0,0 +1,90 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class ScrublandBiome extends BiomeTemplate +{ + public ScrublandBiome() + { + this.addWeight(BOPClimates.SAVANNA, 7); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.SAVANNA).depth(0.0F).scale(0.0F).temperature(1.1F).downfall(0.15F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(1.1F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_SAVANNA); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUBLAND_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DESERT_GRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUB_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java new file mode 100644 index 0000000000..b57ac331f3 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java @@ -0,0 +1,95 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.init.ModEntities; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class SeasonalForestBiome extends BiomeTemplate +{ + public SeasonalForestBiome() + { + this.addWeight(BOPClimates.DRY_BOREAL, 7); + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.2F).scale(0.2F).temperature(0.4F).downfall(0.8F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xDD9A4A).foliageColorOverride(0xD1B24A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.WOODLAND_MANSION); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SEASONAL_FOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.FLOWER_DEFAULT); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SeasonalOrchardBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalOrchardBiome.java new file mode 100644 index 0000000000..d21ed5ec14 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalOrchardBiome.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class SeasonalOrchardBiome extends BiomeTemplate +{ + public SeasonalOrchardBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.0F).scale(0.0F).temperature(0.4F).downfall(0.8F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xDD9A4A).foliageColorOverride(0xD1B24A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.WOODLAND_MANSION); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SEASONAL_ORCHARD_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.FLOWER_DEFAULT); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SeasonalPumpkinPatchBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalPumpkinPatchBiome.java new file mode 100644 index 0000000000..7e12132164 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalPumpkinPatchBiome.java @@ -0,0 +1,94 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class SeasonalPumpkinPatchBiome extends BiomeTemplate +{ + public SeasonalPumpkinPatchBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.0F).scale(-0.025F).temperature(0.4F).downfall(0.8F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xDD9A4A).foliageColorOverride(0xD1B24A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SEASONAL_PUMPKIN_PATCH_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BIG_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PUMPKIN_PATCH); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ShroomyWetlandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ShroomyWetlandBiome.java new file mode 100644 index 0000000000..0f55a536d1 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/ShroomyWetlandBiome.java @@ -0,0 +1,99 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class ShroomyWetlandBiome extends BiomeTemplate +{ + public ShroomyWetlandBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(0.0F).scale(0.0F).temperature(0.6F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x272179).waterFogColor(0x0C031B).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x5A935F).foliageColorOverride(0x4F9657).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addSwampClayDisk(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.MUD_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHROOMY_WETLAND_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_BROWN_MUSHROOM_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PODZOL_SPLATTER); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_BROWN_MUSHROOM); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 1, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ShrublandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ShrublandBiome.java new file mode 100644 index 0000000000..e8a10101d5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/ShrublandBiome.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class ShrublandBiome extends BiomeTemplate +{ + public ShrublandBiome() + { + this.addWeight(BOPClimates.DRY_TEMPERATE, 7); + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.05F).scale(0.05F).temperature(0.6F).downfall(0.05F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_PLAINS); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHRUBLAND_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHRUBLAND_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ShrublandHillsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ShrublandHillsBiome.java new file mode 100644 index 0000000000..834e58b0da --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/ShrublandHillsBiome.java @@ -0,0 +1,92 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class ShrublandHillsBiome extends BiomeTemplate +{ + public ShrublandHillsBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(1.0F).scale(0.2F).temperature(0.6F).downfall(0.05F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.EXPOSED_STONE); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHRUBLAND_HILLS_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHRUBLAND_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SnowyConiferousForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SnowyConiferousForestBiome.java new file mode 100644 index 0000000000..312818696b --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/SnowyConiferousForestBiome.java @@ -0,0 +1,95 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.init.ModEntities; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class SnowyConiferousForestBiome extends BiomeTemplate +{ + public SnowyConiferousForestBiome() + { + this.addWeight(BOPClimates.TUNDRA, 5); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(0.2F).scale(0.1F).temperature(-0.25F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.IGLOO); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SNOWY_CONIFEROUS_FOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SNOWY_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SnowyFirClearingBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SnowyFirClearingBiome.java new file mode 100644 index 0000000000..9023faebf5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/SnowyFirClearingBiome.java @@ -0,0 +1,89 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.init.ModEntities; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class SnowyFirClearingBiome extends BiomeTemplate +{ + public SnowyFirClearingBiome() {} + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(0.2F).scale(0.1F).temperature(-0.25F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.IGLOO); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FIR_CLEARING_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SnowyMapleForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SnowyMapleForestBiome.java new file mode 100644 index 0000000000..1862569d6d --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/SnowyMapleForestBiome.java @@ -0,0 +1,94 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.init.ModEntities; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class SnowyMapleForestBiome extends BiomeTemplate +{ + public SnowyMapleForestBiome() + { + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(0.2F).scale(0.2F).temperature(-0.25F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.IGLOO); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SNOWY_MAPLE_FOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SNOWY_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TallDeadForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TallDeadForestBiome.java new file mode 100644 index 0000000000..828ff2c0a5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/TallDeadForestBiome.java @@ -0,0 +1,85 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class TallDeadForestBiome extends BiomeTemplate +{ + public TallDeadForestBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.5F).scale(0.1F).temperature(0.3F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.3F)).grassColorOverride(0xBAAD64).foliageColorOverride(0xB7B763).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_DEAD_FOREST_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TropicBeachBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TropicBeachBiome.java new file mode 100644 index 0000000000..370cfefa4f --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/TropicBeachBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; + +public class TropicBeachBiome extends BiomeTemplate +{ + public TropicBeachBiome() + { + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.BEACH).depth(0.0F).scale(0.025F).temperature(0.95F).downfall(1.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4445678).waterFogColor(270131).fogColor(0xB2EDFF).skyColor(0x66BCFF).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.TROPIC_BEACH); + + + // Structures + builder.addStructureStart(StructureFeatures.BURIED_TREASURE); + builder.addStructureStart(StructureFeatures.SHIPWRECH_BEACHED); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_JUNGLE); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TROPIC_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEA_PICKLE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.WARM_OCEAN_VEGETATION); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.TURTLE, 5, 2, 5)); + builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.PUFFERFISH, 15, 1, 3)); + builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.TROPICAL_FISH, 25, 8, 8)); + builder.addSpawn(EntityClassification.WATER_CREATURE, new MobSpawnInfo.Spawners(EntityType.SQUID, 10, 4, 4)); + builder.addSpawn(EntityClassification.WATER_CREATURE, new MobSpawnInfo.Spawners(EntityType.DOLPHIN, 2, 1, 2)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TropicsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TropicsBiome.java new file mode 100644 index 0000000000..a2c50bed5a --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/TropicsBiome.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class TropicsBiome extends BiomeTemplate +{ + public TropicsBiome() + { + this.setBeachBiome(BOPBiomes.tropic_beach); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.NONE).depth(0.25F).scale(0.4F).temperature(0.95F).downfall(1.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4445678).waterFogColor(270131).fogColor(0xB2EDFF).skyColor(0x66BCFF).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.TROPICS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_JUNGLE); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.WHITE_SAND_DISK_EXTRA); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TROPICS_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TROPIC_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHORT_BAMBOO_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_MELON); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PARROT, 40, 1, 2)); + builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.PUFFERFISH, 15, 1, 3)); + builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.TROPICAL_FISH, 25, 8, 8)); + builder.addSpawn(EntityClassification.WATER_CREATURE, new MobSpawnInfo.Spawners(EntityType.SQUID, 10, 4, 4)); + builder.addSpawn(EntityClassification.WATER_CREATURE, new MobSpawnInfo.Spawners(EntityType.DOLPHIN, 2, 1, 2)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TundraBasinBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TundraBasinBiome.java new file mode 100644 index 0000000000..7e7157c729 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/TundraBasinBiome.java @@ -0,0 +1,80 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class TundraBasinBiome extends BiomeTemplate +{ + public TundraBasinBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.0F).scale(0.0F).temperature(0.2F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.2F)).grassColorOverride(0xC08359).foliageColorOverride(0xC5975C).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.STONE_BASIN); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_GRAVEL); + + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.STRAY, 80, 4, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TundraBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TundraBiome.java new file mode 100644 index 0000000000..68fe8386d9 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/TundraBiome.java @@ -0,0 +1,90 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class TundraBiome extends BiomeTemplate +{ + public TundraBiome() + { + this.addWeight(BOPClimates.TUNDRA, 7); + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.15F).scale(0.15F).temperature(0.2F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.2F)).grassColorOverride(0xC08359).foliageColorOverride(0xC5975C).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_TAIGA); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.GRAVEL_DISK_EXTRA); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TUNDRA_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCATTERED_ROCKS); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TundraBogBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TundraBogBiome.java new file mode 100644 index 0000000000..7c77e2d4a7 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/TundraBogBiome.java @@ -0,0 +1,91 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class TundraBogBiome extends BiomeTemplate +{ + public TundraBogBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(-0.15F).scale(-0.025F).temperature(0.2F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.2F)).grassColorOverride(0xC08359).foliageColorOverride(0xC5975C).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addSwampClayDisk(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TUNDRA_BOG_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_50); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_DECORATED); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 1, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/VolcanicPlainsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/VolcanicPlainsBiome.java new file mode 100644 index 0000000000..e59ec2f181 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/VolcanicPlainsBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; + +public class VolcanicPlainsBiome extends BiomeTemplate +{ + public VolcanicPlainsBiome() + { + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.NONE).depth(0.05F).scale(0.0F).temperature(0.95F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(0xBFBFBF).skyColor(calculateSkyColor(0.95F)).grassColorOverride(0x4A703B).foliageColorOverride(0x547D42).ambientParticle(new ParticleEffectAmbience(ParticleTypes.WHITE_ASH, 0.01476166675F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.VOLCANIC_PLAINS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_LAVA); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.VOLCANIC_PLAINS_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_200); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.VOLCANO_GRASS_SPLATTER); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.VOLCANO_SPRING); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/VolcanoBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/VolcanoBiome.java new file mode 100644 index 0000000000..e8048df87f --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/VolcanoBiome.java @@ -0,0 +1,83 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; + +public class VolcanoBiome extends BiomeTemplate +{ + public VolcanoBiome() + { + this.setRiverBiome(null); + this.setBeachBiome(BOPBiomes.volcanic_plains); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.NONE).depth(4.5F).scale(0.0F).temperature(0.95F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(0x7F7F7F).skyColor(calculateSkyColor(0.95F)).grassColorOverride(0x4A703B).foliageColorOverride(0x547D42).ambientParticle(new ParticleEffectAmbience(ParticleTypes.WHITE_ASH, 0.059046667F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.VOLCANO); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.LAVA_LAKE_COMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_GRAVEL); + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.VOLCANO_SPRING); + + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/WastelandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/WastelandBiome.java new file mode 100644 index 0000000000..35edef46fa --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/WastelandBiome.java @@ -0,0 +1,80 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class WastelandBiome extends BiomeTemplate +{ + public WastelandBiome() + { + this.addWeight(BOPClimates.HOT_DESERT, 1); + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.DESERT).depth(0.0F).scale(-0.11F).temperature(2.0F).downfall(0.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x433721).waterFogColor(0x0C0C03).fogColor(0xDBDDC1).skyColor(0x70ADEF).grassColorOverride(0xAD9364).foliageColorOverride(0xB5A76C).ambientParticle(new ParticleEffectAmbience(ParticleTypes.MYCELIUM, 0.00357F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.WASTELAND); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_GRASS_2); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.HUSK, 80, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/WetlandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/WetlandBiome.java new file mode 100644 index 0000000000..74f1b5f5f4 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/WetlandBiome.java @@ -0,0 +1,105 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class WetlandBiome extends BiomeTemplate +{ + public WetlandBiome() + { + this.addWeight(BOPClimates.WET_TEMPERATE, 10); + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(0.0F).scale(0.0F).temperature(0.6F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x272179).waterFogColor(0x0C031B).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x5A935F).foliageColorOverride(0x4F9657).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addSwampClayDisk(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.MUD_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WETLAND_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WETLAND_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 1, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/WetlandForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/WetlandForestBiome.java new file mode 100644 index 0000000000..06fffd2a5c --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/WetlandForestBiome.java @@ -0,0 +1,103 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class WetlandForestBiome extends BiomeTemplate +{ + public WetlandForestBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(0.15F).scale(0.2F).temperature(0.6F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x272179).waterFogColor(0x0C031B).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x5A935F).foliageColorOverride(0x4F9657).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addSwampClayDisk(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.MUD_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WETLAND_FOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WETLAND_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 1, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/WoodedScrublandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/WoodedScrublandBiome.java new file mode 100644 index 0000000000..bd8f545000 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/WoodedScrublandBiome.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class WoodedScrublandBiome extends BiomeTemplate +{ + public WoodedScrublandBiome() + { + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.SAVANNA).depth(0.1F).scale(0.2F).temperature(1.1F).downfall(0.15F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(1.1F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_SAVANNA); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WOODED_SCRUBLAND_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUBLAND_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DESERT_GRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUB_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/WoodlandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/WoodlandBiome.java new file mode 100644 index 0000000000..9441a7bbdc --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/WoodlandBiome.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class WoodlandBiome extends BiomeTemplate +{ + public WoodlandBiome() + { + this.addWeight(BOPClimates.WARM_TEMPERATE, 7); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.1F).scale(0.1F).temperature(0.8F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xA7C047).foliageColorOverride(0x92AF1A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_PLAINS); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WOODLAND_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GROVE_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GOLDENROD_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/block/BrambleBlock.java b/src/main/java/biomesoplenty/common/block/BrambleBlock.java new file mode 100644 index 0000000000..4ab2530fd2 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/BrambleBlock.java @@ -0,0 +1,85 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.SixWayBlock; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.pathfinding.PathType; +import net.minecraft.state.StateContainer; +import net.minecraft.util.DamageSource; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.World; + +public class BrambleBlock extends SixWayBlock +{ + public BrambleBlock(Block.Properties builder) + { + super(0.25F, builder); + this.registerDefaultState(this.stateDefinition.any().setValue(NORTH, Boolean.valueOf(false)).setValue(EAST, Boolean.valueOf(false)).setValue(SOUTH, Boolean.valueOf(false)).setValue(WEST, Boolean.valueOf(false)).setValue(UP, Boolean.valueOf(false)).setValue(DOWN, Boolean.valueOf(false))); + } + + @Override + public BlockState getStateForPlacement(BlockItemUseContext context) + { + return this.makeConnections(context.getLevel(), context.getClickedPos()); + } + + public BlockState makeConnections(IBlockReader reader, BlockPos pos) + { + BlockState block = reader.getBlockState(pos.below()); + BlockState block1 = reader.getBlockState(pos.above()); + BlockState block2 = reader.getBlockState(pos.north()); + BlockState block3 = reader.getBlockState(pos.east()); + BlockState block4 = reader.getBlockState(pos.south()); + BlockState block5 = reader.getBlockState(pos.west()); + return this.defaultBlockState() + .setValue(DOWN, Boolean.valueOf(block.getBlock() == this || Block.isShapeFullBlock(block.getCollisionShape(reader, pos.below())))) + .setValue(UP, Boolean.valueOf(block1.getBlock() == this || Block.isShapeFullBlock(block1.getCollisionShape(reader, pos.above())))) + .setValue(NORTH, Boolean.valueOf(block2.getBlock() == this || Block.isShapeFullBlock(block2.getCollisionShape(reader, pos.north())))) + .setValue(EAST, Boolean.valueOf(block3.getBlock() == this || Block.isShapeFullBlock(block3.getCollisionShape(reader, pos.east())))) + .setValue(SOUTH, Boolean.valueOf(block4.getBlock() == this || Block.isShapeFullBlock(block4.getCollisionShape(reader, pos.south())))) + .setValue(WEST, Boolean.valueOf(block5.getBlock() == this || Block.isShapeFullBlock(block5.getCollisionShape(reader, pos.west())))); + } + + @Override + public BlockState updateShape(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, BlockPos currentPos, BlockPos facingPos) + { + Block block = facingState.getBlock(); + boolean flag = block == this || Block.isShapeFullBlock(facingState.getCollisionShape(worldIn, facingPos)); + return stateIn.setValue(PROPERTY_BY_DIRECTION.get(facing), Boolean.valueOf(flag)); + } + + @Override + public void entityInside(BlockState state, World worldIn, BlockPos pos, Entity entityIn) + { + if (entityIn instanceof PlayerEntity) + { + PlayerEntity playerEntity = (PlayerEntity) entityIn; + playerEntity.hurt(DamageSource.CACTUS, 1.0F); + } + } + + @Override + protected void createBlockStateDefinition(StateContainer.Builder builder) + { + builder.add(NORTH, EAST, SOUTH, WEST, UP, DOWN); + } + + @Override + public boolean isPathfindable(BlockState state, IBlockReader worldIn, BlockPos pos, PathType type) + { + return false; + } +} diff --git a/src/main/java/biomesoplenty/common/block/DeadBranchBlock.java b/src/main/java/biomesoplenty/common/block/DeadBranchBlock.java new file mode 100644 index 0000000000..9c2ef698b6 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/DeadBranchBlock.java @@ -0,0 +1,99 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.HorizontalBlock; +import net.minecraft.entity.Entity; +import net.minecraft.fluid.Fluids; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.state.DirectionProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.util.Direction; +import net.minecraft.util.Mirror; +import net.minecraft.util.Rotation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; + +import javax.annotation.Nullable; +import java.util.Map; + +public class DeadBranchBlock extends Block +{ + public static final DirectionProperty FACING = HorizontalBlock.FACING; + private static final Map SHAPES = Maps.newEnumMap(ImmutableMap.of(Direction.NORTH, Block.box(4.0D, 0.0D, 4.0D, 12.0D, 16.0D, 16.0D), Direction.SOUTH, Block.box(4.0D, 0.0D, 0.0D, 12.0D, 16.0D, 12.0D), Direction.WEST, Block.box(4.0D, 0.0D, 4.0D, 16.0D, 16.0D, 12.0D), Direction.EAST, Block.box(0.0D, 0.0D, 4.0D, 12.0D, 16.0D, 12.0D))); + + public DeadBranchBlock(Properties properties) + { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + return SHAPES.get(state.getValue(FACING)); + } + + public BlockState rotate(BlockState state, Rotation rot) { + return state.setValue(FACING, rot.rotate(state.getValue(FACING))); + } + + public BlockState mirror(BlockState state, Mirror mirrorIn) { + return state.rotate(mirrorIn.getRotation(state.getValue(FACING))); + } + + protected void createBlockStateDefinition(StateContainer.Builder builder) { + builder.add(FACING); + } + + /** + * Update the provided state given the provided neighbor facing and neighbor state, returning a new state. + * For example, fences make their connections to the passed in state if possible, and wet concrete powder immediately + * returns its solidified counterpart. + * Note that this method should ideally consider only the specific face passed in. + */ + public BlockState updateShape(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, BlockPos currentPos, BlockPos facingPos) + { + return facing.getOpposite() == stateIn.getValue(FACING) && !stateIn.canSurvive(worldIn, currentPos) ? Blocks.AIR.defaultBlockState() : stateIn; + } + + public boolean canSurvive(BlockState state, IWorldReader worldIn, BlockPos pos) { + Direction direction = state.getValue(FACING); + BlockPos blockpos = pos.relative(direction.getOpposite()); + BlockState blockstate = worldIn.getBlockState(blockpos); + return blockstate.getBlock() == BOPBlocks.dead_log || blockstate.getBlock() == BOPBlocks.dead_wood; + } + + @Nullable + public BlockState getStateForPlacement(BlockItemUseContext context) { + BlockState blockstate = super.getStateForPlacement(context); + IWorldReader iworldreader = context.getLevel(); + BlockPos blockpos = context.getClickedPos(); + Direction[] adirection = context.getNearestLookingDirections(); + + for(Direction direction : adirection) { + if (direction.getAxis().isHorizontal()) { + blockstate = blockstate.setValue(FACING, direction.getOpposite()); + if (blockstate.canSurvive(iworldreader, blockpos)) { + return blockstate; + } + } + } + + return null; + } +} diff --git a/src/main/java/biomesoplenty/common/block/DoublePlantBlockBOP.java b/src/main/java/biomesoplenty/common/block/DoublePlantBlockBOP.java new file mode 100644 index 0000000000..b8fa30a381 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/DoublePlantBlockBOP.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.DoublePlantBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraftforge.common.PlantType; + +public class DoublePlantBlockBOP extends DoublePlantBlock +{ + public DoublePlantBlockBOP(Block.Properties properties) + { + super(properties); + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + return PlantType.PLAINS; + } +} diff --git a/src/main/java/biomesoplenty/common/block/DoubleWaterPlantBlock.java b/src/main/java/biomesoplenty/common/block/DoubleWaterPlantBlock.java new file mode 100644 index 0000000000..ba4ab32803 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/DoubleWaterPlantBlock.java @@ -0,0 +1,109 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.block.*; +import net.minecraft.block.material.Material; +import net.minecraft.entity.LivingEntity; +import net.minecraft.fluid.FluidState; +import net.minecraft.fluid.Fluids; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.ItemStack; +import net.minecraft.state.BooleanProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.state.properties.DoubleBlockHalf; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; +import net.minecraftforge.common.PlantType; + +import javax.annotation.Nullable; + +public class DoubleWaterPlantBlock extends DoublePlantBlock implements IWaterLoggable +{ + public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; + + public DoubleWaterPlantBlock(Properties properties) + { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(HALF, DoubleBlockHalf.LOWER).setValue(WATERLOGGED, Boolean.valueOf(true))); + } + + @Nullable + public BlockState getStateForPlacement(BlockItemUseContext context) { + FluidState ifluidstate = context.getLevel().getFluidState(context.getClickedPos()); + BlockPos blockpos = context.getClickedPos(); + return blockpos.getY() < 255 && context.getLevel().getBlockState(blockpos.above()).canBeReplaced(context) ? this.defaultBlockState().setValue(WATERLOGGED, Boolean.valueOf(ifluidstate.is(FluidTags.WATER) && ifluidstate.getAmount() == 8)) : null; + } + + @Override + public BlockState updateShape(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, BlockPos currentPos, BlockPos facingPos) { + if (stateIn.getValue(WATERLOGGED)) { + worldIn.getLiquidTicks().scheduleTick(currentPos, Fluids.WATER, Fluids.WATER.getTickDelay(worldIn)); + } + + return facing == Direction.DOWN && !this.canSurvive(stateIn, worldIn, currentPos) ? Blocks.AIR.defaultBlockState() : super.updateShape(stateIn, facing, facingState, worldIn, currentPos, facingPos); + } + + @Override + public void setPlacedBy(World worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { + worldIn.setBlock(pos.above(), this.defaultBlockState().setValue(HALF, DoubleBlockHalf.UPPER).setValue(WATERLOGGED, false), 3); + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldIn, BlockPos pos) + { + if (state.getValue(HALF) != DoubleBlockHalf.UPPER) + { + BlockPos posBelow = pos.below(); + BlockState existingState = worldIn.getBlockState(pos); + Block existingBlock = existingState.getBlock(); + return (existingBlock == this || existingState.getMaterial() == Material.WATER) && this.isExposed(worldIn, pos.above()) && worldIn.getBlockState(posBelow).isFaceSturdy(worldIn, posBelow, Direction.UP); + } + else + { + BlockState blockstate = worldIn.getBlockState(pos.below()); + if (state.getBlock() != this) return worldIn.isEmptyBlock(pos); // This function is called during world gen and placement, before this block is set, so if we are not 'here' then assume it's the pre-check. + return this.isExposed(worldIn, pos) && blockstate.getBlock() == this && blockstate.getValue(HALF) == DoubleBlockHalf.LOWER && blockstate.getValue(WATERLOGGED); + } + } + + @Override + public void placeAt(IWorld worldIn, BlockPos pos, int flags) { + worldIn.setBlock(pos, this.defaultBlockState().setValue(HALF, DoubleBlockHalf.LOWER).setValue(WATERLOGGED, true), flags); + worldIn.setBlock(pos.above(), this.defaultBlockState().setValue(HALF, DoubleBlockHalf.UPPER).setValue(WATERLOGGED, false), flags); + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + return PlantType.PLAINS; + } + + @Override + protected void createBlockStateDefinition(StateContainer.Builder builder) { + builder.add(WATERLOGGED, HALF); + } + + @Override + public FluidState getFluidState(BlockState state) { + return state.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(state); + } + + protected boolean isExposed(IWorldReader world, BlockPos pos) + { + BlockState state = world.getBlockState(pos); + return state.getBlock() == this ? !state.getValue(WATERLOGGED) : world.isEmptyBlock(pos); + } +} diff --git a/src/main/java/biomesoplenty/common/block/DoubleWatersidePlantBlock.java b/src/main/java/biomesoplenty/common/block/DoubleWatersidePlantBlock.java new file mode 100644 index 0000000000..b6d434ee45 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/DoubleWatersidePlantBlock.java @@ -0,0 +1,72 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.fluid.FluidState; +import net.minecraft.state.properties.DoubleBlockHalf; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; +import net.minecraftforge.common.PlantType; + +import java.util.Iterator; + +public class DoubleWatersidePlantBlock extends DoublePlantBlockBOP +{ + public DoubleWatersidePlantBlock(Block.Properties properties) + { + super(properties); + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + return PlantType.BEACH; + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldReader, BlockPos pos) + { + if (state.getBlock() != this) return super.canSurvive(state, worldReader, pos); + if (state.getValue(HALF) != DoubleBlockHalf.UPPER) + { + BlockState soil = worldReader.getBlockState(pos.below()); + if (soil.canSustainPlant(worldReader, pos.below(), Direction.UP, this)) + { + BlockPos blockpos = pos.below(); + Iterator var7 = Direction.Plane.HORIZONTAL.iterator(); + + BlockState BlockState; + FluidState ifluidstate; + do { + if (!var7.hasNext()) { + return false; + } + + Direction dir = (Direction)var7.next(); + BlockState = worldReader.getBlockState(blockpos.relative(dir)); + ifluidstate = worldReader.getFluidState(blockpos.relative(dir)); + } while(!ifluidstate.is(FluidTags.WATER) && BlockState.getBlock() != Blocks.FROSTED_ICE); + + return true; + } + } + else + { + BlockState below = worldReader.getBlockState(pos.below()); + return below.getBlock() == this && below.getValue(HALF) == DoubleBlockHalf.LOWER; + } + + return false; + } +} diff --git a/src/main/java/biomesoplenty/common/block/DriedSaltBlock.java b/src/main/java/biomesoplenty/common/block/DriedSaltBlock.java new file mode 100644 index 0000000000..fda936cd21 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/DriedSaltBlock.java @@ -0,0 +1,34 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraftforge.common.PlantType; + +public class DriedSaltBlock extends Block +{ + public DriedSaltBlock(Block.Properties properties) + { + super(properties); + } + + @Override + public boolean canSustainPlant(BlockState state, IBlockReader world, BlockPos pos, Direction facing, net.minecraftforge.common.IPlantable plantable) { + PlantType type = plantable.getPlantType(world, pos.relative(facing)); + + if (type == PlantType.DESERT) return true; + else if (type == PlantType.NETHER) return true; + else if (type == PlantType.CAVE) return true; + else if (type == PlantType.PLAINS) return true; + return false; + } +} diff --git a/src/main/java/biomesoplenty/common/block/FleshBlock.java b/src/main/java/biomesoplenty/common/block/FleshBlock.java new file mode 100644 index 0000000000..8b8d6ac46b --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/FleshBlock.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class FleshBlock extends Block +{ + public FleshBlock(Block.Properties properties) + { + super(properties); + } + + @Override + public void stepOn(World worldIn, BlockPos pos, Entity entityIn) + { + entityIn.setDeltaMovement(entityIn.getDeltaMovement().multiply(0.95D, 1.0D, 0.95D)); + } +} diff --git a/src/main/java/biomesoplenty/common/block/FlowerBlockBOP.java b/src/main/java/biomesoplenty/common/block/FlowerBlockBOP.java new file mode 100644 index 0000000000..8884f8e6bc --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/FlowerBlockBOP.java @@ -0,0 +1,122 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.FlowerBlock; +import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.potion.Effect; +import net.minecraft.potion.Effects; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import java.util.Random; + +public class FlowerBlockBOP extends FlowerBlock +{ + protected static final VoxelShape NORMAL = Block.box(5.0D, 0.0D, 5.0D, 11.0D, 10.0D, 11.0D); + protected static final VoxelShape LARGE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 14.0D, 15.0D); + private final Effect stewEffect; + private final int stewEffectDuration; + + public FlowerBlockBOP(Effect p_i49984_1_, int effectDuration, Block.Properties properties) + { + super(p_i49984_1_, 0, properties); + this.stewEffect = p_i49984_1_; + if (p_i49984_1_.isInstantenous()) { + this.stewEffectDuration = effectDuration; + } else { + this.stewEffectDuration = effectDuration * 20; + } + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext selectionContext) + { + Block block = state.getBlock(); + + if (block == BOPBlocks.lavender || block == BOPBlocks.pink_hibiscus) + { + return LARGE; + } + + return NORMAL; + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldIn, BlockPos pos) + { + Block ground = worldIn.getBlockState(pos.below()).getBlock(); + + if (this == BOPBlocks.wildflower) + { + return ground == Blocks.SAND || ground == Blocks.RED_SAND || ground == BOPBlocks.white_sand || ground == BOPBlocks.orange_sand || ground == BOPBlocks.black_sand || super.canSurvive(state, worldIn, pos); + } + if (this == BOPBlocks.burning_blossom) + { + return ground == Blocks.NETHERRACK || ground == Blocks.SOUL_SAND || ground == Blocks.SOUL_SOIL || ground == Blocks.CRIMSON_NYLIUM || ground == Blocks.WARPED_NYLIUM || super.canSurvive(state, worldIn, pos); + } + + return super.canSurvive(state, worldIn, pos); + } + + @Override + public void entityInside(BlockState stateIn, World worldIn, BlockPos pos, Entity entityIn) + { + Block block = stateIn.getBlock(); + + if (entityIn instanceof LivingEntity) + { + if (block == BOPBlocks.burning_blossom) + { + (entityIn).setSecondsOnFire(1); + } + } + } + + @Override + @OnlyIn(Dist.CLIENT) + public void animateTick(BlockState stateIn, World worldIn, BlockPos pos, Random rand) + { + super.animateTick(stateIn, worldIn, pos, rand); + Block block = stateIn.getBlock(); + + if (block == BOPBlocks.burning_blossom) + { + if (rand.nextInt(8) == 0) + { + worldIn.addParticle(ParticleTypes.FLAME, (double)(pos.getX() + 0.5D + ((rand.nextDouble() - rand.nextDouble()) / 4.0D)), (double)(pos.getY() + 0.75D), (double)(pos.getZ() + 0.5D + ((rand.nextDouble() - rand.nextDouble()) / 4.0D)), 0.0D, 0.0D, 0.0D); + } + if (rand.nextInt(4) == 0) + { + worldIn.addParticle(ParticleTypes.SMOKE, (double)(pos.getX() + 0.5D + ((rand.nextDouble() - rand.nextDouble()) / 4.0D)), (double)(pos.getY() + 0.75D), (double)(pos.getZ() + 0.5D + ((rand.nextDouble() - rand.nextDouble()) / 4.0D)), 0.0D, 0.0D, 0.0D); + } + } + } + + @Override + public Effect getSuspiciousStewEffect() { + return this.stewEffect; + } + + @Override + public int getEffectDuration() { + return this.stewEffectDuration; + } +} diff --git a/src/main/java/biomesoplenty/common/block/FoliageBlockBOP.java b/src/main/java/biomesoplenty/common/block/FoliageBlockBOP.java new file mode 100644 index 0000000000..bb83959a79 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/FoliageBlockBOP.java @@ -0,0 +1,160 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.block.*; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.stats.Stats; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.ConfiguredFeature; +import net.minecraft.world.gen.feature.IFeatureConfig; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.server.ServerWorld; +import net.minecraftforge.common.IPlantable; +import net.minecraftforge.common.PlantType; + +import javax.annotation.Nullable; +import java.util.Random; + +public class FoliageBlockBOP extends BushBlock implements IPlantable, IGrowable +{ + protected static final VoxelShape NORMAL = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 13.0D, 14.0D); + protected static final VoxelShape SHORT = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 7.0D, 15.0D); + + public FoliageBlockBOP(Block.Properties properties) + { + super(properties); + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext selectionContext) + { + Block block = state.getBlock(); + + if (block == BOPBlocks.desert_grass || block == BOPBlocks.clover) + { + return SHORT; + } + + return NORMAL; + } + + @Override + public void playerDestroy(World worldIn, PlayerEntity player, BlockPos pos, BlockState state, @Nullable TileEntity te, ItemStack stack) + { + if (!worldIn.isClientSide && stack.getItem() == Items.SHEARS) + { + player.awardStat(Stats.BLOCK_MINED.get(this)); + player.causeFoodExhaustion(0.005F); + this.popResource(worldIn, pos, new ItemStack(this)); + } + else + { + super.playerDestroy(worldIn, player, pos, state, te, stack); + } + } + + public java.util.List onSheared(ItemStack item, net.minecraft.world.IWorld world, BlockPos pos, int fortune) + { + world.setBlock(pos, Blocks.AIR.defaultBlockState(), 11); + return java.util.Arrays.asList(new ItemStack(this)); + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldIn, BlockPos pos) + { + BlockState groundState = worldIn.getBlockState(pos.below()); + Block ground = groundState.getBlock(); + + if (this == BOPBlocks.sprout) + { + return groundState.isFaceSturdy(worldIn, pos.below(), Direction.UP) || super.canSurvive(state, worldIn, pos); + } + if (this == BOPBlocks.dune_grass) + { + return ground == Blocks.SAND || ground == Blocks.RED_SAND || ground == BOPBlocks.white_sand || ground == BOPBlocks.orange_sand || ground == BOPBlocks.black_sand; + } + if (this == BOPBlocks.desert_grass || this == BOPBlocks.dead_grass) + { + return ground == BOPBlocks.dried_salt || ground == Blocks.GRAVEL || ground == Blocks.SAND || ground == Blocks.RED_SAND || ground == BOPBlocks.white_sand || ground == BOPBlocks.orange_sand || ground == BOPBlocks.black_sand || ground == Blocks.NETHERRACK || super.canSurvive(state, worldIn, pos); + } + + return super.canSurvive(state, worldIn, pos); + } + + @Override + public Block.OffsetType getOffsetType() + { + return Block.OffsetType.XYZ; + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + return PlantType.PLAINS; + } + + @Override + public boolean isValidBonemealTarget(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) + { + Block block = state.getBlock(); + + if (block == BOPBlocks.clover) + { + return true; + } + + return false; + } + + @Override + public boolean isBonemealSuccess(World worldIn, Random rand, BlockPos pos, BlockState state) + { + Block block = state.getBlock(); + + if (block == BOPBlocks.clover) { return (double)rand.nextFloat() < 0.4D; } + + return false; + } + + @Override + public void performBonemeal(ServerWorld world, Random rand, BlockPos pos, BlockState state) + { + Block block = state.getBlock(); + + if (block == BOPBlocks.clover) { this.growHugeClover(world, rand, pos, state); } + } + + public boolean growHugeClover(ServerWorld world, Random rand, BlockPos pos, BlockState state) + { + world.removeBlock(pos, false); + ConfiguredFeature configuredfeature = BOPFeatures.HUGE_CLOVER.configured(IFeatureConfig.NONE); + + if (configuredfeature.place(world, world.getChunkSource().getGenerator(), rand, pos)) + { + return true; + } + else + { + world.setBlock(pos, state, 3); + return false; + } + } +} diff --git a/src/main/java/biomesoplenty/common/block/HugeCloverPetalBlock.java b/src/main/java/biomesoplenty/common/block/HugeCloverPetalBlock.java new file mode 100644 index 0000000000..60975a594f --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/HugeCloverPetalBlock.java @@ -0,0 +1,78 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.HorizontalBlock; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.state.DirectionProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraftforge.common.IPlantable; +import net.minecraftforge.common.PlantType; + +public class HugeCloverPetalBlock extends HorizontalBlock implements IPlantable +{ + public static final DirectionProperty FACING = HorizontalBlock.FACING; + public static final VoxelShape SHAPE = Block.box(0.0D, 13.0D, 0.0D, 16.0D, 15.0D, 16.0D); + + public HugeCloverPetalBlock(Properties properties) + { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + return SHAPE; + } + + protected void createBlockStateDefinition(StateContainer.Builder builder) { + builder.add(FACING); + } + + public BlockState updateShape(BlockState p_196271_1_, Direction p_196271_2_, BlockState p_196271_3_, IWorld p_196271_4_, BlockPos p_196271_5_, BlockPos p_196271_6_) { + return !p_196271_1_.canSurvive(p_196271_4_, p_196271_5_) ? Blocks.AIR.defaultBlockState() : super.updateShape(p_196271_1_, p_196271_2_, p_196271_3_, p_196271_4_, p_196271_5_, p_196271_6_); + } + + protected boolean mayPlaceOn(BlockState p_200014_1_, IBlockReader p_200014_2_, BlockPos p_200014_3_) { + return p_200014_1_.is(Blocks.GRASS_BLOCK) || p_200014_1_.is(Blocks.DIRT) || p_200014_1_.is(Blocks.COARSE_DIRT) || p_200014_1_.is(Blocks.PODZOL) || p_200014_1_.is(Blocks.FARMLAND); + } + + @Override + public boolean canSurvive(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) { + BlockPos blockpos = p_196260_3_.below(); + if (p_196260_1_.getBlock() == this) //Forge: This function is called during world gen and placement, before this block is set, so if we are not 'here' then assume it's the pre-check. + return p_196260_2_.getBlockState(blockpos).canSustainPlant(p_196260_2_, blockpos, Direction.UP, this); + return this.mayPlaceOn(p_196260_2_.getBlockState(blockpos), p_196260_2_, blockpos); + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + return PlantType.PLAINS; + } + + @Override + public BlockState getPlant(IBlockReader world, BlockPos pos) { + BlockState state = world.getBlockState(pos); + if (state.getBlock() != this) return defaultBlockState(); + return state; + } + + public BlockState getStateForPlacement(BlockItemUseContext p_196258_1_) { + return this.defaultBlockState().setValue(FACING, p_196258_1_.getHorizontalDirection()); + } +} diff --git a/src/main/java/biomesoplenty/common/block/MudBlock.java b/src/main/java/biomesoplenty/common/block/MudBlock.java new file mode 100644 index 0000000000..43f2f0ac38 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/MudBlock.java @@ -0,0 +1,54 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.fluid.FluidState; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; +import net.minecraftforge.common.PlantType; + +public class MudBlock extends Block +{ + public MudBlock(Block.Properties properties) + { + super(properties); + } + + @Override + public void stepOn(World worldIn, BlockPos pos, Entity entityIn) + { + entityIn.setDeltaMovement(entityIn.getDeltaMovement().multiply(0.5D, 1.0D, 0.5D)); + } + + @Override + public boolean canSustainPlant(BlockState state, IBlockReader world, BlockPos pos, Direction facing, net.minecraftforge.common.IPlantable plantable) + { + PlantType type = plantable.getPlantType(world, pos.relative(facing)); + + if (type == PlantType.BEACH) + { + for(Direction direction : Direction.Plane.HORIZONTAL) { + BlockState blockstate1 = world.getBlockState(pos.relative(direction)); + FluidState fluidstate = world.getFluidState(pos.relative(direction)); + if (fluidstate.is(FluidTags.WATER) || blockstate1.is(Blocks.FROSTED_ICE)) { + return true; + } + } + } + + return false; + } +} diff --git a/src/main/java/biomesoplenty/common/block/MushroomBlockBOP.java b/src/main/java/biomesoplenty/common/block/MushroomBlockBOP.java new file mode 100644 index 0000000000..8a46c1f512 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/MushroomBlockBOP.java @@ -0,0 +1,89 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.block.*; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.server.ServerWorld; + +import java.util.Random; + +public class MushroomBlockBOP extends MushroomBlock implements IGrowable +{ + public MushroomBlockBOP(Block.Properties properties) + { + super(properties); + } + + @Override + public void tick(BlockState state, ServerWorld world, BlockPos pos, Random random) + { + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldIn, BlockPos pos) + { + Block ground = worldIn.getBlockState(pos.below()).getBlock(); + BlockState BlockState = worldIn.getBlockState(pos.below()); + + return BlockState.canSustainPlant(worldIn, pos.below(), net.minecraft.util.Direction.UP, this); + } + + @Override + public boolean growMushroom(ServerWorld world, BlockPos p_226940_2_, BlockState p_226940_3_, Random p_226940_4_) + { + world.removeBlock(p_226940_2_, false); + ConfiguredFeature configuredfeature; + if (this == BOPBlocks.glowshroom) + { + configuredfeature = BOPFeatures.HUGE_GLOWSHROOM.configured(IFeatureConfig.NONE); + } + else + { + if (this != BOPBlocks.toadstool) + { + world.setBlock(p_226940_2_, p_226940_3_, 3); + return false; + } + + configuredfeature = BOPFeatures.HUGE_TOADSTOOL.configured(IFeatureConfig.NONE); + } + + if (configuredfeature.place(world, world.getChunkSource().getGenerator(), p_226940_4_, p_226940_2_)) + { + return true; + } + else + { + world.setBlock(p_226940_2_, p_226940_3_, 3); + return false; + } + } + + public boolean isValidBonemealTarget(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) { + return true; + } + + public boolean isBonemealSuccess(World worldIn, Random rand, BlockPos pos, BlockState state) { + return (double)rand.nextFloat() < 0.4D; + } + + public void performBonemeal(ServerWorld p_225535_1_, Random p_225535_2_, BlockPos p_225535_3_, BlockState p_225535_4_) { + this.growMushroom(p_225535_1_, p_225535_3_, p_225535_4_, p_225535_2_); + } + + public boolean hasPostProcess(BlockState state, IBlockReader worldIn, BlockPos pos) { + return true; + } +} diff --git a/src/main/java/biomesoplenty/common/block/NetherCrystalBlock.java b/src/main/java/biomesoplenty/common/block/NetherCrystalBlock.java new file mode 100644 index 0000000000..63bb913d24 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/NetherCrystalBlock.java @@ -0,0 +1,101 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import net.minecraft.block.*; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.pathfinding.PathType; +import net.minecraft.state.DirectionProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.state.properties.AttachFace; +import net.minecraft.util.Direction; +import net.minecraft.util.Mirror; +import net.minecraft.util.Rotation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; + +import javax.annotation.Nullable; +import java.util.Map; + +public class NetherCrystalBlock extends HorizontalFaceBlock +{ + protected static final VoxelShape FLOOR_AABB = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 13.0D, 14.0D); + protected static final VoxelShape CEILING_AABB = Block.box(2.0D, 3.0D, 2.0D, 14.0D, 16.0D, 14.0D); + protected static final VoxelShape NORTH_AABB = Block.box(2.0D, 2.0D, 3.0D, 14.0D, 14.0D, 16.0D); + protected static final VoxelShape SOUTH_AABB = Block.box(2.0D, 2.0D, 0.0D, 14.0D, 14.0D, 13.0D); + protected static final VoxelShape EAST_AABB = Block.box(0.0D, 2.0D, 2.0D, 13.0D, 14.0D, 14.0D); + protected static final VoxelShape WEST_AABB = Block.box(3.0D, 2.0D, 2.0D, 16.0D, 14.0D, 14.0D); + + public NetherCrystalBlock(Block.Properties properties) + { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(FACE, AttachFace.FLOOR).setValue(FACING, Direction.NORTH)); + } + + protected static boolean mayPlaceOn(BlockState state, IBlockReader worldIn, BlockPos pos) { + Block block = state.getBlock(); + return block == Blocks.NETHERRACK || block == Blocks.NETHER_QUARTZ_ORE || block == Blocks.BLACKSTONE || block == BOPBlocks.nether_crystal_block; + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldIn, BlockPos pos) { + return canAttach(worldIn, pos, getConnectedDirection(state).getOpposite()); + } + + public static boolean canAttach(IWorldReader p_220185_0_, BlockPos p_220185_1_, Direction p_220185_2_) { + BlockPos blockpos = p_220185_1_.relative(p_220185_2_); + return mayPlaceOn(p_220185_0_.getBlockState(blockpos), p_220185_0_, blockpos); + } + + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + Direction direction = state.getValue(FACING); + switch(state.getValue(FACE)) + { + case FLOOR: + return FLOOR_AABB; + case WALL: + switch(direction) + { + case EAST: + return EAST_AABB; + case WEST: + return WEST_AABB; + case SOUTH: + return SOUTH_AABB; + case NORTH: + default: + return NORTH_AABB; + } + case CEILING: + default: + return CEILING_AABB; + } + } + + @Override + public boolean propagatesSkylightDown(BlockState state, IBlockReader reader, BlockPos pos) { + return state.getFluidState().isEmpty(); + } + + @Override + public boolean isPathfindable(BlockState state, IBlockReader worldIn, BlockPos pos, PathType type) { + return type == PathType.AIR && !this.hasCollision ? true : super.isPathfindable(state, worldIn, pos, type); + } + + @Override + protected void createBlockStateDefinition(StateContainer.Builder builderIn) { + builderIn.add(FACING, FACE); + } +} diff --git a/src/main/java/biomesoplenty/common/block/PlantBlockBOP.java b/src/main/java/biomesoplenty/common/block/PlantBlockBOP.java new file mode 100644 index 0000000000..1dde1c46d7 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/PlantBlockBOP.java @@ -0,0 +1,58 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; +import net.minecraftforge.common.IPlantable; +import net.minecraftforge.common.PlantType; + +public class PlantBlockBOP extends BushBlock implements IPlantable +{ + protected static final VoxelShape NORMAL = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 13.0D, 14.0D); + + public PlantBlockBOP(Block.Properties properties) + { + super(properties); + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext selectionContext) + { + Block block = state.getBlock(); + + return NORMAL; + } + + @Override + public Block.OffsetType getOffsetType() + { + return Block.OffsetType.XZ; + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldIn, BlockPos pos) + { + return super.canSurvive(state, worldIn, pos); + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + return PlantType.PLAINS; + } +} diff --git a/src/main/java/biomesoplenty/common/block/SandBlockBOP.java b/src/main/java/biomesoplenty/common/block/SandBlockBOP.java new file mode 100644 index 0000000000..66ef97b0ff --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/SandBlockBOP.java @@ -0,0 +1,42 @@ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.SandBlock; +import net.minecraft.block.material.Material; +import net.minecraft.fluid.FluidState; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraftforge.common.PlantType; + +public class SandBlockBOP extends SandBlock +{ + public SandBlockBOP(int p_i48338_1_, Block.Properties properties) + { + super(p_i48338_1_, properties); + } + + @Override + public boolean canSustainPlant(BlockState state, IBlockReader world, BlockPos pos, Direction facing, net.minecraftforge.common.IPlantable plantable) + { + PlantType type = plantable.getPlantType(world, pos.relative(facing)); + + if (type == PlantType.DESERT) return true; + else if (type == PlantType.CAVE) return true; + else if (type == PlantType.BEACH) + { + for(Direction direction : Direction.Plane.HORIZONTAL) { + BlockState blockstate1 = world.getBlockState(pos.relative(direction)); + FluidState fluidstate = world.getFluidState(pos.relative(direction)); + if (fluidstate.is(FluidTags.WATER) || blockstate1.is(Blocks.FROSTED_ICE)) { + return true; + } + } + } + + return super.canSustainPlant(state, world, pos, facing, plantable); + } +} diff --git a/src/main/java/biomesoplenty/common/block/SaplingBlockBOP.java b/src/main/java/biomesoplenty/common/block/SaplingBlockBOP.java new file mode 100644 index 0000000000..c7c6b011d2 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/SaplingBlockBOP.java @@ -0,0 +1,115 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import net.minecraft.block.*; +import net.minecraft.block.trees.Tree; +import net.minecraft.state.IntegerProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; +import net.minecraft.world.server.ServerWorld; + +import java.util.Random; + +public class SaplingBlockBOP extends SaplingBlock implements IGrowable +{ + public static final IntegerProperty STAGE = BlockStateProperties.STAGE; + public static final VoxelShape SHAPE = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 12.0D, 14.0D); + private final Tree tree; + + public SaplingBlockBOP(Tree tree, Block.Properties properties) + { + super(tree, properties); + this.tree = tree; + this.registerDefaultState(this.stateDefinition.any().setValue(STAGE, Integer.valueOf(0))); + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext selectionContext) + { + return SHAPE; + } + + @Override + public void tick(BlockState state, ServerWorld world, BlockPos pos, Random random) + { + super.tick(state, world, pos, random); + if (!world.isAreaLoaded(pos, 1)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light + if (world.getMaxLocalRawBrightness(pos.above()) >= 9 && random.nextInt(7) == 0) { + this.performBonemeal(world, random, pos, state); + } + + } + + @Override + public void performBonemeal(ServerWorld world, Random rand, BlockPos pos, BlockState state) + { + if (state.getValue(STAGE) == 0) + { + world.setBlock(pos, state.cycle(STAGE), 4); + } + else + { + if (!net.minecraftforge.event.ForgeEventFactory.saplingGrowTree(world, rand, pos)) return; + this.tree.growTree(world, world.getChunkSource().getGenerator(), pos, state, rand); + } + + } + + /** + * Whether this IGrowable can grow + */ + @Override + public boolean isValidBonemealTarget(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) + { + return true; + } + + @Override + public boolean isBonemealSuccess(World worldIn, Random rand, BlockPos pos, BlockState state) + { + return (double)worldIn.random.nextFloat() < 0.45D; + } + + @Override + public void advanceTree(ServerWorld world, BlockPos pos, BlockState state, Random rand) + { + this.performBonemeal(world, rand, pos, state); + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldIn, BlockPos pos) + { + Block ground = worldIn.getBlockState(pos.below()).getBlock(); + + if (this == BOPBlocks.palm_sapling) + { + return ground == BOPBlocks.white_sand || ground == BOPBlocks.orange_sand || ground == BOPBlocks.black_sand || ground == Blocks.RED_SAND || ground == Blocks.SAND || super.canSurvive(state, worldIn, pos); + } + if (this == BOPBlocks.hellbark_sapling) + { + return ground == Blocks.NETHERRACK || super.canSurvive(state, worldIn, pos); + } + + return super.canSurvive(state, worldIn, pos); + } + + @Override + public void createBlockStateDefinition(StateContainer.Builder builder) + { + builder.add(STAGE); + } +} diff --git a/src/main/java/biomesoplenty/common/block/SpanishMossBlock.java b/src/main/java/biomesoplenty/common/block/SpanishMossBlock.java new file mode 100644 index 0000000000..b0558ac980 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/SpanishMossBlock.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import net.minecraft.block.*; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.pathfinding.PathType; +import net.minecraft.state.StateContainer; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.DamageSource; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; + +public class SpanishMossBlock extends AbstractBodyPlantBlock { + public static final VoxelShape SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); + + public SpanishMossBlock(AbstractBlock.Properties p_i241195_1_) { + super(p_i241195_1_, Direction.DOWN, SHAPE, false); + } + + protected AbstractTopPlantBlock getHeadBlock() { + return (AbstractTopPlantBlock) BOPBlocks.spanish_moss; + } + + @Override + public boolean canSurvive(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) { + BlockPos blockpos = p_196260_3_.relative(this.growthDirection.getOpposite()); + BlockState blockstate = p_196260_2_.getBlockState(blockpos); + Block block = blockstate.getBlock(); + if (!this.canAttachToBlock(block)) { + return false; + } else { + return block == this.getHeadBlock() || block == this.getBodyBlock() || blockstate.getBlock().is(BlockTags.LEAVES) || blockstate.getBlock().is(BlockTags.LOGS); + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/SpanishMossBottomBlock.java b/src/main/java/biomesoplenty/common/block/SpanishMossBottomBlock.java new file mode 100644 index 0000000000..86a471e76d --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/SpanishMossBottomBlock.java @@ -0,0 +1,50 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import net.minecraft.block.*; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IWorldReader; + +import java.util.Random; + +public class SpanishMossBottomBlock extends AbstractTopPlantBlock { + protected static final VoxelShape SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); + + public SpanishMossBottomBlock(AbstractBlock.Properties p_i241194_1_) { + super(p_i241194_1_, Direction.DOWN, SHAPE, false, 0.01D); + } + + protected int getBlocksToGrowWhenBonemealed(Random p_230332_1_) { + return PlantBlockHelper.getBlocksToGrowWhenBonemealed(p_230332_1_); + } + + protected Block getBodyBlock() { + return BOPBlocks.spanish_moss_plant; + } + + protected boolean canGrowInto(BlockState p_230334_1_) { + return PlantBlockHelper.isValidGrowthState(p_230334_1_); + } + + @Override + public boolean canSurvive(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) { + BlockPos blockpos = p_196260_3_.relative(this.growthDirection.getOpposite()); + BlockState blockstate = p_196260_2_.getBlockState(blockpos); + Block block = blockstate.getBlock(); + if (!this.canAttachToBlock(block)) { + return false; + } else { + return block == this.getHeadBlock() || block == this.getBodyBlock() || blockstate.getBlock().is(BlockTags.LEAVES) || blockstate.getBlock().is(BlockTags.LOGS); + } + } +} diff --git a/src/main/java/biomesoplenty/common/block/TallFlowerBlockBOP.java b/src/main/java/biomesoplenty/common/block/TallFlowerBlockBOP.java new file mode 100644 index 0000000000..1f38bd969a --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/TallFlowerBlockBOP.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.TallFlowerBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraftforge.common.PlantType; + +public class TallFlowerBlockBOP extends TallFlowerBlock +{ + public TallFlowerBlockBOP(Properties properties) + { + super(properties); + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + return PlantType.PLAINS; + } +} diff --git a/src/main/java/biomesoplenty/common/block/WatersidePlantBlock.java b/src/main/java/biomesoplenty/common/block/WatersidePlantBlock.java new file mode 100644 index 0000000000..54c94b3710 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/WatersidePlantBlock.java @@ -0,0 +1,64 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.fluid.FluidState; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; +import net.minecraftforge.common.PlantType; + +import java.util.Iterator; + +public class WatersidePlantBlock extends PlantBlockBOP +{ + public WatersidePlantBlock(Block.Properties properties) + { + super(properties); + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + Block block = world.getBlockState(pos).getBlock(); + + return PlantType.BEACH; + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldReader, BlockPos pos) + { + BlockState soil = worldReader.getBlockState(pos.below()); + if (soil.canSustainPlant(worldReader, pos.below(), Direction.UP, this)) + { + BlockPos blockpos = pos.below(); + Iterator var7 = Direction.Plane.HORIZONTAL.iterator(); + + BlockState BlockState; + FluidState ifluidstate; + do { + if (!var7.hasNext()) { + return false; + } + + Direction Direction = (Direction)var7.next(); + BlockState = worldReader.getBlockState(blockpos.relative(Direction)); + ifluidstate = worldReader.getFluidState(blockpos.relative(Direction)); + } while(!ifluidstate.is(FluidTags.WATER) && BlockState.getBlock() != Blocks.FROSTED_ICE); + + return true; + } + else + return false; + } +} diff --git a/src/main/java/biomesoplenty/common/block/trees/BigTreeDefaultConfig.java b/src/main/java/biomesoplenty/common/block/trees/BigTreeDefaultConfig.java new file mode 100644 index 0000000000..86a2dfe6a8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/BigTreeDefaultConfig.java @@ -0,0 +1,107 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block.trees; + +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.trees.BigTree; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; +import net.minecraft.world.biome.DefaultBiomeFeatures; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.server.ServerWorld; + +import javax.annotation.Nullable; +import java.util.Random; + +public abstract class BigTreeDefaultConfig extends BigTree +{ + @Override + @Nullable + protected ConfiguredFeature getConfiguredFeature(Random random, boolean hasFlowers) + { + return null; + } + + @Override + @Nullable + protected ConfiguredFeature getConfiguredMegaFeature(Random random) + { + return null; + } + + protected abstract Feature getFeature(Random random); + protected abstract Feature getBigFeature(Random random); + + @Override + public boolean growTree(ServerWorld world, ChunkGenerator generator, BlockPos pos, BlockState state, Random random) + { + for (int i = 0; i >= -1; --i) + { + for (int j = 0; j >= -1; --j) + { + if (isTwoByTwoSapling(state, world, pos, i, j)) + { + return this.placeMega(world, generator, pos, state, random, i, j); + } + } + } + + Feature feature = (Feature)this.getFeature(random); + + if (feature == null) + { + return false; + } + else + { + world.setBlock(pos, Blocks.AIR.defaultBlockState(), 4); + if (feature.place(world, generator, random, pos, Features.OAK.config())) + { + return true; + } + else + { + world.setBlock(pos, state, 4); + return false; + } + } + } + + @Override + public boolean placeMega(ServerWorld world, ChunkGenerator generator, BlockPos pos, BlockState state, Random random, int x, int z) + { + Feature feature = (Feature)this.getBigFeature(random); + if (feature == null) + { + return false; + } + else + { + BlockState blockstate = Blocks.AIR.defaultBlockState(); + world.setBlock(pos.offset(x, 0, z), blockstate, 4); + world.setBlock(pos.offset(x + 1, 0, z), blockstate, 4); + world.setBlock(pos.offset(x, 0, z + 1), blockstate, 4); + world.setBlock(pos.offset(x + 1, 0, z + 1), blockstate, 4); + if (feature.place(world, generator, random, pos.offset(x, 0, z), Features.OAK.config())) + { + return true; + } + else + { + world.setBlock(pos.offset(x, 0, z), state, 4); + world.setBlock(pos.offset(x + 1, 0, z), state, 4); + world.setBlock(pos.offset(x, 0, z + 1), state, 4); + world.setBlock(pos.offset(x + 1, 0, z + 1), state, 4); + return false; + } + } + } + +} diff --git a/src/main/java/biomesoplenty/common/block/trees/DeadTree.java b/src/main/java/biomesoplenty/common/block/trees/DeadTree.java new file mode 100644 index 0000000000..3237478e04 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/DeadTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class DeadTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return random.nextInt(10) == 0 ? BOPFeatures.DYING_TREE : BOPFeatures.SMALL_DEAD_TREE; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/FirTree.java b/src/main/java/biomesoplenty/common/block/trees/FirTree.java new file mode 100644 index 0000000000..85c4ec184e --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/FirTree.java @@ -0,0 +1,21 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class FirTree extends BigTreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return BOPFeatures.FIR_TREE; + } + + @Override + protected Feature getBigFeature(Random random) + { + return BOPFeatures.FIR_TREE_LARGE; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/FloweringOakTree.java b/src/main/java/biomesoplenty/common/block/trees/FloweringOakTree.java new file mode 100644 index 0000000000..8695ffbdf8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/FloweringOakTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class FloweringOakTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_FLOWERING_OAK_TREE : BOPFeatures.FLOWERING_OAK_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/HellbarkTree.java b/src/main/java/biomesoplenty/common/block/trees/HellbarkTree.java new file mode 100644 index 0000000000..e3287be4f4 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/HellbarkTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class HellbarkTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_HELLBARK_TREE : BOPFeatures.HELLBARK_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/JacarandaTree.java b/src/main/java/biomesoplenty/common/block/trees/JacarandaTree.java new file mode 100644 index 0000000000..35265570c4 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/JacarandaTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class JacarandaTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_JACARANDA_TREE : BOPFeatures.JACARANDA_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/MagicTree.java b/src/main/java/biomesoplenty/common/block/trees/MagicTree.java new file mode 100644 index 0000000000..3ea2dcc716 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/MagicTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class MagicTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_MAGIC_TREE : BOPFeatures.MAGIC_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/MahoganyTree.java b/src/main/java/biomesoplenty/common/block/trees/MahoganyTree.java new file mode 100644 index 0000000000..c71992df02 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/MahoganyTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class MahoganyTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return BOPFeatures.MAHOGANY_TREE; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/MapleTree.java b/src/main/java/biomesoplenty/common/block/trees/MapleTree.java new file mode 100644 index 0000000000..baf493f356 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/MapleTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class MapleTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_MAPLE_TREE : BOPFeatures.MAPLE_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/OrangeAutumnTree.java b/src/main/java/biomesoplenty/common/block/trees/OrangeAutumnTree.java new file mode 100644 index 0000000000..7f462d76f6 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/OrangeAutumnTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class OrangeAutumnTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_ORANGE_AUTUMN_TREE : BOPFeatures.ORANGE_AUTUMN_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/OriginTree.java b/src/main/java/biomesoplenty/common/block/trees/OriginTree.java new file mode 100644 index 0000000000..04f19d3e6e --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/OriginTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class OriginTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_ORIGIN_TREE : BOPFeatures.ORIGIN_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/PalmTree.java b/src/main/java/biomesoplenty/common/block/trees/PalmTree.java new file mode 100644 index 0000000000..16ffe792bf --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/PalmTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class PalmTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return BOPFeatures.PALM_TREE; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/PinkCherryTree.java b/src/main/java/biomesoplenty/common/block/trees/PinkCherryTree.java new file mode 100644 index 0000000000..228290a6af --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/PinkCherryTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class PinkCherryTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_PINK_CHERRY_TREE : BOPFeatures.PINK_CHERRY_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/RainbowBirchTree.java b/src/main/java/biomesoplenty/common/block/trees/RainbowBirchTree.java new file mode 100644 index 0000000000..e7cad3105c --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/RainbowBirchTree.java @@ -0,0 +1,16 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.BaseTreeFeatureConfig; +import net.minecraft.world.gen.feature.Feature; + +import java.util.Random; + +public class RainbowBirchTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_RAINBOW_BIRCH_TREE : BOPFeatures.RAINBOW_BIRCH_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/RedwoodTree.java b/src/main/java/biomesoplenty/common/block/trees/RedwoodTree.java new file mode 100644 index 0000000000..b6e5887302 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/RedwoodTree.java @@ -0,0 +1,21 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class RedwoodTree extends BigTreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return BOPFeatures.REDWOOD_TREE; + } + + @Override + protected Feature getBigFeature(Random random) + { + return BOPFeatures.REDWOOD_TREE_MEDIUM; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/TreeDefaultConfig.java b/src/main/java/biomesoplenty/common/block/trees/TreeDefaultConfig.java new file mode 100644 index 0000000000..5308d2bfec --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/TreeDefaultConfig.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block.trees; + +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.trees.Tree; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; +import net.minecraft.world.biome.DefaultBiomeFeatures; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.server.ServerWorld; + +import javax.annotation.Nullable; +import java.util.Random; + +public abstract class TreeDefaultConfig extends Tree +{ + @Override + @Nullable + protected ConfiguredFeature getConfiguredFeature(Random random, boolean hasFlowers) + { + return null; + } + + protected abstract Feature getFeature(Random random); + + @Override + public boolean growTree(ServerWorld world, ChunkGenerator generator, BlockPos pos, BlockState state, Random random) + { + Feature feature = (Feature)this.getFeature(random); + if (feature == null) + { + return false; + } + else + { + world.setBlock(pos, Blocks.AIR.defaultBlockState(), 4); + if (feature.place(world, generator, random, pos, Features.OAK.config())) + { + return true; + } + else + { + world.setBlock(pos, state, 4); + return false; + } + } + } +} diff --git a/src/main/java/biomesoplenty/common/block/trees/UmbranTree.java b/src/main/java/biomesoplenty/common/block/trees/UmbranTree.java new file mode 100644 index 0000000000..e522d3878e --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/UmbranTree.java @@ -0,0 +1,21 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class UmbranTree extends BigTreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return BOPFeatures.UMBRAN_TREE; + } + + @Override + protected Feature getBigFeature(Random random) + { + return BOPFeatures.TALL_UMBRAN_TREE; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/WhiteCherryTree.java b/src/main/java/biomesoplenty/common/block/trees/WhiteCherryTree.java new file mode 100644 index 0000000000..abdda4d947 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/WhiteCherryTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class WhiteCherryTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_WHITE_CHERRY_TREE : BOPFeatures.WHITE_CHERRY_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/WillowTree.java b/src/main/java/biomesoplenty/common/block/trees/WillowTree.java new file mode 100644 index 0000000000..085780e676 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/WillowTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class WillowTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return BOPFeatures.WILLOW_TREE; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/YellowAutumnTree.java b/src/main/java/biomesoplenty/common/block/trees/YellowAutumnTree.java new file mode 100644 index 0000000000..69583be436 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/YellowAutumnTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class YellowAutumnTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_YELLOW_AUTUMN_TREE : BOPFeatures.YELLOW_AUTUMN_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/entity/item/BoatEntityBOP.java b/src/main/java/biomesoplenty/common/entity/item/BoatEntityBOP.java new file mode 100644 index 0000000000..213c71337d --- /dev/null +++ b/src/main/java/biomesoplenty/common/entity/item/BoatEntityBOP.java @@ -0,0 +1,183 @@ +package biomesoplenty.common.entity.item; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.api.item.BOPItems; +import biomesoplenty.init.ModEntities; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.item.BoatEntity; +import net.minecraft.item.Item; +import net.minecraft.item.Items; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.network.IPacket; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.vector.Vector3d; +import net.minecraft.world.GameRules; +import net.minecraft.world.World; +import net.minecraftforge.common.util.Constants; +import net.minecraftforge.fml.network.FMLPlayMessages; +import net.minecraftforge.fml.network.NetworkHooks; + +import java.util.Arrays; +import java.util.function.Supplier; + +public class BoatEntityBOP extends BoatEntity { + public BoatEntityBOP(EntityType type, World world) { + super(type, world); + } + + public BoatEntityBOP(World world, double x, double y, double z) { + super(ModEntities.boat, world); + setPos(x, y, z); + setDeltaMovement(Vector3d.ZERO); + this.xo = x; + this.yo = y; + this.zo = z; + } + + public BoatEntityBOP(FMLPlayMessages.SpawnEntity spawnEntity, World world) { + this(world, spawnEntity.getPosX(), spawnEntity.getPosY(), spawnEntity.getPosZ()); + } + + @Override + public IPacket getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void addAdditionalSaveData(CompoundNBT nbt) { + nbt.putString("model", getModel().getName()); + } + + @Override + protected void readAdditionalSaveData(CompoundNBT nbt) { + if (nbt.contains("model", Constants.NBT.TAG_STRING)) { + this.entityData.set(DATA_ID_TYPE, BoatModel.byName(nbt.getString("model")).ordinal()); + } + } + + @Override + protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) { + this.lastYd = getDeltaMovement().y; + if (!isPassenger()) { + if (onGround) { + if (this.fallDistance > 3f) { + if (this.status != Status.ON_LAND) { + this.fallDistance = 0f; + return; + } + causeFallDamage(this.fallDistance, 1f); + if (!this.level.isClientSide && !this.removed) { + this.remove(); + if (this.level.getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) { + for (int i = 0; i < 3; ++i) { + spawnAtLocation(getModel().getPlanks()); + } + for (int j = 0; j < 2; ++j) { + spawnAtLocation(Items.STICK); + } + } + } + } + this.fallDistance = 0f; + } else if (!this.level.getFluidState(this.blockPosition().below()).is(FluidTags.WATER) && y < 0d) { + this.fallDistance = (float) ((double) this.fallDistance - y); + } + } + } + + @Override + public Item getDropItem() { + switch (BoatModel.byId(this.entityData.get(DATA_ID_TYPE))) { + case FIR: + return BOPItems.fir_boat; + case REDWOOD: + return BOPItems.redwood_boat; + case CHERRY: + return BOPItems.cherry_boat; + case MAHOGANY: + return BOPItems.mahogany_boat; + case JACARANDA: + return BOPItems.jacaranda_boat; + case PALM: + return BOPItems.palm_boat; + case WILLOW: + return BOPItems.willow_boat; + case DEAD: + return BOPItems.dead_boat; + case MAGIC: + return BOPItems.magic_boat; + case UMBRAN: + return BOPItems.umbran_boat; + case HELLBARK: + return BOPItems.hellbark_boat; + } + return Items.OAK_BOAT; + } + + public BoatEntityBOP withModel(BoatModel type) { + this.entityData.set(DATA_ID_TYPE, type.ordinal()); + return this; + } + + public BoatModel getModel() { + return BoatModel.byId(this.entityData.get(DATA_ID_TYPE)); + } + + @Deprecated + @Override + public void setType(Type vanillaType) { + } + + @Deprecated + @Override + public Type getBoatType() { + return Type.OAK; + } + + public enum BoatModel { + FIR("fir", () -> BOPBlocks.fir_planks), + REDWOOD("redwood", () -> BOPBlocks.redwood_planks), + CHERRY("cherry", () -> BOPBlocks.cherry_planks), + MAHOGANY("mahogany", () -> BOPBlocks.mahogany_planks), + JACARANDA("jacaranda", () -> BOPBlocks.jacaranda_planks), + PALM("palm", () -> BOPBlocks.palm_planks), + WILLOW("willow", () -> BOPBlocks.willow_planks), + DEAD("dead", () -> BOPBlocks.dead_planks), + MAGIC("magic", () -> BOPBlocks.magic_planks), + UMBRAN("umbran", () -> BOPBlocks.umbran_planks), + HELLBARK("hellbark", () -> BOPBlocks.hellbark_planks); + + private final String name; + private final Supplier supplierPlanks; + + BoatModel(String name, Supplier supplierPlanks) { + this.name = name; + this.supplierPlanks = supplierPlanks; + } + + public String getName() { + return this.name; + } + + public Block getPlanks() { + return this.supplierPlanks.get(); + } + + public String toString() { + return this.name; + } + + public static BoatModel byId(int id) { + BoatModel[] type = values(); + return type[id < 0 || id >= type.length ? 0 : id]; + } + + public static BoatModel byName(String aName) { + BoatModel[] type = values(); + return Arrays.stream(type).filter(t -> t.getName().equals(aName)).findFirst().orElse(type[0]); + } + } +} diff --git a/src/main/java/biomesoplenty/common/item/BoatItemBOP.java b/src/main/java/biomesoplenty/common/item/BoatItemBOP.java new file mode 100644 index 0000000000..c4ddd81374 --- /dev/null +++ b/src/main/java/biomesoplenty/common/item/BoatItemBOP.java @@ -0,0 +1,72 @@ +package biomesoplenty.common.item; + +import biomesoplenty.common.entity.item.BoatEntityBOP; +import biomesoplenty.common.entity.item.BoatEntityBOP.BoatModel; +import biomesoplenty.common.util.inventory.ItemGroupBOP; +import net.minecraft.block.DispenserBlock; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.stats.Stats; +import net.minecraft.util.ActionResult; +import net.minecraft.util.EntityPredicates; +import net.minecraft.util.Hand; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.RayTraceContext; +import net.minecraft.util.math.RayTraceResult; +import net.minecraft.util.math.vector.Vector3d; +import net.minecraft.world.World; + +import java.util.List; +import java.util.function.Predicate; + +public class BoatItemBOP extends Item { + private static final Predicate ENTITY_PREDICATE = EntityPredicates.NO_SPECTATORS.and(Entity::isPickable); + private final BoatModel model; + + public BoatItemBOP(BoatModel model) { + super(new Item.Properties().stacksTo(1).tab(ItemGroupBOP.instance)); + this.model = model; + DispenserBlock.registerBehavior(this, new DispenserBoatBehaviorBOP(model)); + } + + @Override + public ActionResult use(World world, PlayerEntity player, Hand hand) { + ItemStack heldItem = player.getItemInHand(hand); + RayTraceResult result = getPlayerPOVHitResult(world, player, RayTraceContext.FluidMode.ANY); + if (result.getType() == RayTraceResult.Type.MISS) { + return ActionResult.pass(heldItem); + } else { + Vector3d vector3d = player.getViewVector(1f); + List entities = world.getEntities(player, player.getBoundingBox().expandTowards(vector3d.scale(5d)).inflate(1d), ENTITY_PREDICATE); + if (!entities.isEmpty()) { + Vector3d vector3d1 = player.getEyePosition(1f); + for (Entity entity : entities) { + AxisAlignedBB bounds = entity.getBoundingBox().inflate((double) entity.getPickRadius()); + if (bounds.contains(vector3d1)) { + return ActionResult.pass(heldItem); + } + } + } + if (result.getType() == RayTraceResult.Type.BLOCK) { + BoatEntityBOP boat = new BoatEntityBOP(world, result.getLocation().x, result.getLocation().y, result.getLocation().z).withModel(this.model); + boat.yRot = player.yRot; + if (!world.noCollision(boat, boat.getBoundingBox().inflate(-0.1d))) { + return ActionResult.fail(heldItem); + } else { + if (!world.isClientSide()) { + world.addFreshEntity(boat); + if (!player.abilities.instabuild) { + heldItem.shrink(1); + } + } + player.awardStat(Stats.ITEM_USED.get(this)); + return ActionResult.sidedSuccess(heldItem, world.isClientSide()); + } + } else { + return ActionResult.pass(heldItem); + } + } + } +} diff --git a/src/main/java/biomesoplenty/common/item/DispenserBoatBehaviorBOP.java b/src/main/java/biomesoplenty/common/item/DispenserBoatBehaviorBOP.java new file mode 100644 index 0000000000..0a1d583c24 --- /dev/null +++ b/src/main/java/biomesoplenty/common/item/DispenserBoatBehaviorBOP.java @@ -0,0 +1,45 @@ +package biomesoplenty.common.item; + +import biomesoplenty.common.entity.item.BoatEntityBOP; +import biomesoplenty.common.entity.item.BoatEntityBOP.BoatModel; +import net.minecraft.block.DispenserBlock; +import net.minecraft.dispenser.DefaultDispenseItemBehavior; +import net.minecraft.dispenser.IBlockSource; +import net.minecraft.item.ItemStack; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class DispenserBoatBehaviorBOP extends DefaultDispenseItemBehavior { + private final DefaultDispenseItemBehavior defaultDispenseItemBehavior = new DefaultDispenseItemBehavior(); + private final BoatModel model; + + public DispenserBoatBehaviorBOP(BoatModel model) { + this.model = model; + } + + @Override + public ItemStack execute(IBlockSource source, ItemStack stack) { + Direction direction = source.getBlockState().getValue(DispenserBlock.FACING); + World world = source.getLevel(); + double d0 = source.x() + (double) ((float) direction.getStepX() * 1.125f); + double d1 = source.y() + (double) ((float) direction.getStepY() * 1.125f); + double d2 = source.z() + (double) ((float) direction.getStepZ() * 1.125f); + BlockPos blockpos = source.getPos().relative(direction); + double d3; + if (world.getFluidState(blockpos).is(FluidTags.WATER)) { + d3 = 1d; + } else { + if (!world.getBlockState(blockpos).isAir() || !world.getFluidState(blockpos.below()).is(FluidTags.WATER)) { + return this.defaultDispenseItemBehavior.dispense(source, stack); + } + d3 = 0d; + } + BoatEntityBOP boat = new BoatEntityBOP(world, d0, d1 + d3, d2).withModel(this.model); + boat.yRot = direction.toYRot(); + world.addFreshEntity(boat); + stack.shrink(1); + return stack; + } +} diff --git a/src/main/java/biomesoplenty/common/item/MusicDiscItemBOP.java b/src/main/java/biomesoplenty/common/item/MusicDiscItemBOP.java new file mode 100644 index 0000000000..fc53994595 --- /dev/null +++ b/src/main/java/biomesoplenty/common/item/MusicDiscItemBOP.java @@ -0,0 +1,34 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.item; + +import biomesoplenty.common.util.inventory.ItemGroupBOP; +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.item.Item; +import net.minecraft.item.MusicDiscItem; +import net.minecraft.item.Rarity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.SoundEvent; +import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.ForgeRegistries; + +public class MusicDiscItemBOP extends MusicDiscItem +{ + //Provide a resource location and the correct registry to retrieve a SoundEvent supplier + public static RegistryObject soundProvider(String soundName) { + return RegistryObject.of( + new ResourceLocation(BiomesOPlenty.MOD_ID, soundName), + ForgeRegistries.SOUND_EVENTS + ); + }; + + public MusicDiscItemBOP(String record) + { + super(0, soundProvider(record), new Item.Properties().tab(ItemGroupBOP.instance).rarity(Rarity.RARE).stacksTo(1)); + } +} diff --git a/src/main/java/biomesoplenty/common/util/biome/BiomeUtil.java b/src/main/java/biomesoplenty/common/util/biome/BiomeUtil.java new file mode 100644 index 0000000000..300af93a18 --- /dev/null +++ b/src/main/java/biomesoplenty/common/util/biome/BiomeUtil.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.util.biome; + +import biomesoplenty.common.biome.BiomeMetadata; +import biomesoplenty.core.BiomesOPlenty; +import biomesoplenty.init.ModBiomes; +import net.minecraft.client.Minecraft; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.registry.DynamicRegistries; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biome; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.ForgeRegistry; + +import javax.annotation.Nullable; + +public class BiomeUtil +{ + public static RegistryKey createKey(Biome biome) + { + return biome == null ? null : RegistryKey.create(Registry.BIOME_REGISTRY, biome.delegate.name()); + } + + public static RegistryKey createKey(int id) + { + return createKey(getBiome(id)); + } + + public static Biome getBiome(RegistryKey key) + { + Biome biome = ForgeRegistries.BIOMES.getValue(key.location()); + if (biome == null) throw new RuntimeException("Attempted to get unregistered biome " + key); + return biome; + } + + public static Biome getBiome(int id) + { + if (id == -1) throw new RuntimeException("Attempted to get biome with id -1"); + return getBiome(((ForgeRegistry)ForgeRegistries.BIOMES).getKey(id)); + } + + public static int getBiomeId(Biome biome) + { + if (biome == null) throw new RuntimeException("Attempted to get id of null biome"); + int id = ((ForgeRegistry)ForgeRegistries.BIOMES).getID(biome); + if (id == -1) throw new RuntimeException("Biome id is -1 for biome " + biome.delegate.name()); + return id; + } + + public static int getBiomeId(RegistryKey key) + { + return getBiomeId(getBiome(key)); + } + + public static boolean hasMetadata(RegistryKey key) + { + return ModBiomes.biomeMetadata.containsKey(key); + } + + public static boolean hasMetadata(Biome biome) + { + return hasMetadata(createKey(biome)); + } + + public static BiomeMetadata getMetadata(RegistryKey key) + { + return ModBiomes.biomeMetadata.get(key); + } + + public static BiomeMetadata getMetadata(Biome biome) + { + return getMetadata(createKey(biome)); + } + + public static boolean exists(RegistryKey key) + { + return ForgeRegistries.BIOMES.containsKey(key.location()); + } + + public static boolean exists(int id) + { + return getBiome(id) != null; + } + + @Nullable + public static RegistryKey getClientKey(Biome biome) + { + return Minecraft.getInstance().level.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).getResourceKey(biome).orElse(null); + } +} diff --git a/src/main/java/biomesoplenty/common/util/biome/FeatureUtil.java b/src/main/java/biomesoplenty/common/util/biome/FeatureUtil.java new file mode 100644 index 0000000000..8c235aec3f --- /dev/null +++ b/src/main/java/biomesoplenty/common/util/biome/FeatureUtil.java @@ -0,0 +1,22 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.util.biome; + +import biomesoplenty.common.world.gen.feature.DenseFeatureSpreadConfig; +import biomesoplenty.common.world.gen.placement.BOPPlacements; +import net.minecraft.world.gen.feature.FeatureSpreadConfig; +import net.minecraft.world.gen.placement.ConfiguredPlacement; +import net.minecraft.world.gen.placement.Placement; + +public class FeatureUtil +{ + public static ConfiguredPlacement denseCount(int count) + { + return BOPPlacements.COUNT.configured(new DenseFeatureSpreadConfig(count)); + } +} diff --git a/src/main/java/biomesoplenty/common/util/biome/GeneratorUtil.java b/src/main/java/biomesoplenty/common/util/biome/GeneratorUtil.java new file mode 100644 index 0000000000..07d1f96e52 --- /dev/null +++ b/src/main/java/biomesoplenty/common/util/biome/GeneratorUtil.java @@ -0,0 +1,22 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.util.biome; + +import java.util.Random; + +public class GeneratorUtil +{ + // get a random number between 2 values (inclusive of end points) + public static int nextIntBetween(Random rand, int a, int b) + { + if (a == b) {return a;} + int min = a < b ? a : b; + int max = a > b ? a : b; + return min + rand.nextInt(1 + max - min); + } +} diff --git a/src/main/java/biomesoplenty/common/util/block/BlockUtil.java b/src/main/java/biomesoplenty/common/util/block/BlockUtil.java new file mode 100644 index 0000000000..3d6402b681 --- /dev/null +++ b/src/main/java/biomesoplenty/common/util/block/BlockUtil.java @@ -0,0 +1,42 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.util.block; + +import net.minecraft.block.BlockState; +import net.minecraft.state.Property; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; +import net.minecraft.world.chunk.ChunkStatus; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.Heightmap; + +import java.util.Collection; + +public class BlockUtil +{ + // Given a blockstate for some block which has an axis orientation (such as logs), try to determine the axis property + public static Property getAxisProperty(BlockState log) + { + for (Property property : log.getProperties()) + { + Collection allowedValues = property.getPossibleValues(); + if (allowedValues.contains(Direction.Axis.X) && allowedValues.contains(Direction.Axis.Y) && allowedValues.contains(Direction.Axis.Z)) + { + return property; + } + } + return null; + } + + public static BlockPos getTopSolidOrLiquidBlock(IWorld world, int x, int z) + { + IChunk chunk = world.getChunk(x >> 4, z >> 4, ChunkStatus.FULL); + return new BlockPos(x, chunk.getHeight(Heightmap.Type.MOTION_BLOCKING, x & 15, z & 15), z); + } +} diff --git a/src/main/java/biomesoplenty/common/util/block/IBlockPosQuery.java b/src/main/java/biomesoplenty/common/util/block/IBlockPosQuery.java new file mode 100644 index 0000000000..44dfb7749a --- /dev/null +++ b/src/main/java/biomesoplenty/common/util/block/IBlockPosQuery.java @@ -0,0 +1,16 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.util.block; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; + +public interface IBlockPosQuery +{ + boolean matches(IWorld world, BlockPos pos); +} diff --git a/src/main/java/biomesoplenty/common/util/config/JsonUtil.java b/src/main/java/biomesoplenty/common/util/config/JsonUtil.java new file mode 100644 index 0000000000..112e7bbec0 --- /dev/null +++ b/src/main/java/biomesoplenty/common/util/config/JsonUtil.java @@ -0,0 +1,57 @@ +/******************************************************************************* + * Copyright 2014-2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.util.config; + +import biomesoplenty.core.BiomesOPlenty; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import org.apache.commons.io.FileUtils; + +import java.io.File; +import java.lang.reflect.Type; + +public class JsonUtil +{ + public static final Gson SERIALIZER = new GsonBuilder().setPrettyPrinting().create(); + + public static T getOrCreateConfigFile(File configDir, String configName, T defaults, Type type) + { + File configFile = new File(configDir, configName); + + //No config file, so create default config: + if (!configFile.exists()) + { + writeFile(configFile, defaults); + } + + try + { + return (T)SERIALIZER.fromJson(FileUtils.readFileToString(configFile), type); + } + catch (Exception e) + { + BiomesOPlenty.logger.error("Error parsing config from json: " + configFile.toString(), e); + } + + return null; + } + + public static boolean writeFile(File outputFile, Object obj) + { + try + { + FileUtils.write(outputFile, SERIALIZER.toJson(obj)); + return true; + } + catch (Exception e) + { + BiomesOPlenty.logger.error("Error writing config file " + outputFile.getAbsolutePath() + ": " + e.getMessage()); + return false; + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/util/inventory/ItemGroupBOP.java b/src/main/java/biomesoplenty/common/util/inventory/ItemGroupBOP.java new file mode 100644 index 0000000000..0e6a81eb8c --- /dev/null +++ b/src/main/java/biomesoplenty/common/util/inventory/ItemGroupBOP.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.util.inventory; + +import biomesoplenty.api.item.BOPItems; +import net.minecraft.item.ItemGroup; +import net.minecraft.item.ItemStack; + +public class ItemGroupBOP extends ItemGroup +{ + public static final ItemGroupBOP instance = new ItemGroupBOP(ItemGroup.TABS.length, "biomesoplenty"); + + private ItemGroupBOP(int index, String label) + { + super(index, label); + } + + @Override + public ItemStack makeIcon() + { + return new ItemStack(BOPItems.bop_icon); + } +} diff --git a/src/main/java/biomesoplenty/common/world/AlphaOctavePerlinNoise.java b/src/main/java/biomesoplenty/common/world/AlphaOctavePerlinNoise.java new file mode 100644 index 0000000000..9e5aa85ad0 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/AlphaOctavePerlinNoise.java @@ -0,0 +1,48 @@ +package biomesoplenty.common.world; + +import java.util.Arrays; +import java.util.Random; + +public class AlphaOctavePerlinNoise +{ + private AlphaPerlinNoise samplers[]; + private int octaves; + + public AlphaOctavePerlinNoise(Random random, int octaves) + { + this.octaves = octaves; + samplers = new AlphaPerlinNoise[octaves]; + for(int i = 0; i < octaves; i++) + { + samplers[i] = new AlphaPerlinNoise(random); + } + + } + + public double sample(double x, double z) + { + double sum = 0.0; + double amplitude = 1.0; + for(int i = 0; i < this.octaves; i++) + { + sum += this.samplers[i].sample(x * amplitude, z * amplitude) / amplitude; + amplitude /= 2.0; + } + + return sum; + } + + public double sample(double x, double y, double z, double xFreq, double yFreq, double zFreq) + { + double sum = 0.0; + + double amplitude = 1.0D; + for(int i = 0; i < octaves; i++) + { + sum += samplers[i].sample(x, y, z, xFreq * amplitude, yFreq * amplitude, zFreq * amplitude, amplitude); + amplitude /= 2D; + } + + return sum; + } +} diff --git a/src/main/java/biomesoplenty/common/world/AlphaPerlinNoise.java b/src/main/java/biomesoplenty/common/world/AlphaPerlinNoise.java new file mode 100644 index 0000000000..5c08e05957 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/AlphaPerlinNoise.java @@ -0,0 +1,154 @@ +package biomesoplenty.common.world; + +import java.util.Random; + +public class AlphaPerlinNoise +{ + private final int[] permutations; + public final double offsetX; + public final double offsetY; + public final double offsetZ; + + public AlphaPerlinNoise(Random random) + { + permutations = new int[512]; + offsetX = random.nextDouble() * 256D; + offsetY = random.nextDouble() * 256D; + offsetZ = random.nextDouble() * 256D; + for(int i = 0; i < 256; i++) + { + permutations[i] = i; + } + + for(int j = 0; j < 256; j++) + { + int k = random.nextInt(256 - j) + j; + int l = permutations[j]; + permutations[j] = permutations[k]; + permutations[k] = l; + permutations[j + 256] = permutations[j]; + } + + } + + public double sample(double x, double y, double z) + { + double localX = x + offsetX; + double localY = y + offsetY; + double localZ = z + offsetZ; + int floorX = (int) localX; + int floorY = (int) localY; + int floorZ = (int) localZ; + if(localX < (double) floorX) + { + floorX--; + } + if(localY < (double) floorY) + { + floorY--; + } + if(localZ < (double) floorZ) + { + floorZ--; + } + int maskedX = floorX & 0xff; + int maskedY = floorY & 0xff; + int maskedZ = floorZ & 0xff; + localX -= floorX; + localY -= floorY; + localZ -= floorZ; + // Apply smoothstep on all axes + double smoothedX = localX * localX * localX * (localX * (localX * 6 - 15) + 10); + double smoothedY = localY * localY * localY * (localY * (localY * 6 - 15) + 10); + double smoothedZ = localZ * localZ * localZ * (localZ * (localZ * 6 - 15) + 10); + int perm1 = permutations[maskedX] + maskedY; + int perm2 = permutations[perm1] + maskedZ; + int perm3 = permutations[perm1 + 1] + maskedZ; + int perm4 = permutations[maskedX + 1] + maskedY; + int perm5 = permutations[perm4] + maskedZ; + int perm6 = permutations[perm4 + 1] + maskedZ; + // Apply trilinear interpolation on the noise to get the final result + return lerp(smoothedZ, + lerp(smoothedY, + lerp(smoothedX, + grad(permutations[perm2], localX, localY, localZ), + grad(permutations[perm5], localX - 1.0D, localY, localZ)), + lerp(smoothedX, + grad(permutations[perm3], localX, localY - 1.0D, localZ), + grad(permutations[perm6], localX - 1.0D, localY - 1.0D, localZ))), + lerp(smoothedY, + lerp(smoothedX, + grad(permutations[perm2 + 1], localX, localY, localZ - 1.0D), + grad(permutations[perm5 + 1], localX - 1.0D, localY, localZ - 1.0D)), + lerp(smoothedX, + grad(permutations[perm3 + 1], localX, localY - 1.0D, localZ - 1.0D), + grad(permutations[perm6 + 1], localX - 1.0D, localY - 1.0D, localZ - 1.0D)))); + } + + public double lerp(double delta, double start, double end) + { + return start + delta * (end - start); + } + + public double grad(int i, double d, double d1, double d2) + { + int j = i & 0xf; + double d3 = j >= 8 ? d1 : d; + double d4 = j >= 4 ? j != 12 && j != 14 ? d2 : d : d1; + return ((j & 1) != 0 ? -d3 : d3) + ((j & 2) != 0 ? -d4 : d4); + } + + // Note: Passing in the z value as the y coordinate is intended behavior here. + public double sample(double x, double z) + { + return sample(x, z, 0.0); + } + + // Alternate sample method that provides frequency and amplitude modification functionality + public double sample(double x, double y, double z, double freqX, double freqY, double freqZ, double amplitude) + { + double noiseAmplitude = 1.0 / amplitude; + double localX = (x + (double) 0) * freqX + offsetX; + int floorX = (int) localX; + if(localX < (double) floorX) + { + floorX--; + } + int maskX = floorX & 0xff; + localX -= floorX; + double smoothedX = localX * localX * localX * (localX * (localX * 6D - 15D) + 10D); + double localZ = (z + (double) 0) * freqZ + offsetZ; + int floorZ = (int) localZ; + if(localZ < (double) floorZ) + { + floorZ--; + } + int maskZ = floorZ & 0xff; + localZ -= floorZ; + double smoothZ = localZ * localZ * localZ * (localZ * (localZ * 6D - 15D) + 10D); + double localY = (y + (double) 0) * freqY + offsetY; + int floorY = (int) localY; + if(localY < (double) floorY) + { + floorY--; + } + int maskY = floorY & 0xff; + localY -= floorY; + double smoothY = localY * localY * localY * (localY * (localY * 6D - 15D) + 10D); + int perm1 = permutations[maskX] + maskY; + int perm2 = permutations[perm1] + maskZ; + int perm3 = permutations[perm1 + 1] + maskZ; + int perm4 = permutations[maskX + 1] + maskY; + int perm5 = permutations[perm4] + maskZ; + int perm6 = permutations[perm4 + 1] + maskZ; + double lerp1 = lerp(smoothedX, grad(permutations[perm2], localX, localY, localZ), grad(permutations[perm5], localX - 1.0D, localY, localZ)); + double lerp2 = lerp(smoothedX, grad(permutations[perm3], localX, localY - 1.0D, localZ), grad(permutations[perm6], localX - 1.0D, localY - 1.0D, localZ)); + double lerp3 = lerp(smoothedX, grad(permutations[perm2 + 1], localX, localY, localZ - 1.0D), grad(permutations[perm5 + 1], localX - 1.0D, localY, localZ - 1.0D)); + double lerp4 = lerp(smoothedX, grad(permutations[perm3 + 1], localX, localY - 1.0D, localZ - 1.0D), grad(permutations[perm6 + 1], localX - 1.0D, localY - 1.0D, localZ - 1.0D)); + double biLerp1 = lerp(smoothY, lerp1, lerp2); + double biLerp2 = lerp(smoothY, lerp3, lerp4); + double finalNoise = lerp(smoothZ, biLerp1, biLerp2); + + return finalNoise * noiseAmplitude; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/BOPBiomeProvider.java b/src/main/java/biomesoplenty/common/world/BOPBiomeProvider.java new file mode 100644 index 0000000000..99e218ac0d --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/BOPBiomeProvider.java @@ -0,0 +1,72 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import com.google.common.collect.ImmutableList; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.registry.DynamicRegistries; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.RegistryLookupCodec; +import net.minecraft.util.registry.WorldGenRegistries; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.biome.provider.BiomeProvider; +import net.minecraft.world.gen.layer.Layer; +import net.minecraft.world.gen.layer.LayerUtil; +import net.minecraftforge.registries.ForgeRegistries; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class BOPBiomeProvider extends BiomeProvider +{ + public static final Codec CODEC = RecordCodecBuilder.create((builder) -> + { + return builder.group( + Codec.LONG.fieldOf("seed").stable().forGetter((biomeProvider) -> biomeProvider.seed), + RegistryLookupCodec.create(Registry.BIOME_REGISTRY).forGetter((biomeProvider) -> biomeProvider.biomes) + ).apply(builder, builder.stable(BOPBiomeProvider::new)); + }); + + private static final List> VANILLA_POSSIBLE_BIOMES = ImmutableList.of(Biomes.OCEAN, Biomes.PLAINS, Biomes.DESERT, Biomes.MOUNTAINS, Biomes.FOREST, Biomes.TAIGA, Biomes.SWAMP, Biomes.RIVER, Biomes.FROZEN_OCEAN, Biomes.FROZEN_RIVER, Biomes.SNOWY_TUNDRA, Biomes.SNOWY_MOUNTAINS, Biomes.MUSHROOM_FIELDS, Biomes.MUSHROOM_FIELD_SHORE, Biomes.BEACH, Biomes.DESERT_HILLS, Biomes.WOODED_HILLS, Biomes.TAIGA_HILLS, Biomes.MOUNTAIN_EDGE, Biomes.JUNGLE, Biomes.JUNGLE_HILLS, Biomes.JUNGLE_EDGE, Biomes.DEEP_OCEAN, Biomes.STONE_SHORE, Biomes.SNOWY_BEACH, Biomes.BIRCH_FOREST, Biomes.BIRCH_FOREST_HILLS, Biomes.DARK_FOREST, Biomes.SNOWY_TAIGA, Biomes.SNOWY_TAIGA_HILLS, Biomes.GIANT_TREE_TAIGA, Biomes.GIANT_TREE_TAIGA_HILLS, Biomes.WOODED_MOUNTAINS, Biomes.SAVANNA, Biomes.SAVANNA_PLATEAU, Biomes.BADLANDS, Biomes.WOODED_BADLANDS_PLATEAU, Biomes.BADLANDS_PLATEAU, Biomes.WARM_OCEAN, Biomes.LUKEWARM_OCEAN, Biomes.COLD_OCEAN, Biomes.DEEP_WARM_OCEAN, Biomes.DEEP_LUKEWARM_OCEAN, Biomes.DEEP_COLD_OCEAN, Biomes.DEEP_FROZEN_OCEAN, Biomes.SUNFLOWER_PLAINS, Biomes.DESERT_LAKES, Biomes.GRAVELLY_MOUNTAINS, Biomes.FLOWER_FOREST, Biomes.TAIGA_MOUNTAINS, Biomes.SWAMP_HILLS, Biomes.ICE_SPIKES, Biomes.MODIFIED_JUNGLE, Biomes.MODIFIED_JUNGLE_EDGE, Biomes.TALL_BIRCH_FOREST, Biomes.TALL_BIRCH_HILLS, Biomes.DARK_FOREST_HILLS, Biomes.SNOWY_TAIGA_MOUNTAINS, Biomes.GIANT_SPRUCE_TAIGA, Biomes.GIANT_SPRUCE_TAIGA_HILLS, Biomes.MODIFIED_GRAVELLY_MOUNTAINS, Biomes.SHATTERED_SAVANNA, Biomes.SHATTERED_SAVANNA_PLATEAU, Biomes.ERODED_BADLANDS, Biomes.MODIFIED_WOODED_BADLANDS_PLATEAU, Biomes.MODIFIED_BADLANDS_PLATEAU); + + private final long seed; + private final Layer noiseBiomeLayer; + private final Registry biomes; + + public BOPBiomeProvider(long seed, Registry biomes) + { + super(Stream.concat(VANILLA_POSSIBLE_BIOMES.stream(), BOPClimates.getOverworldBiomes().stream()).map(biomes::get).collect(Collectors.toList())); + this.seed = seed; + this.noiseBiomeLayer = BOPLayerUtil.createGenLayers(seed, new BOPOverworldGenSettings()); + this.biomes = biomes; + } + + @Override + protected Codec codec() + { + return CODEC; + } + + @Override + public BiomeProvider withSeed(long seed) + { + return new BOPBiomeProvider(seed, this.biomes); + } + + @Override + public Biome getNoiseBiome(int x, int y, int z) + { + return this.noiseBiomeLayer.get(this.biomes, x, z); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/BOPDimensionType.java b/src/main/java/biomesoplenty/common/world/BOPDimensionType.java new file mode 100644 index 0000000000..e837123e78 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/BOPDimensionType.java @@ -0,0 +1,50 @@ +package biomesoplenty.common.world; + +import biomesoplenty.init.ModConfig; +import com.google.common.collect.ImmutableList; +import com.mojang.datafixers.util.Pair; +import com.mojang.serialization.Lifecycle; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.MutableRegistry; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.SimpleRegistry; +import net.minecraft.world.Dimension; +import net.minecraft.world.DimensionType; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.biome.FuzzedBiomeMagnifier; +import net.minecraft.world.biome.provider.BiomeProvider; +import net.minecraft.world.biome.provider.EndBiomeProvider; +import net.minecraft.world.biome.provider.NetherBiomeProvider; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.DimensionSettings; +import net.minecraft.world.gen.NoiseChunkGenerator; + +import java.util.Optional; +import java.util.OptionalLong; + +/*** + * This class mainly exists as a means of putting static methods in the same place Vanilla has them and access to protected methods. + * We don't need to create our own BOPDimensionType instances. + */ +public class BOPDimensionType extends DimensionType +{ + protected BOPDimensionType(OptionalLong p_i241972_1_, boolean p_i241972_2_, boolean p_i241972_3_, boolean p_i241972_4_, boolean p_i241972_5_, double p_i241972_6_, boolean p_i241972_8_, boolean p_i241972_9_, boolean p_i241972_10_, boolean p_i241972_11_, int p_i241972_12_, ResourceLocation p_i241972_13_, ResourceLocation p_i241972_14_, float p_i241972_15_) + { + super(p_i241972_1_, p_i241972_2_, p_i241972_3_, p_i241972_4_, p_i241972_5_, p_i241972_6_, p_i241972_8_, p_i241972_9_, p_i241972_10_, p_i241972_11_, p_i241972_12_, p_i241972_13_, p_i241972_14_, p_i241972_15_); + } + + private static ChunkGenerator bopNetherGenerator(Registry biomeRegistry, Registry dimensionSettingsRegistry, long seed) + { + return new NoiseChunkGenerator(new BOPNetherBiomeProvider(seed, biomeRegistry), seed, () -> dimensionSettingsRegistry.getOrThrow(DimensionSettings.NETHER)); + } + + public static SimpleRegistry bopDimensions(Registry biomeRegistry, Registry dimensionSettingsRegistry, long seed) + { + SimpleRegistry registry = new SimpleRegistry<>(Registry.LEVEL_STEM_REGISTRY, Lifecycle.experimental()); + registry.register(Dimension.NETHER, new Dimension(() -> DEFAULT_NETHER, ModConfig.GenerationConfig.useBopNether.get() ? bopNetherGenerator(biomeRegistry, dimensionSettingsRegistry, seed) : DimensionType.defaultNetherGenerator(biomeRegistry, dimensionSettingsRegistry, seed)), Lifecycle.stable()); + registry.register(Dimension.END, new Dimension(() -> DEFAULT_END, DimensionType.defaultEndGenerator(biomeRegistry, dimensionSettingsRegistry, seed)), Lifecycle.stable()); + return registry; + } +} diff --git a/src/main/java/biomesoplenty/common/world/BOPLayerUtil.java b/src/main/java/biomesoplenty/common/world/BOPLayerUtil.java new file mode 100644 index 0000000000..69e55c73bc --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/BOPLayerUtil.java @@ -0,0 +1,189 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world; + +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.common.world.layer.*; +import biomesoplenty.common.world.layer.traits.LazyAreaLayerContextBOP; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.IExtendedNoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.area.IAreaFactory; +import net.minecraft.world.gen.area.LazyArea; +import net.minecraft.world.gen.layer.*; + +import java.util.function.LongFunction; + +public class BOPLayerUtil +{ + public static final int WARM_OCEAN = BiomeUtil.getBiomeId(Biomes.WARM_OCEAN); + public static final int LUKEWARM_OCEAN = BiomeUtil.getBiomeId(Biomes.LUKEWARM_OCEAN); + public static final int OCEAN = BiomeUtil.getBiomeId(Biomes.OCEAN); + public static final int COLD_OCEAN = BiomeUtil.getBiomeId(Biomes.COLD_OCEAN); + public static final int FROZEN_OCEAN = BiomeUtil.getBiomeId(Biomes.FROZEN_OCEAN); + public static final int DEEP_WARM_OCEAN = BiomeUtil.getBiomeId(Biomes.DEEP_WARM_OCEAN); + public static final int DEEP_LUKEWARM_OCEAN = BiomeUtil.getBiomeId(Biomes.DEEP_LUKEWARM_OCEAN); + public static final int DEEP_OCEAN = BiomeUtil.getBiomeId(Biomes.DEEP_OCEAN); + public static final int DEEP_COLD_OCEAN = BiomeUtil.getBiomeId(Biomes.DEEP_COLD_OCEAN); + public static final int DEEP_FROZEN_OCEAN = BiomeUtil.getBiomeId(Biomes.DEEP_FROZEN_OCEAN); + + public static > IAreaFactory createInitialLandAndSeaFactory(LongFunction contextFactory) + { + // NOTE: Normally AddSnow, CoolWarm, HeatIce and Special GenLayers occur here, but we handle those ourselves + IAreaFactory factory = IslandLayer.INSTANCE.run(contextFactory.apply(1L)); + factory = ZoomLayer.FUZZY.run(contextFactory.apply(2000L), factory); + factory = AddIslandLayer.INSTANCE.run(contextFactory.apply(1L), factory); + factory = ZoomLayer.NORMAL.run(contextFactory.apply(2001L), factory); + factory = AddIslandLayer.INSTANCE.run(contextFactory.apply(2L), factory); + factory = AddIslandLayer.INSTANCE.run(contextFactory.apply(50L), factory); + factory = AddIslandLayer.INSTANCE.run(contextFactory.apply(70L), factory); + factory = RemoveTooMuchOceanLayer.INSTANCE.run(contextFactory.apply(2L), factory); + //factory = GenLayerAddSnow.INSTANCE.apply((IContextExtended)contextFactory.apply(2L), factory); + factory = AddIslandLayer.INSTANCE.run(contextFactory.apply(3L), factory); + //factory = GenLayerEdge.CoolWarm.INSTANCE.run(contextFactory.apply(2L), factory); + //factory = GenLayerEdge.HeatIce.INSTANCE.run(contextFactory.apply(2L), factory); + //factory = GenLayerEdge.Special.INSTANCE.run(contextFactory.apply(3L), factory); + factory = ZoomLayer.NORMAL.run(contextFactory.apply(2002L), factory); + factory = ZoomLayer.NORMAL.run(contextFactory.apply(2003L), factory); + factory = AddIslandLayer.INSTANCE.run(contextFactory.apply(4L), factory); + return factory; + } + + // superimpose hot and cold regions an a land and sea layer + public static > IAreaFactory createClimateFactory(LongFunction contextFactory, BOPOverworldGenSettings settings) + { + IAreaFactory temperatureFactory; + + switch (settings.getTempScheme()) + { + case LATITUDE: default: + temperatureFactory = TemperatureLatitudeLayer.INSTANCE.run(contextFactory.apply(2L)); + break; + case SMALL_ZONES: + temperatureFactory = TemperatureNoiseLayer.SMALL_ZONES.run(contextFactory.apply(3L)); + break; + case MEDIUM_ZONES: + temperatureFactory = TemperatureNoiseLayer.MEDIUM_ZONES.run(contextFactory.apply(4L)); + break; + case LARGE_ZONES: + temperatureFactory = TemperatureNoiseLayer.LARGE_ZONES.run(contextFactory.apply(5L)); + break; + case RANDOM: + temperatureFactory = TemperatureRandomLayer.INSTANCE.run(contextFactory.apply(6L)); + break; + } + + IAreaFactory rainfallFactory; + switch(settings.getRainScheme()) + { + case SMALL_ZONES: + rainfallFactory = RainfallNoiseLayer.SMALL_ZONES.run(contextFactory.apply(7L)); + break; + case MEDIUM_ZONES: default: + rainfallFactory = RainfallNoiseLayer.MEDIUM_ZONES.run(contextFactory.apply(8L)); + break; + case LARGE_ZONES: + rainfallFactory = RainfallNoiseLayer.LARGE_ZONES.run(contextFactory.apply(9L)); + break; + case RANDOM: + rainfallFactory = RainfallRandomLayer.INSTANCE.run(contextFactory.apply(10L)); + break; + } + + return ClimateLayer.INSTANCE.run(contextFactory.apply(103L), temperatureFactory, rainfallFactory); + } + + public static > IAreaFactory createBiomeFactory(IAreaFactory landSeaAreaFactory, IAreaFactory climateAreaFactory, LongFunction contextFactory) + { + IAreaFactory biomeFactory = BOPBiomeLayer.INSTANCE.run(contextFactory.apply(200L), landSeaAreaFactory, climateAreaFactory); + biomeFactory = AddBambooForestLayer.INSTANCE.run(contextFactory.apply(1001L), biomeFactory); + biomeFactory = LayerUtil.zoom(1000L, ZoomLayer.NORMAL, biomeFactory, 2, contextFactory); + biomeFactory = BOPBiomeEdgeLayer.INSTANCE.run(contextFactory.apply(1000L), biomeFactory); + return biomeFactory; + } + + public static > IAreaFactory createAreaFactories(BOPOverworldGenSettings settings, LongFunction contextFactory) + { + // Create the initial land and sea layer. Is also responsible for adding deep oceans + // and mushroom islands + IAreaFactory landSeaFactory = createInitialLandAndSeaFactory(contextFactory); + + // Determines positions for all of the new ocean subbiomes added in 1.13 + IAreaFactory oceanBiomeFactory = OceanLayer.INSTANCE.run(contextFactory.apply(2L)); + oceanBiomeFactory = LayerUtil.zoom(2001L, ZoomLayer.NORMAL, oceanBiomeFactory, 6, contextFactory); + + int biomeSize = 4; + int riverSize = biomeSize; + if (settings != null) + { + biomeSize = settings.getBiomeSize(); + riverSize = settings.getRiverSize(); + } + + // Create the climates + IAreaFactory climateFactory = createClimateFactory(contextFactory, settings); + + // Add islands and deep oceans + landSeaFactory = AddMushroomIslandLayer.INSTANCE.run(contextFactory.apply(5L), landSeaFactory); + landSeaFactory = LargeIslandLayer.INSTANCE.run(contextFactory.apply(5L), landSeaFactory, climateFactory); + landSeaFactory = DeepOceanLayer.INSTANCE.run(contextFactory.apply(4L), landSeaFactory); + + // Allocate the biomes + IAreaFactory biomesFactory = createBiomeFactory(landSeaFactory, climateFactory, contextFactory); + + // Fork off a new branch as a seed for rivers and sub biomes + IAreaFactory riverAndSubBiomesInitFactory = StartRiverLayer.INSTANCE.run(contextFactory.apply(100L), landSeaFactory); + riverAndSubBiomesInitFactory = LayerUtil.zoom(1000L, ZoomLayer.NORMAL, riverAndSubBiomesInitFactory, 2, contextFactory); + biomesFactory = SubBiomeLayer.INSTANCE.run(contextFactory.apply(1000L), biomesFactory, riverAndSubBiomesInitFactory); + + // Develop the rivers branch + IAreaFactory riversInitFactory = LayerUtil.zoom(1000L, ZoomLayer.NORMAL, riverAndSubBiomesInitFactory, riverSize, contextFactory); + riversInitFactory = RiverLayer.INSTANCE.run(contextFactory.apply(1L), riversInitFactory); + riversInitFactory = SmoothLayer.INSTANCE.run(contextFactory.apply(1000L), riversInitFactory); + + // Mix in rare biomes into biomes branch + biomesFactory = RareBiomeLayer.INSTANCE.run(contextFactory.apply(1001L), biomesFactory); + + // Zoom more based on the biome size + for (int i = 0; i < biomeSize; ++i) + { + biomesFactory = ZoomLayer.NORMAL.run(contextFactory.apply((long)(1000 + i)), biomesFactory); + if (i == 0) biomesFactory = AddIslandLayer.INSTANCE.run(contextFactory.apply(3L), biomesFactory); + if (i == 1 || biomeSize == 1) biomesFactory = BOPShoreLayer.INSTANCE.run(contextFactory.apply(1000L), biomesFactory); + } + + biomesFactory = SmoothLayer.INSTANCE.run(contextFactory.apply(1000L), biomesFactory); + + // Mix rivers into the biomes branch + biomesFactory = BOPRiverMixLayer.INSTANCE.run(contextFactory.apply(100L), biomesFactory, riversInitFactory); + + climateFactory = LayerUtil.zoom(2001L, ZoomLayer.NORMAL, climateFactory, biomeSize + 2, contextFactory); + biomesFactory = BOPMixOceansLayer.INSTANCE.run(contextFactory.apply(100L), biomesFactory, oceanBiomeFactory, climateFactory); + return biomesFactory; + } + + public static Layer createGenLayers(long seed, BOPOverworldGenSettings settings) + { + IAreaFactory factory = createAreaFactories(settings, (seedModifier) -> + { + return new LazyAreaLayerContextBOP(1, seed, seedModifier); + }); + return new Layer(factory); + } + + public static boolean isOcean(int biomeIn) + { + return biomeIn == WARM_OCEAN || biomeIn == LUKEWARM_OCEAN || biomeIn == OCEAN || biomeIn == COLD_OCEAN || biomeIn == FROZEN_OCEAN || biomeIn == DEEP_WARM_OCEAN || biomeIn == DEEP_LUKEWARM_OCEAN || biomeIn == DEEP_OCEAN || biomeIn == DEEP_COLD_OCEAN || biomeIn == DEEP_FROZEN_OCEAN; + } + + public static boolean isShallowOcean(int biomeIn) + { + return biomeIn == WARM_OCEAN || biomeIn == LUKEWARM_OCEAN || biomeIn == OCEAN || biomeIn == COLD_OCEAN || biomeIn == FROZEN_OCEAN; + } +} diff --git a/src/main/java/biomesoplenty/common/world/BOPNetherBiomeProvider.java b/src/main/java/biomesoplenty/common/world/BOPNetherBiomeProvider.java new file mode 100644 index 0000000000..756e02e30f --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/BOPNetherBiomeProvider.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import com.google.common.collect.ImmutableList; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.RegistryLookupCodec; +import net.minecraft.util.registry.WorldGenRegistries; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.biome.provider.BiomeProvider; +import net.minecraft.world.gen.layer.Layer; +import net.minecraftforge.registries.ForgeRegistries; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class BOPNetherBiomeProvider extends BiomeProvider +{ + public static final Codec CODEC = RecordCodecBuilder.create((builder) -> + { + return builder.group( + Codec.LONG.fieldOf("seed").stable().forGetter((biomeProvider) -> biomeProvider.seed), + RegistryLookupCodec.create(Registry.BIOME_REGISTRY).forGetter((biomeProvider) -> biomeProvider.biomes) + ).apply(builder, builder.stable(BOPNetherBiomeProvider::new)); + }); + private static final List> VANILLA_POSSIBLE_BIOMES = ImmutableList.of(Biomes.NETHER_WASTES, Biomes.SOUL_SAND_VALLEY, Biomes.CRIMSON_FOREST, Biomes.WARPED_FOREST, Biomes.BASALT_DELTAS); + + private final long seed; + private final Layer noiseBiomeLayer; + private final Registry biomes; + + public BOPNetherBiomeProvider(long seed, Registry biomes) + { + super(Stream.concat(VANILLA_POSSIBLE_BIOMES.stream(), BOPClimates.NETHER.getLandBiomes().stream().map((entry) -> entry.biome)).map(biomes::get).collect(Collectors.toList())); + this.seed = seed; + this.noiseBiomeLayer = BOPNetherLayerUtil.createGenLayers(seed); + this.biomes = biomes; + } + + @Override + protected Codec codec() + { + return CODEC; + } + + @Override + public BiomeProvider withSeed(long seed) + { + return new BOPNetherBiomeProvider(seed, this.biomes); + } + + @Override + public Biome getNoiseBiome(int x, int y, int z) + { + return this.noiseBiomeLayer.get(this.biomes, x, z); + } +} diff --git a/src/main/java/biomesoplenty/common/world/BOPNetherLayerUtil.java b/src/main/java/biomesoplenty/common/world/BOPNetherLayerUtil.java new file mode 100644 index 0000000000..863142c081 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/BOPNetherLayerUtil.java @@ -0,0 +1,63 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world; + +import biomesoplenty.common.world.layer.BOPShoreLayer; +import biomesoplenty.common.world.layer.LandLayer; +import biomesoplenty.common.world.layer.NetherBiomeLayer; +import biomesoplenty.common.world.layer.traits.LazyAreaLayerContextBOP; +import net.minecraft.world.gen.IExtendedNoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.area.IAreaFactory; +import net.minecraft.world.gen.area.LazyArea; +import net.minecraft.world.gen.layer.*; + +import java.util.function.LongFunction; + +public class BOPNetherLayerUtil +{ + public static > IAreaFactory createBiomeFactory(IAreaFactory landFactory, LongFunction contextFactory) + { + IAreaFactory biomeFactory = NetherBiomeLayer.INSTANCE.run(contextFactory.apply(200L)); + // magnify the biome layer + biomeFactory = LayerUtil.zoom(1000L, ZoomLayer.NORMAL, biomeFactory, 2, contextFactory); + return biomeFactory; + } + + public static > IAreaFactory createAreaFactories(LongFunction contextFactory) + { + int biomeSize = 4; + + // The nether has no oceans, only land + IAreaFactory landFactory = LandLayer.INSTANCE.run(contextFactory.apply(1L)); + + // Allocate the biomes + IAreaFactory biomesFactory = createBiomeFactory(landFactory, contextFactory); + + // Zoom more based on the biome size + for (int i = 0; i < biomeSize; ++i) + { + biomesFactory = ZoomLayer.NORMAL.run(contextFactory.apply((long)(1000 + i)), biomesFactory); + if (i == 0) biomesFactory = AddIslandLayer.INSTANCE.run(contextFactory.apply(3L), biomesFactory); + if (i == 1 || biomeSize == 1) biomesFactory = BOPShoreLayer.INSTANCE.run(contextFactory.apply(1000L), biomesFactory); + } + + biomesFactory = SmoothLayer.INSTANCE.run(contextFactory.apply(1000L), biomesFactory); + return biomesFactory; + } + + public static Layer createGenLayers(long seed) + { + IAreaFactory factory = createAreaFactories((seedModifier) -> + { + return new LazyAreaLayerContextBOP(1, seed, seedModifier); + }); + + return new Layer(factory); + } +} diff --git a/src/main/java/biomesoplenty/common/world/BOPOverworldGenSettings.java b/src/main/java/biomesoplenty/common/world/BOPOverworldGenSettings.java new file mode 100644 index 0000000000..a515097c22 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/BOPOverworldGenSettings.java @@ -0,0 +1,98 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world; + +import biomesoplenty.init.ModConfig; + +public class BOPOverworldGenSettings +{ + public enum LandMassScheme + { + VANILLA, + CONTINENTS, + ARCHIPELAGO + } + + public enum TemperatureVariationScheme + { + LATITUDE, + SMALL_ZONES, + MEDIUM_ZONES, + LARGE_ZONES, + RANDOM + } + + public enum RainfallVariationScheme + { + SMALL_ZONES, + MEDIUM_ZONES, + LARGE_ZONES, + RANDOM + } + + public enum BiomeSize + { + TINY (2), + SMALL (3), + MEDIUM (4), + LARGE (5), + HUGE (6); + + private final int value; + + BiomeSize(int value) + { + this.value = value; + } + + public int getValue() + { + return this.value; + } + } + + public enum RiverSize + { + TINY (2), + SMALL (3), + MEDIUM (4), + LARGE (5), + HUGE (6); + + private final int value; + + RiverSize(int value) + { + this.value = value; + } + + public int getValue() + { + return this.value; + } + } + + public int getBiomeSize() + { + return ModConfig.GenerationConfig.biomeSize.get().value; + } + public int getRiverSize() + { + return ModConfig.GenerationConfig.riverSize.get().value; + } + + public TemperatureVariationScheme getTempScheme() + { + return ModConfig.GenerationConfig.temperatureVariationScheme.get(); + } + + public RainfallVariationScheme getRainScheme() + { + return ModConfig.GenerationConfig.rainfallVariationScheme.get(); + } +} diff --git a/src/main/java/biomesoplenty/common/world/BOPWorldType.java b/src/main/java/biomesoplenty/common/world/BOPWorldType.java new file mode 100644 index 0000000000..6fb8698e14 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/BOPWorldType.java @@ -0,0 +1,42 @@ +/******************************************************************************* + * Copyright 2014-2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world; + +import net.minecraft.util.registry.DynamicRegistries; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.DimensionType; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.DimensionSettings; +import net.minecraft.world.gen.NoiseChunkGenerator; +import net.minecraft.world.gen.settings.DimensionGeneratorSettings; +import net.minecraftforge.common.world.ForgeWorldType; + +public class BOPWorldType extends ForgeWorldType +{ + public BOPWorldType() + { + super(null); + } + + @Override + public ChunkGenerator createChunkGenerator(Registry biomeRegistry, Registry dimensionSettingsRegistry, long seed, String generatorSettings) + { + return new NoiseChunkGenerator(new BOPBiomeProvider(seed, biomeRegistry), seed, () -> dimensionSettingsRegistry.getOrThrow(DimensionSettings.OVERWORLD)); + } + + @Override + public DimensionGeneratorSettings createSettings(DynamicRegistries dynamicRegistries, long seed, boolean generateFeatures, boolean generateBonusChest, String generatorSettings) + { + Registry biomeRegistry = dynamicRegistries.registryOrThrow(Registry.BIOME_REGISTRY); + Registry dimensionSettingsRegistry = dynamicRegistries.registryOrThrow(Registry.NOISE_GENERATOR_SETTINGS_REGISTRY); + Registry dimensionTypeRegistry = dynamicRegistries.registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY); + + return new DimensionGeneratorSettings(seed, generateFeatures, generateBonusChest, DimensionGeneratorSettings.withOverworld(dimensionTypeRegistry, BOPDimensionType.bopDimensions(biomeRegistry, dimensionSettingsRegistry, seed), createChunkGenerator(biomeRegistry, dimensionSettingsRegistry, seed, null))); + } +} diff --git a/src/main/java/biomesoplenty/common/world/SimplexNoise.java b/src/main/java/biomesoplenty/common/world/SimplexNoise.java new file mode 100644 index 0000000000..9ac6c9e38b --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/SimplexNoise.java @@ -0,0 +1,151 @@ +package biomesoplenty.common.world; + +/** + * A speed-improved simplex noise algorithm for 2D in Java. + * + * Based on example code by Stefan Gustavson (stegu@itn.liu.se). + * Optimisations by Peter Eastman (peastman@drizzle.stanford.edu). + * Better rank ordering method by Stefan Gustavson in 2012. + * + * This could be speeded up even further, but it's useful as it is. + * + * Version 2012-03-09 + * + * This code was placed in the public domain by its original author, + * Stefan Gustavson. You may use it as you see fit, but + * attribution is appreciated. + */ +public final class SimplexNoise { + + private static Grad[] grad2 = { + new Grad(1, 1), new Grad(-1, 1), new Grad(1, -1), new Grad(-1, -1), + new Grad(1, 0), new Grad(-1, 0), new Grad(1, 0), new Grad(-1, 0), + new Grad(0, 1), new Grad(0, -1), new Grad(0, 1), new Grad(0, -1) + }; + + private static short[] p = {151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, + 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, + 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, + 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, + 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, + 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, + 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, + 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, + 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, + 61, 156, 180}; + + // To remove the need for index wrapping, double the permutation table length + private static short[] perm = new short[512]; + private static short[] permMod12 = new short[512]; + static { + for (int i = 0; i < 512; i++) { + perm[i] = p[i & 255]; + permMod12[i] = (short) (perm[i] % 12); + } + } + + // Skewing and unskewing factors for 2, 3, and 4 dimensions + private static final double F2 = 0.5 * (Math.sqrt(3.0) - 1.0); + private static final double G2 = (3.0 - Math.sqrt(3.0)) / 6.0; + + /** + * Deactivate constructor + */ + private SimplexNoise() { + } + + // This method is a *lot* faster than using (int)Math.floor(x) + private static int fastfloor(double x) { + int xi = (int) x; + return x < xi ? xi - 1 : xi; + } + + private static double dot(Grad g, double x, double y) { + return g.x * x + g.y * y; + } + + // 2D simplex noise + public static double noise(double xin, double yin) { + + double n0, n1, n2; // Noise contributions from the three corners + // Skew the input space to determine which simplex cell we're in + double s = (xin + yin) * F2; // Hairy factor for 2D + int i = fastfloor(xin + s); + int j = fastfloor(yin + s); + double t = (i + j) * G2; + double originX0 = i - t; // Unskew the cell origin back to (x,y) space + double originY0 = j - t; + double x0 = xin - originX0; // The x,y distances from the cell origin + double y0 = yin - originY0; + // For the 2D case, the simplex shape is an equilateral triangle. + // Determine which simplex we are in. + int i1, j1; // Offsets for second (middle) corner of simplex in (i,j) coords + if (x0 > y0) { + i1 = 1; + j1 = 0; + } else { + // lower triangle, XY order: (0,0)->(1,0)->(1,1) + i1 = 0; + j1 = 1; + } // upper triangle, YX order: (0,0)->(0,1)->(1,1) + // A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and + // a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where + // c = (3-sqrt(3))/6 + double x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed coords + double y1 = y0 - j1 + G2; + double x2 = x0 - 1.0 + 2.0 * G2; // Offsets for last corner in (x,y) unskewed coords + double y2 = y0 - 1.0 + 2.0 * G2; + // Work out the hashed gradient indices of the three simplex corners + int ii = i & 255; + int jj = j & 255; + int gi0 = permMod12[ii + perm[jj]]; + int gi1 = permMod12[ii + i1 + perm[jj + j1]]; + int gi2 = permMod12[ii + 1 + perm[jj + 1]]; + // Calculate the contribution from the three corners + double t0 = 0.5 - x0 * x0 - y0 * y0; + if (t0 < 0) { + n0 = 0.0; + } else { + t0 *= t0; + n0 = t0 * t0 * dot(grad2[gi0], x0, y0); // (x,y) of grad3 used for 2D gradient + } + double t1 = 0.5 - x1 * x1 - y1 * y1; + if (t1 < 0) { + n1 = 0.0; + } else { + t1 *= t1; + n1 = t1 * t1 * dot(grad2[gi1], x1, y1); + } + double t2 = 0.5 - x2 * x2 - y2 * y2; + if (t2 < 0) { + n2 = 0.0; + } else { + t2 *= t2; + n2 = t2 * t2 * dot(grad2[gi2], x2, y2); + } + // Add contributions from each corner to get the final noise value. + // The result is scaled to return values in the interval [-1,1]. + return 70.0 * (n0 + n1 + n2); + } + + // Inner class to speed up gradient computations + // (array access is a lot slower than member access) + private static class Grad { + double x, y; + Grad(double x, double y) { + this.x = x; + this.y = y; + } + } + + public static void main(String[] args) + { + double startX = 0.3543276545; + double startZ = 0.534523434; + double d = 0.11111; + for (int i = 0; i < 1000; i++) + { + System.out.println(SimplexNoise.noise(startX + d * i, startZ + d * i)); + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/biome/BiomeFeatureHelper.java b/src/main/java/biomesoplenty/common/world/biome/BiomeFeatureHelper.java new file mode 100644 index 0000000000..34b42e6cdf --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/biome/BiomeFeatureHelper.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.biome; + +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Sets; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.world.gen.blockplacer.DoublePlantBlockPlacer; +import net.minecraft.world.gen.blockplacer.SimpleBlockPlacer; +import net.minecraft.world.gen.blockstateprovider.SimpleBlockStateProvider; +import net.minecraft.world.gen.feature.BlockClusterFeatureConfig; + +public class BiomeFeatureHelper +{ + public static BlockClusterFeatureConfig createClusterConfiguration(BlockState state) + { + return (new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(state), new SimpleBlockPlacer())).tries(64).noProjection().build(); + } + + public static BlockClusterFeatureConfig createClusterConfigurationDouble(BlockState state) + { + return (new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(state), new DoublePlantBlockPlacer())).tries(64).noProjection().build(); + } + + public static BlockClusterFeatureConfig createClusterConfigurationDoubleProjects(BlockState state) + { + return (new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(state), new DoublePlantBlockPlacer())).tries(64).build(); + } + + public static BlockClusterFeatureConfig createClusterConfigurationDoubleWater(BlockState state) + { + return (new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(state), new DoublePlantBlockPlacer())).canReplace().tries(64).noProjection().build(); + } + +} diff --git a/src/main/java/biomesoplenty/common/world/gen/carver/BOPConfiguredCarvers.java b/src/main/java/biomesoplenty/common/world/gen/carver/BOPConfiguredCarvers.java new file mode 100644 index 0000000000..3de7f484d3 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/carver/BOPConfiguredCarvers.java @@ -0,0 +1,26 @@ +/******************************************************************************* + * Copyright 2014-2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.carver; + +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.WorldGenRegistries; +import net.minecraft.world.gen.carver.ConfiguredCarver; +import net.minecraft.world.gen.carver.ICarverConfig; +import net.minecraft.world.gen.carver.WorldCarver; +import net.minecraft.world.gen.feature.ProbabilityConfig; + +public class BOPConfiguredCarvers +{ + public static final ConfiguredCarver ORIGIN_CAVE = register("origin_cave", BOPWorldCarvers.ORIGIN_CAVE.configured(new ProbabilityConfig(0.14285715F))); + + private static ConfiguredCarver register(String key, ConfiguredCarver carver) + { + return WorldGenRegistries.register(WorldGenRegistries.CONFIGURED_CARVER, new ResourceLocation(BiomesOPlenty.MOD_ID, key), carver); + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/carver/BOPWorldCarvers.java b/src/main/java/biomesoplenty/common/world/gen/carver/BOPWorldCarvers.java new file mode 100644 index 0000000000..24496b3029 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/carver/BOPWorldCarvers.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright 2014-2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.carver; + +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.gen.carver.ICarverConfig; +import net.minecraft.world.gen.carver.WorldCarver; +import net.minecraft.world.gen.feature.ProbabilityConfig; +import net.minecraftforge.registries.ForgeRegistries; + +public class BOPWorldCarvers +{ + //Carvers + public static final WorldCarver ORIGIN_CAVE = register("origin_cave", new OriginCaveWorldCarver(ProbabilityConfig.CODEC, 256)); + + private static > F register(String key, F carver) + { + carver.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, key)); + ForgeRegistries.WORLD_CARVERS.register(carver); + return carver; + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/carver/OriginCaveWorldCarver.java b/src/main/java/biomesoplenty/common/world/gen/carver/OriginCaveWorldCarver.java new file mode 100644 index 0000000000..71c0994505 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/carver/OriginCaveWorldCarver.java @@ -0,0 +1,33 @@ +package biomesoplenty.common.world.gen.carver; + +import biomesoplenty.api.block.BOPBlocks; +import com.google.common.collect.ImmutableSet; +import com.mojang.serialization.Codec; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.tags.FluidTags; +import net.minecraft.world.gen.carver.CaveWorldCarver; +import net.minecraft.world.gen.feature.ProbabilityConfig; + +import java.util.Set; + +public class OriginCaveWorldCarver extends CaveWorldCarver +{ + protected Set replaceableBlocks = ImmutableSet.of(BOPBlocks.origin_grass_block, Blocks.STONE, Blocks.GRANITE, Blocks.DIORITE, Blocks.ANDESITE, Blocks.DIRT, Blocks.COARSE_DIRT, Blocks.PODZOL, Blocks.GRASS_BLOCK, Blocks.TERRACOTTA, Blocks.WHITE_TERRACOTTA, Blocks.ORANGE_TERRACOTTA, Blocks.MAGENTA_TERRACOTTA, Blocks.LIGHT_BLUE_TERRACOTTA, Blocks.YELLOW_TERRACOTTA, Blocks.LIME_TERRACOTTA, Blocks.PINK_TERRACOTTA, Blocks.GRAY_TERRACOTTA, Blocks.LIGHT_GRAY_TERRACOTTA, Blocks.CYAN_TERRACOTTA, Blocks.PURPLE_TERRACOTTA, Blocks.BLUE_TERRACOTTA, Blocks.BROWN_TERRACOTTA, Blocks.GREEN_TERRACOTTA, Blocks.RED_TERRACOTTA, Blocks.BLACK_TERRACOTTA, Blocks.SANDSTONE, Blocks.RED_SANDSTONE, Blocks.MYCELIUM, Blocks.SNOW, Blocks.PACKED_ICE); + + public OriginCaveWorldCarver(Codec p_i231917_1_, int p_i231917_2_) + { + super(p_i231917_1_, p_i231917_2_); + } + + @Override + protected boolean canReplaceBlock(BlockState p_222706_1_) { + return this.replaceableBlocks.contains(p_222706_1_.getBlock()); + } + + @Override + protected boolean canReplaceBlock(BlockState state, BlockState aboveState) { + return this.canReplaceBlock(state) || (state.is(Blocks.SAND) || state.is(Blocks.GRAVEL)) && !aboveState.getFluidState().is(FluidTags.WATER); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BOPBigBrownMushroomFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/BOPBigBrownMushroomFeature.java new file mode 100644 index 0000000000..b898dccc87 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BOPBigBrownMushroomFeature.java @@ -0,0 +1,116 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.HugeMushroomBlock; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.feature.BigBrownMushroomFeature; +import net.minecraft.world.gen.feature.BigMushroomFeatureConfig; + +import java.util.Random; + +public class BOPBigBrownMushroomFeature extends BigBrownMushroomFeature +{ + public BOPBigBrownMushroomFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + protected void placeTrunk(IWorld world, Random random, BlockPos pos, BigMushroomFeatureConfig config, int height, BlockPos.Mutable mutablePos) + { + for (int i = 0; i < height; ++i) + { + mutablePos.set(pos).move(Direction.UP, i); + // Fix Forge's inversion bug + if (world.getBlockState(mutablePos).canBeReplacedByLeaves(world, mutablePos)) + { + this.setBlock(world, mutablePos, config.stemProvider.getState(random, pos)); + } + } + } + + @Override + protected void makeCap(IWorld world, Random random, BlockPos pos, int height, BlockPos.Mutable mutablePos, BigMushroomFeatureConfig config) + { + int radius = config.foliageRadius; + + for (int x = -radius; x <= radius; ++x) + { + for (int z = -radius; z <= radius; ++z) + { + boolean westEdge = x == -radius; + boolean eastEdge = x == radius; + boolean northEdge = z == -radius; + boolean southEdge = z == radius; + boolean eastOrWestEdge = westEdge || eastEdge; + boolean northOrSouthEdge = northEdge || southEdge; + if (!eastOrWestEdge || !northOrSouthEdge) + { + mutablePos.set(pos).move(x, height, z); + // Fix Forge's inversion bug + if (world.getBlockState(mutablePos).canBeReplacedByLeaves(world, mutablePos)) + { + boolean westFace = westEdge || northOrSouthEdge && x == 1 - radius; + boolean eastFace = eastEdge || northOrSouthEdge && x == radius - 1; + boolean northFace = northEdge || eastOrWestEdge && z == 1 - radius; + boolean southFace = southEdge || eastOrWestEdge && z == radius - 1; + this.setBlock(world, mutablePos, config.capProvider.getState(random, pos).setValue(HugeMushroomBlock.WEST, Boolean.valueOf(westFace)).setValue(HugeMushroomBlock.EAST, Boolean.valueOf(eastFace)).setValue(HugeMushroomBlock.NORTH, Boolean.valueOf(northFace)).setValue(HugeMushroomBlock.SOUTH, Boolean.valueOf(southFace))); + } + } + } + } + } + + @Override + protected boolean isValidPosition(IWorld world, BlockPos pos, int height, BlockPos.Mutable mutablePos, BigMushroomFeatureConfig config) + { + int i = pos.getY(); + if (i >= 1 && i + height + 1 < world.getMaxBuildHeight()) + { + Block groundBlock = world.getBlockState(pos.below()).getBlock(); + // Allow growth in the nether + if (!isDirt(groundBlock) && groundBlock != Blocks.NETHERRACK && groundBlock != Blocks.SOUL_SAND) + { + return false; + } + else + { + for (int y = 0; y <= height; ++y) + { + int radius = this.getTreeRadiusForHeight(-1, -1, config.foliageRadius, y); + + for (int x = -radius; x <= radius; ++x) + { + for (int z = -radius; z <= radius; ++z) + { + BlockState obstructingState = world.getBlockState(mutablePos.set(pos).move(x, y, z)); + if (!obstructingState.isAir(world, mutablePos) && !obstructingState.is(BlockTags.LEAVES)) + { + return false; + } + } + } + } + + return true; + } + } + else + { + return false; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BOPBigRedMushroomFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/BOPBigRedMushroomFeature.java new file mode 100644 index 0000000000..d4635b6dac --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BOPBigRedMushroomFeature.java @@ -0,0 +1,116 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.HugeMushroomBlock; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.feature.BigMushroomFeatureConfig; +import net.minecraft.world.gen.feature.BigRedMushroomFeature; + +import java.util.Random; + +public class BOPBigRedMushroomFeature extends BigRedMushroomFeature +{ + public BOPBigRedMushroomFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + protected void placeTrunk(IWorld world, Random random, BlockPos pos, BigMushroomFeatureConfig config, int height, BlockPos.Mutable mutablePos) + { + for (int i = 0; i < height; ++i) + { + mutablePos.set(pos).move(Direction.UP, i); + // Fix Forge's inversion bug + if (world.getBlockState(mutablePos).canBeReplacedByLeaves(world, mutablePos)) + { + this.setBlock(world, mutablePos, config.stemProvider.getState(random, pos)); + } + } + } + + @Override + protected void makeCap(IWorld world, Random random, BlockPos pos, int height, BlockPos.Mutable mutablePos, BigMushroomFeatureConfig config) + { + for (int y = height - 3; y <= height; ++y) + { + int radius = y < height ? config.foliageRadius : config.foliageRadius - 1; + int innerRadius = config.foliageRadius - 2; + + for (int x = -radius; x <= radius; ++x) + { + for (int z = -radius; z <= radius; ++z) + { + boolean westEdge = x == -radius; + boolean eastEdge = x == radius; + boolean northEdge = z == -radius; + boolean southEdge = z == radius; + boolean eastOrWestEdge = westEdge || eastEdge; + boolean northOrSouthEdge = northEdge || southEdge; + if (y >= height || eastOrWestEdge != northOrSouthEdge) + { + mutablePos.set(pos).move(x, y, z); + // Fix Forge's inversion bug + if (world.getBlockState(mutablePos).canBeReplacedByLeaves(world, mutablePos)) + { + this.setBlock(world, mutablePos, config.capProvider.getState(random, pos).setValue(HugeMushroomBlock.UP, Boolean.valueOf(y >= height - 1)).setValue(HugeMushroomBlock.WEST, Boolean.valueOf(x < -innerRadius)).setValue(HugeMushroomBlock.EAST, Boolean.valueOf(x > innerRadius)).setValue(HugeMushroomBlock.NORTH, Boolean.valueOf(z < -innerRadius)).setValue(HugeMushroomBlock.SOUTH, Boolean.valueOf(z > innerRadius))); + } + } + } + } + } + } + + @Override + protected boolean isValidPosition(IWorld world, BlockPos pos, int height, BlockPos.Mutable mutablePos, BigMushroomFeatureConfig config) + { + int i = pos.getY(); + if (i >= 1 && i + height + 1 < world.getMaxBuildHeight()) + { + Block groundBlock = world.getBlockState(pos.below()).getBlock(); + // Allow growth in the Nether + if (!isDirt(groundBlock) && groundBlock != Blocks.NETHERRACK && groundBlock != Blocks.SOUL_SAND) + { + return false; + } + else + { + for (int y = 0; y <= height; ++y) + { + int radius = this.getTreeRadiusForHeight(-1, -1, config.foliageRadius, y); + + for (int x = -radius; x <= radius; ++x) + { + for (int z = -radius; z <= radius; ++z) + { + BlockState obstructingState = world.getBlockState(mutablePos.set(pos).move(x, y, z)); + if (!obstructingState.isAir(world, mutablePos) && !obstructingState.is(BlockTags.LEAVES)) + { + return false; + } + } + } + } + + return true; + } + } + else + { + return false; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BOPConfiguredFeatures.java b/src/main/java/biomesoplenty/common/world/gen/feature/BOPConfiguredFeatures.java new file mode 100644 index 0000000000..a73db3aabb --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BOPConfiguredFeatures.java @@ -0,0 +1,353 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.biome.FeatureUtil; +import biomesoplenty.common.world.biome.BiomeFeatureHelper; +import biomesoplenty.common.world.gen.placement.BOPPlacements; +import biomesoplenty.core.BiomesOPlenty; +import com.google.common.collect.ImmutableList; +import net.minecraft.block.Blocks; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.WorldGenRegistries; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.blockplacer.SimpleBlockPlacer; +import net.minecraft.world.gen.blockstateprovider.SimpleBlockStateProvider; +import net.minecraft.world.gen.blockstateprovider.WeightedBlockStateProvider; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.placement.AtSurfaceWithExtraConfig; +import net.minecraft.world.gen.placement.ChanceConfig; +import net.minecraft.world.gen.placement.NoPlacementConfig; +import net.minecraft.world.gen.placement.Placement; +import net.minecraft.world.gen.placement.TopSolidRangeConfig; + +public class BOPConfiguredFeatures +{ + // Trees + public static final ConfiguredFeature ACACIA_BUSH = register("acacia_bush", BOPFeatures.ACACIA_BUSH.configured(Features.OAK.config())); + public static final ConfiguredFeature ACACIA_TWIGLET = register("acacia_twiglet", BOPFeatures.ACACIA_TWIGLET.configured(Features.OAK.config())); + public static final ConfiguredFeature ACACIA_TWIGLET_SMALL = register("acacia_twiglet_small", BOPFeatures.ACACIA_TWIGLET_SMALL.configured(Features.OAK.config())); + public static final ConfiguredFeature ACACIA_TWIGLET_TREE = register("acacia_twiglet_tree", BOPFeatures.ACACIA_TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature ALPS_SPRUCE_TREE = register("alps_spruce_tree", BOPFeatures.ALPS_SPRUCE_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_FLOWERING_OAK_TREE = register("big_flowering_oak_tree", BOPFeatures.BIG_FLOWERING_OAK_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_HELLBARK_TREE = register("big_hellbark_tree", BOPFeatures.BIG_HELLBARK_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_JACARANDA_TREE = register("big_jacaranda_tree", BOPFeatures.BIG_JACARANDA_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_MAGIC_TREE = register("big_magic_tree", BOPFeatures.BIG_MAGIC_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_MAPLE_TREE = register("big_maple_tree", BOPFeatures.BIG_MAPLE_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_OAK_TREE = register("big_oak_tree", BOPFeatures.BIG_OAK_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_ORANGE_AUTUMN_TREE = register("big_orange_autumn_tree", BOPFeatures.BIG_ORANGE_AUTUMN_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_ORIGIN_TREE = register("big_origin_tree", BOPFeatures.BIG_ORIGIN_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_PINK_CHERRY_TREE = register("big_pink_cherry_tree", BOPFeatures.BIG_PINK_CHERRY_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_RAINBOW_BIRCH_TREE = register("big_rainbow_birch_tree", BOPFeatures.BIG_RAINBOW_BIRCH_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_WHITE_CHERRY_TREE = register("big_white_cherry_tree", BOPFeatures.BIG_WHITE_CHERRY_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_YELLOW_AUTUMN_TREE = register("big_yellow_autumn_tree", BOPFeatures.BIG_YELLOW_AUTUMN_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BURNT_TREE = register("burnt_tree", BOPFeatures.BURNT_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BUSH = register("bush", BOPFeatures.BUSH.configured(Features.OAK.config())); + public static final ConfiguredFeature CYPRESS_TREE = register("cypress_tree", BOPFeatures.CYPRESS_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature CYPRESS_TREE_MEDIUM = register("cypress_tree_medium", BOPFeatures.CYPRESS_TREE_MEDIUM.configured(Features.OAK.config())); + public static final ConfiguredFeature DARK_OAK_POPLAR = register("dark_oak_poplar", BOPFeatures.DARK_OAK_POPLAR.configured(Features.OAK.config())); + public static final ConfiguredFeature DARK_OAK_TWIGLET_TREE = register("dark_oak_twiglet_tree", BOPFeatures.DARK_OAK_TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature DEAD_TREE = register("dead_tree", BOPFeatures.DEAD_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature DEAD_TREE_WASTELAND = register("dead_tree_wasteland", BOPFeatures.DEAD_TREE_WASTELAND.configured(Features.OAK.config())); + public static final ConfiguredFeature DEAD_TWIGLET_TREE = register("dead_twiglet_tree", BOPFeatures.DEAD_TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature DEAD_TWIGLET_TREE_SMALL = register("dead_twiglet_tree_small", BOPFeatures.DEAD_TWIGLET_TREE_SMALL.configured(Features.OAK.config())); + public static final ConfiguredFeature DEAD_TWIGLET_TREE_TALL = register("dead_twiglet_tree_tall", BOPFeatures.DEAD_TWIGLET_TREE_TALL.configured(Features.OAK.config())); + public static final ConfiguredFeature DYING_TREE = register("dying_tree", BOPFeatures.DYING_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature DYING_TREE_WASTELAND = register("dying_tree_wasteland", BOPFeatures.DYING_TREE_WASTELAND.configured(Features.OAK.config())); + public static final ConfiguredFeature FIR_TREE = register("fir_tree", BOPFeatures.FIR_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature FIR_TREE_LARGE = register("fir_tree_large", BOPFeatures.FIR_TREE_LARGE.configured(Features.OAK.config())); + public static final ConfiguredFeature FIR_TREE_SMALL = register("fir_tree_small", BOPFeatures.FIR_TREE_SMALL.configured(Features.OAK.config())); + public static final ConfiguredFeature FLOWERING_BUSH = register("flowering_bush", BOPFeatures.FLOWERING_BUSH.configured(Features.OAK.config())); + public static final ConfiguredFeature FLOWERING_OAK_TREE = register("flowering_oak_tree", BOPFeatures.FLOWERING_OAK_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature FLOWERING_OAK_TREE_BEES = register("flowering_oak_tree_bees", BOPFeatures.FLOWERING_OAK_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_005)))); + public static final ConfiguredFeature GIANT_TREE = register("giant_tree", BOPFeatures.GIANT_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature HELLBARK_TREE = register("hellbark_tree", BOPFeatures.HELLBARK_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature JACARANDA_TREE = register("jacaranda_tree", BOPFeatures.JACARANDA_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature JACARANDA_TREE_BEES = register("jacaranda_tree_bees", BOPFeatures.JACARANDA_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_0002)))); + public static final ConfiguredFeature JUNGLE_TWIGLET_TREE = register("jungle_twiglet_tree", BOPFeatures.JUNGLE_TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature MAGIC_TREE = register("magic_tree", BOPFeatures.MAGIC_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature MAHOGANY_TREE = register("mahogany_tree", BOPFeatures.MAHOGANY_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature MAPLE_TREE = register("maple_tree", BOPFeatures.MAPLE_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature MAPLE_TWIGLET_TREE = register("maple_twiglet_tree", BOPFeatures.MAPLE_TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature ORANGE_AUTUMN_TREE = register("orange_autumn_tree", BOPFeatures.ORANGE_AUTUMN_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature ORIGIN_TREE = register("origin_tree", BOPFeatures.ORIGIN_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature PALM_TREE = register("palm_tree", BOPFeatures.PALM_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature PINK_CHERRY_TREE_BEES = register("pink_cherry_tree_bees", BOPFeatures.PINK_CHERRY_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_002)))); + public static final ConfiguredFeature RAINBOW_BIRCH_TREE = register("rainbow_birch_tree", BOPFeatures.RAINBOW_BIRCH_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_005)))); + public static final ConfiguredFeature REDWOOD_TREE = register("redwood_tree", BOPFeatures.REDWOOD_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature REDWOOD_TREE_LARGE = register("redwood_tree_large", BOPFeatures.REDWOOD_TREE_LARGE.configured(Features.OAK.config())); + public static final ConfiguredFeature REDWOOD_TREE_MEDIUM = register("redwood_tree_medium", BOPFeatures.REDWOOD_TREE_MEDIUM.configured(Features.OAK.config())); + public static final ConfiguredFeature SMALL_DEAD_TREE = register("small_dead_tree", BOPFeatures.SMALL_DEAD_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature SPARSE_ACACIA_TREE = register("sparse_acacia_tree", BOPFeatures.SPARSE_ACACIA_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature SPARSE_OAK_TREE = register("sparse_oak_tree", BOPFeatures.SPARSE_OAK_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature SPRUCE_BUSH = register("spruce_bush", BOPFeatures.SPRUCE_BUSH.configured(Features.OAK.config())); + public static final ConfiguredFeature SPRUCE_POPLAR = register("spruce_poplar", BOPFeatures.SPRUCE_POPLAR.configured(Features.OAK.config())); + public static final ConfiguredFeature SPRUCE_TWIGLET_TREE = register("spruce_twiglet_tree", BOPFeatures.SPRUCE_TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature TALL_DEAD_TREE = register("tall_dead_tree", BOPFeatures.TALL_DEAD_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature TALL_SPRUCE_TREE = register("tall_spruce_tree", BOPFeatures.TALL_SPRUCE_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature TALL_SPRUCE_TREE_BEES = register("tall_spruce_tree_bees", BOPFeatures.TALL_SPRUCE_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_005)))); + public static final ConfiguredFeature TALL_SWAMP_TREE = register("tall_swamp_tree", BOPFeatures.TALL_SWAMP_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature TALL_TWIGLET_TREE = register("tall_twiglet_tree", BOPFeatures.TALL_TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature TALL_UMBRAN_TREE = register("tall_umbran_tree", BOPFeatures.TALL_UMBRAN_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature TWIGLET_TREE = register("twiglet_tree", BOPFeatures.TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature TWIGLET_TREE_VOLCANO = register("twiglet_tree_volcano", BOPFeatures.TWIGLET_TREE_VOLCANO.configured(Features.OAK.config())); + public static final ConfiguredFeature UMBRAN_TREE = register("umbran_tree", BOPFeatures.UMBRAN_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature WHITE_CHERRY_TREE_BEES = register("white_cherry_tree_bees", BOPFeatures.WHITE_CHERRY_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_002)))); + public static final ConfiguredFeature WILLOW_TREE = register("willow_tree", BOPFeatures.WILLOW_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature YELLOW_AUTUMN_TREE = register("yellow_autumn_tree", BOPFeatures.YELLOW_AUTUMN_TREE.configured(Features.OAK.config())); + + ///////////////////////////////////////////////////////////////////// + + // Biome Tree Listings + public static final ConfiguredFeature ALPS_FOOTHILLS_TREES = register("alps_foothills_trees", ALPS_SPRUCE_TREE.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.1F, 1)))); + public static final ConfiguredFeature BAMBOO_BLOSSOM_GROVE_TREES = register("bamboo_blossom_grove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(WHITE_CHERRY_TREE_BEES.weighted(0.05F), PINK_CHERRY_TREE_BEES.weighted(0.05F), BIG_WHITE_CHERRY_TREE.weighted(0.05F), BIG_PINK_CHERRY_TREE.weighted(0.05F), BIG_FLOWERING_OAK_TREE.weighted(0.1F), FLOWERING_BUSH.weighted(0.3F)), FLOWERING_OAK_TREE_BEES)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(7, 0.3F, 1)))); + public static final ConfiguredFeature BAYOU_TREES = register("bayou_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(CYPRESS_TREE_MEDIUM.weighted(0.3F)), CYPRESS_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.6F, 1)))); + public static final ConfiguredFeature BURNT_FOREST_TREES = register("burnt_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE.weighted(0.2F)), BURNT_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(4, 0.4F, 1)))); + public static final ConfiguredFeature CHERRY_BLOSSOM_GROVE_TREES = register("cherry_blossom_grove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(WHITE_CHERRY_TREE_BEES.weighted(0.1F), PINK_CHERRY_TREE_BEES.weighted(0.2F), BIG_WHITE_CHERRY_TREE.weighted(0.3F), FLOWERING_OAK_TREE_BEES.weighted(0.15F), FLOWERING_BUSH.weighted(0.3F)), BIG_PINK_CHERRY_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.3F, 1)))); + public static final ConfiguredFeature CONIFEROUS_FOREST_TREES = register("coniferous_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.33333334F)), FIR_TREE_LARGE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.1F, 1)))); + public static final ConfiguredFeature CONIFEROUS_LAKES_TREES = register("coniferous_lakes_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.1F)), FIR_TREE_SMALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.1F, 1)))); + public static final ConfiguredFeature DEAD_FOREST_TREES = register("dead_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DYING_TREE.weighted(0.2F), TALL_SPRUCE_TREE.weighted(0.3F), SMALL_DEAD_TREE.weighted(0.3F), DEAD_TWIGLET_TREE.weighted(0.2F)), Features.OAK)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.5F, 1)))); + public static final ConfiguredFeature DEEP_BAYOU_TREES = register("deep_bayou_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(CYPRESS_TREE.weighted(0.2F), CYPRESS_TREE_MEDIUM.weighted(0.5F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(26, 0.8F, 1)))); + public static final ConfiguredFeature DENSE_WOODLAND_TREES = register("dense_woodland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_OAK_TREE.weighted(0.5F)), Features.OAK)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(12, 0.3F, 1)))); + public static final ConfiguredFeature DRYLAND_TREES = register("dryland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TWIGLET_TREE.weighted(0.4F), SPARSE_OAK_TREE.weighted(0.2F)), ACACIA_TWIGLET_SMALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.4F, 1)))); + public static final ConfiguredFeature DRY_BONEYARD_TREES = register("dry_boneyard_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TWIGLET_TREE.weighted(0.4F), SPARSE_OAK_TREE.weighted(0.2F)), ACACIA_TWIGLET_SMALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.2F, 1)))); + public static final ConfiguredFeature FIR_CLEARING_TREES = register("fir_clearing_trees", FIR_TREE_SMALL.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.1F, 1)))); + public static final ConfiguredFeature FLOWER_MEADOW_TREES = register("flower_meadow_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_SPRUCE_TREE_BEES.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.3F, 1)))); + public static final ConfiguredFeature FUNGAL_JUNGLE_TREES = register("fungal_jungle_trees", BUSH.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.1F, 1)))); + public static final ConfiguredFeature GROVE_TREES = register("grove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPARSE_OAK_TREE.weighted(0.05F), DARK_OAK_POPLAR.weighted(0.2F), SPRUCE_POPLAR.weighted(0.4F), FLOWERING_BUSH.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.5F, 1)))); + public static final ConfiguredFeature GROVE_CLEARING_TREES = register("grove_clearing_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPARSE_OAK_TREE.weighted(0.1F), FLOWERING_BUSH.weighted(0.3F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.4F, 1)))); + public static final ConfiguredFeature JADE_CLIFFS_TREES = register("jade_cliffs_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_SPRUCE_TREE.weighted(0.075F), Features.PINE.weighted(0.025F)), SPRUCE_BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(35, 0.1F, 1)))); + public static final ConfiguredFeature LAVENDER_FIELD_TREES = register("lavender_field_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FLOWERING_OAK_TREE_BEES.weighted(0.2F), BIG_FLOWERING_OAK_TREE.weighted(0.1F), BIG_JACARANDA_TREE.weighted(0.1F)), JACARANDA_TREE_BEES)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig((int)0.85F, 0.2F, 1)))); + public static final ConfiguredFeature LAVENDER_FOREST_TREES = register("lavender_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FLOWERING_OAK_TREE_BEES.weighted(0.1F), BIG_FLOWERING_OAK_TREE.weighted(0.05F), BIG_JACARANDA_TREE.weighted(0.1F)), JACARANDA_TREE_BEES)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(7, 0.3F, 1)))); + public static final ConfiguredFeature LUSH_DESERT_TREES = register("lush_desert_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(ACACIA_BUSH.weighted(0.4F), SPARSE_ACACIA_TREE.weighted(0.2F)), ACACIA_TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.4F, 1)))); + public static final ConfiguredFeature MEADOW_TREES = register("meadow_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_SPRUCE_TREE_BEES.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(4, 0.1F, 1)))); + public static final ConfiguredFeature MEADOW_FOREST_TREES = register("meadow_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.25F)), TALL_SPRUCE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(8, 0.1F, 1)))); + public static final ConfiguredFeature MUSKEG_TREES = register("muskeg_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_DEAD_TREE.weighted(0.1F)), DEAD_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.3F, 1)))); + public static final ConfiguredFeature MYSTIC_GROVE_TREES = register("mystic_grove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_FLOWERING_OAK_TREE.weighted(0.15F), JACARANDA_TREE.weighted(0.25F), BIG_MAGIC_TREE.weighted(0.3F), GIANT_TREE.weighted(0.02F)), MAGIC_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.5F, 1)))); + public static final ConfiguredFeature MYSTIC_PLAINS_TREES = register("mystic_plains_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FLOWERING_OAK_TREE.weighted(0.1F), JACARANDA_TREE.weighted(0.25F)), MAGIC_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.2F, 1)))); + public static final ConfiguredFeature OMINOUS_WOODS_TREES = register("ominous_woods_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE.weighted(0.05F), DYING_TREE.weighted(0.15F), TALL_UMBRAN_TREE.weighted(0.7F)), UMBRAN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(7, 0.5F, 1)))); + public static final ConfiguredFeature OMINOUS_MIRE_TREES = register("ominous_mire_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE.weighted(0.1F), DYING_TREE.weighted(0.2F), UMBRAN_TREE.weighted(0.4F)), WILLOW_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.5F, 1)))); + public static final ConfiguredFeature ORCHARD_TREES = register("orchard_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_FLOWERING_OAK_TREE.weighted(0.1F)), FLOWERING_OAK_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.3F, 1)))); + public static final ConfiguredFeature ORIGIN_VALLEY_TREES = register("origin_valley_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_ORIGIN_TREE.weighted(0.1F)), ORIGIN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(BOPPlacements.ALPHA_TREE.configured(NoPlacementConfig.INSTANCE))); + public static final ConfiguredFeature PRAIRIE_TREES = register("prairie_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_OAK_TREE.weighted(0.1F)), SPARSE_OAK_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig((int)0.85F, 0.3F, 1)))); + public static final ConfiguredFeature RAINBOW_HILLS_TREES = register("rainbow_hills_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.2F), FIR_TREE_SMALL.weighted(0.1F), FIR_TREE.weighted(0.025F), BIG_RAINBOW_BIRCH_TREE.weighted(0.2F)), RAINBOW_BIRCH_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(15, 0.5F, 1)))); + public static final ConfiguredFeature RAINFOREST_TREES = register("rainforest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.JUNGLE_TREE.weighted(0.1F)), MAHOGANY_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(12, 0.3F, 1)))); + public static final ConfiguredFeature RAINFOREST_CLIFFS_TREES = register("rainforest_cliffs_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(JUNGLE_TWIGLET_TREE.weighted(0.4F), MAHOGANY_TREE.weighted(0.05F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(20, 0.4F, 1)))); + public static final ConfiguredFeature RAINFOREST_FLOODPLAIN_TREES = register("rainforest_floodplain_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPARSE_OAK_TREE.weighted(0.3F), BIG_OAK_TREE.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.3F, 1)))); + public static final ConfiguredFeature REDWOOD_FOREST_EDGE_TREES = register("redwood_forest_edge_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.OAK.weighted(0.2F), SPARSE_OAK_TREE.weighted(0.1F), REDWOOD_TREE.weighted(0.3F), REDWOOD_TREE_MEDIUM.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.3F, 1)))); + public static final ConfiguredFeature REDWOOD_FOREST_TREES = register("redwood_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.1F), REDWOOD_TREE.weighted(0.3F), REDWOOD_TREE_LARGE.weighted(0.5F)), REDWOOD_TREE_MEDIUM)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(18, 0.2F, 1)))); + public static final ConfiguredFeature REDWOOD_HILLS_TREES = register("redwood_hills_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.1F), REDWOOD_TREE_MEDIUM.weighted(0.3F)), REDWOOD_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(24, 0.2F, 1)))); + public static final ConfiguredFeature SEASONAL_FOREST_TREES = register("seasonal_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.OAK.weighted(0.05F), BIG_OAK_TREE.weighted(0.025F), MAPLE_TREE.weighted(0.2F), YELLOW_AUTUMN_TREE.weighted(0.3F), BIG_MAPLE_TREE.weighted(0.1F), BIG_YELLOW_AUTUMN_TREE.weighted(0.1F), BIG_ORANGE_AUTUMN_TREE.weighted(0.1F)), ORANGE_AUTUMN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.3F, 1)))); + public static final ConfiguredFeature SEASONAL_ORCHARD_TREES = register("seasonal_orchard_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_YELLOW_AUTUMN_TREE.weighted(0.05F)), YELLOW_AUTUMN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.5F, 1)))); + public static final ConfiguredFeature SEASONAL_PUMPKIN_PATCH_TREES = register("seasonal_pumpkin_patch_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.2F), ORANGE_AUTUMN_TREE.weighted(0.1F), BIG_ORANGE_AUTUMN_TREE.weighted(0.05F)), TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.5F, 1)))); + public static final ConfiguredFeature SHROOMY_WETLAND_TREES = register("shroomy_wetland_trees", DARK_OAK_TWIGLET_TREE.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.2F, 1)))); + public static final ConfiguredFeature SHRUBLAND_TREES = register("shrubland_trees", BUSH.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.05F, 1)))); + public static final ConfiguredFeature SHRUBLAND_HILLS_TREES = register("shrubland_hills_trees", BUSH.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.05F, 1)))); + public static final ConfiguredFeature SNOWY_CONIFEROUS_FOREST_TREES = register("snowy_coniferous_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.4F), MAPLE_TREE.weighted(0.1F)), FIR_TREE_LARGE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.1F, 1)))); + public static final ConfiguredFeature SNOWY_MAPLE_FOREST_TREES = register("snowy_maple_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.025F), FIR_TREE_SMALL.weighted(0.1F), BIG_MAPLE_TREE.weighted(0.3F)), MAPLE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.1F, 1)))); + public static final ConfiguredFeature TALL_DEAD_FOREST_TREES = register("tall_dead_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DYING_TREE.weighted(0.2F), DEAD_TWIGLET_TREE.weighted(0.3F), TALL_SPRUCE_TREE.weighted(0.1F), SMALL_DEAD_TREE.weighted(0.1F), Features.OAK.weighted(0.05F)), DEAD_TWIGLET_TREE_TALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(4, 0.6F, 1)))); + public static final ConfiguredFeature TROPICS_TREES = register("tropics_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(JUNGLE_TWIGLET_TREE.weighted(0.3F), FLOWERING_BUSH.weighted(0.1F)), PALM_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(11, 0.2F, 1)))); + public static final ConfiguredFeature TUNDRA_TREES = register("tundra_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TWIGLET_TREE_SMALL.weighted(0.1F)), MAPLE_TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.3F, 1)))); + public static final ConfiguredFeature TUNDRA_BOG_TREES = register("tundra_bog_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPRUCE_TWIGLET_TREE.weighted(0.4F), MAPLE_TWIGLET_TREE.weighted(0.6F)), TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(16, 0.4F, 1)))); + public static final ConfiguredFeature UNDERGROWTH_TREES = register("undergrowth_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_HELLBARK_TREE.weighted(0.1F)), HELLBARK_TREE)).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(35))); + public static final ConfiguredFeature VOLCANIC_PLAINS_TREES = register("volcanic_plains_trees", TWIGLET_TREE_VOLCANO.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.1F, 1)))); + public static final ConfiguredFeature WASTELAND_TREES = register("wasteland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE_WASTELAND.weighted(0.2F)), DYING_TREE_WASTELAND)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig((int)0.75F, 0.1F, 1)))); + public static final ConfiguredFeature WETLAND_TREES = register("wetland_trees", WILLOW_TREE.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.1F, 1)))); + public static final ConfiguredFeature WETLAND_FOREST_TREES = register("wetland_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(WILLOW_TREE.weighted(0.25F)), TALL_SPRUCE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(7, 0.1F, 1)))); + public static final ConfiguredFeature WOODED_SCRUBLAND_TREES = register("wooded_scrubland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPRUCE_TWIGLET_TREE.weighted(0.3F), TALL_TWIGLET_TREE.weighted(0.1F)), ACACIA_TWIGLET)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.5F, 1)))); + public static final ConfiguredFeature WOODLAND_TREES = register("woodland_trees", Features.OAK.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.1F, 1)))); + + // Biome Flower Listings + public static final ConfiguredFeature CHERRY_BLOSSOM_GROVE_FLOWERS = register("cherry_blossom_grove_flowers", Feature.FLOWER.configured(BOPFeatures.CHERRY_BLOSSOM_GROVE_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(5))); + public static final ConfiguredFeature CLOVER_PATCH_FLOWERS = register("clover_patch_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.AZURE_BLUET.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(16).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(20))); + public static final ConfiguredFeature CONIFEROUS_FOREST_FLOWERS = register("coniferous_forest_flowers", Feature.FLOWER.configured(BOPFeatures.CONIFEROUS_FOREST_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(4))); + public static final ConfiguredFeature LUSH_DESERT_FLOWERS = register("lush_desert_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(BOPBlocks.wildflower.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6))); + public static final ConfiguredFeature FLOWER_MEADOW_FLOWERS = register("flower_meadow_flowers", Feature.FLOWER.configured(BOPFeatures.FLOWER_MEADOW_FLOWER_CONFIG).decorated(Features.Placements.HEIGHTMAP_SQUARE).count(4)); + public static final ConfiguredFeature GROVE_FLOWERS = register("grove_flowers", Feature.FLOWER.configured(BOPFeatures.EXTENDED_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6))); + public static final ConfiguredFeature LAVENDER_FLOWERS = register("lavender_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(BOPBlocks.lavender.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.HEIGHTMAP_SQUARE).count(15)); + public static final ConfiguredFeature MEADOW_FLOWERS = register("meadow_flowers", Feature.FLOWER.configured(BOPFeatures.MEADOW_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6))); + public static final ConfiguredFeature MEADOW_FLOWERS_2 = register("meadow_flowers_2", Feature.FLOWER.configured(BOPFeatures.FLOWER_MEADOW_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3))); + public static final ConfiguredFeature MOOR_FLOWERS = register("moor_flowers", Feature.FLOWER.configured(BOPFeatures.MOOR_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(5))); + public static final ConfiguredFeature MOOR_FLOWERS_2 = register("moor_flowers_2", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(BOPBlocks.violet.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(50))); + public static final ConfiguredFeature MYSTIC_GROVE_FLOWERS = register("mystic_grove_flowers", Feature.FLOWER.configured(BOPFeatures.MYSTIC_GROVE_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(18))); + public static final ConfiguredFeature MYSTIC_PLAINS_FLOWERS = register("mystic_plains_flowers", Feature.FLOWER.configured(BOPFeatures.MYSTIC_GROVE_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(50))); + public static final ConfiguredFeature OMINOUS_WOODS_FLOWERS = register("ominous_woods_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.WITHER_ROSE.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3))); + public static final ConfiguredFeature ORCHARD_FLOWERS = register("orchard_flowers", Feature.FLOWER.configured(BOPFeatures.EXTENDED_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(15))); + public static final ConfiguredFeature ORIGIN_FLOWERS = register("origin_flowers", Feature.FLOWER.configured(BOPFeatures.ORIGIN_VALLEY_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(4))); + public static final ConfiguredFeature POPPY_FLOWERS = register("poppy_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.POPPY.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.HEIGHTMAP_SQUARE).count(15)); + public static final ConfiguredFeature RAINBOW_HILLS_FLOWERS = register("rainbow_hills_flowers", Feature.FLOWER.configured(BOPFeatures.RAINBOW_HILLS_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(25))); + public static final ConfiguredFeature RAINFOREST_FLOWERS = register("rainforest_flowers", Feature.FLOWER.configured(BOPFeatures.RAINFOREST_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(5))); + public static final ConfiguredFeature SHRUBLAND_FLOWERS = register("shrubland_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.ALLIUM.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3))); + public static final ConfiguredFeature SNOWY_FLOWERS = register("snowy_flowers", Feature.FLOWER.configured(BOPFeatures.SNOWY_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3))); + public static final ConfiguredFeature TROPIC_FLOWERS = register("tropic_flowers", Feature.FLOWER.configured(BOPFeatures.TROPICS_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(15))); + public static final ConfiguredFeature UNDERGROWTH_FLOWERS = register("undergrowth_flowers", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.burning_blossom.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(8))); + public static final ConfiguredFeature WASTELAND_FLOWERS = register("wasteland_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(BOPBlocks.wilted_lily.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(1))); + public static final ConfiguredFeature WETLAND_FLOWERS = register("wetland_flowers", Feature.FLOWER.configured(BOPFeatures.WETLAND_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3))); + public static final ConfiguredFeature SCRUBLAND_FLOWERS = register("scrubland_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(BOPBlocks.wildflower.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(2))); + + ///////////////////////////////////////////////////////////////////// + + // Foliage + public static final ConfiguredFeature STANDARD_GRASS_1 = register("standard_grass_1", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); + public static final ConfiguredFeature STANDARD_GRASS_3 = register("standard_grass_3", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature STANDARD_GRASS_6 = register("standard_grass_6", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(6))); + public static final ConfiguredFeature STANDARD_GRASS_12 = register("standard_grass_12", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(12))); + public static final ConfiguredFeature STANDARD_GRASS_24 = register("standard_grass_24", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(24))); + + public static final ConfiguredFeature FERN_GRASS_4 = register("fern_grass_4", BOPFeatures.FERN_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(4))); + public static final ConfiguredFeature FERN_GRASS_8 = register("fern_grass_8", BOPFeatures.FERN_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(8))); + public static final ConfiguredFeature FERN_GRASS_16 = register("fern_grass_16", BOPFeatures.FERN_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(16))); + + public static final ConfiguredFeature FERN_24 = register("fern_24", BOPFeatures.FERN.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(24))); + + public static final ConfiguredFeature WASTELAND_GRASS_1 = register("wasteland_grass_1", BOPFeatures.WASTELAND_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); + public static final ConfiguredFeature WASTELAND_GRASS_2 = register("wasteland_grass_2", BOPFeatures.WASTELAND_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(2))); + + public static final ConfiguredFeature BUSH_5 = register("bush_5", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.bush.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(5))); + public static final ConfiguredFeature BUSH_10 = register("bush_10", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.bush.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature BUSH_15 = register("bush_15", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.bush.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(15))); + public static final ConfiguredFeature BUSH_50 = register("bush_50", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.bush.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(50))); + + public static final ConfiguredFeature SPROUTS_5 = register("sprouts_5", BOPFeatures.RANDOM_PATCH_ABOVE_GROUND.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(5))); + public static final ConfiguredFeature SPROUTS_10 = register("sprouts_10", BOPFeatures.RANDOM_PATCH_ABOVE_GROUND.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature SPROUTS_15 = register("sprouts_15", BOPFeatures.RANDOM_PATCH_ABOVE_GROUND.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(15))); + public static final ConfiguredFeature SPROUTS_25 = register("sprouts_25", BOPFeatures.RANDOM_PATCH_ABOVE_GROUND.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(25))); + public static final ConfiguredFeature SPROUTS_50 = register("sprouts_50", BOPFeatures.RANDOM_PATCH_ABOVE_GROUND.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(50))); + public static final ConfiguredFeature SPROUTS_75 = register("sprouts_75", BOPFeatures.RANDOM_PATCH_ABOVE_GROUND.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(75))); + public static final ConfiguredFeature SPROUTS_200 = register("sprouts_200", BOPFeatures.RANDOM_PATCH_ABOVE_GROUND.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(200))); + public static final ConfiguredFeature SPROUTS_UNDERGROWTH = register("sprouts_undergrowth", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(75))); + + public static final ConfiguredFeature CLOVER_3 = register("clover_3", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.clover.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature CLOVER_6 = register("clover_6", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.clover.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(6))); + public static final ConfiguredFeature CLOVER_250 = register("clover_250", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.clover.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(FeatureUtil.denseCount(250))); + + public static final ConfiguredFeature DUNE_GRASS_128 = register("dune_grass_128", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.dune_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(128))); + + public static final ConfiguredFeature DESERT_GRASS_10 = register("desert_grass_10", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.desert_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature DESERT_GRASS_20 = register("desert_grass_20", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.desert_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(20))); + + public static final ConfiguredFeature DEAD_GRASS_2 = register("dead_grass_2", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.dead_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(2))); + public static final ConfiguredFeature DEAD_GRASS_5 = register("dead_grass_5", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.dead_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(5))); + public static final ConfiguredFeature DEAD_GRASS_25 = register("dead_grass_25", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.dead_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(25))); + public static final ConfiguredFeature DEAD_GRASS_45 = register("dead_grass_45", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.dead_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(45))); + + public static final ConfiguredFeature TALL_GRASS_6 = register("tall_grass_6", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.TALL_GRASS.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6))); + public static final ConfiguredFeature TALL_GRASS_12 = register("tall_grass_12", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.TALL_GRASS.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(12))); + public static final ConfiguredFeature TALL_GRASS_24 = register("tall_grass_24", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.TALL_GRASS.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(24))); + public static final ConfiguredFeature TALL_GRASS_64 = register("tall_grass_64", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.TALL_GRASS.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(64))); + public static final ConfiguredFeature TALL_GRASS_250 = register("tall_grass_250", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.TALL_GRASS.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(FeatureUtil.denseCount(250))); + + public static final ConfiguredFeature LARGE_FERN_7 = register("large_fern_7", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.LARGE_FERN.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(7))); + public static final ConfiguredFeature LARGE_FERN_14 = register("large_fern_14", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.LARGE_FERN.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(14))); + public static final ConfiguredFeature LARGE_FERN_25 = register("large_fern_25", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.LARGE_FERN.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(25))); + + ///////////////////////////////////////////////////////////////////// + + // Plants + public static final ConfiguredFeature CATTAIL_6 = register("cattail_6", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(BOPBlocks.cattail.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6))); + public static final ConfiguredFeature CATTAIL_12 = register("cattail_12", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(BOPBlocks.cattail.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(12))); + public static final ConfiguredFeature CATTAIL_24 = register("cattail_24", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(BOPBlocks.cattail.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(24))); + + public static final ConfiguredFeature TOADSTOOL_NORMAL = register("toadstool_normal", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.toadstool.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); + public static final ConfiguredFeature TOADSTOOL_EXTRA = register("toadstool_extra", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.toadstool.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature GLOWSHROOM_UNCOMMON = register("glowshroom_uncommon", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.glowshroom.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(7))); + public static final ConfiguredFeature GLOWSHROOM_NORMAL = register("glowshroom_normal", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.glowshroom.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(20))); + public static final ConfiguredFeature BARLEY = register("barley", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleProjects(BOPBlocks.barley.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_SQUARE).count(15)); + + // Water Plants + public static final ConfiguredFeature REED_5 = register("reed_5", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleWater(BOPBlocks.reed.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(5))); + public static final ConfiguredFeature REED_10 = register("reed_10", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleWater(BOPBlocks.reed.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature REED_100 = register("reed_100", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleWater(BOPBlocks.reed.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(100))); + + public static final ConfiguredFeature WATERGRASS_5 = register("watergrass_5", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleWater(BOPBlocks.watergrass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(5))); + public static final ConfiguredFeature WATERGRASS_10 = register("watergrass_10", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleWater(BOPBlocks.watergrass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature WATERGRASS_25 = register("watergrass_25", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleWater(BOPBlocks.watergrass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(25))); + public static final ConfiguredFeature WATERGRASS_50 = register("watergrass_50", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleWater(BOPBlocks.watergrass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(50))); + public static final ConfiguredFeature WATERGRASS_250 = register("watergrass_200", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleWater(BOPBlocks.watergrass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(250))); + + public static final ConfiguredFeature MANGROVE_ROOTS = register("mangrove_roots", BOPFeatures.MANGROVE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(125))); + + public static final ConfiguredFeature LILY_PAD_5 = register("lily_pad_5", Feature.RANDOM_PATCH.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.LILY_PAD.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(10).build()).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(5)); + public static final ConfiguredFeature LILY_PAD_10 = register("lily_pad_10", Feature.RANDOM_PATCH.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.LILY_PAD.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(10).build()).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(10)); + public static final ConfiguredFeature LILY_PAD_15 = register("lily_pad_15", Feature.RANDOM_PATCH.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.LILY_PAD.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(10).build()).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(15)); + + // Large Flowers + public static final ConfiguredFeature PEONY_1 = register("peony_1", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.PEONY.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(1))); + public static final ConfiguredFeature SUNFLOWER_1 = register("sunflower_1", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.SUNFLOWER.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(1))); + + public static final ConfiguredFeature LILAC_1 = register("lilac_1", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.LILAC.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(1))); + public static final ConfiguredFeature LILAC_2 = register("lilac_2", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.LILAC.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(2))); + public static final ConfiguredFeature LILAC_4 = register("lilac_4", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.LILAC.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(4))); + + public static final ConfiguredFeature ROSE_BUSH_1 = register("rose_bush_1", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.ROSE_BUSH.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(1))); + public static final ConfiguredFeature ROSE_BUSH_2 = register("rose_bush_2", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.ROSE_BUSH.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(2))); + public static final ConfiguredFeature ROSE_BUSH_4 = register("rose_bush_4", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.ROSE_BUSH.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(4))); + public static final ConfiguredFeature ROSE_BUSH_15 = register("rose_bush_15", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.ROSE_BUSH.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(15))); + + public static final ConfiguredFeature GOLDENROD_2 = register("goldenrod_2", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(BOPBlocks.goldenrod.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(2))); + public static final ConfiguredFeature GOLDENROD_10 = register("goldenrod_10", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(BOPBlocks.goldenrod.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(10))); + + public static final ConfiguredFeature BLUE_HYDRANGEA_1 = register("blue_hydrangea_1", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(BOPBlocks.blue_hydrangea.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(1))); + public static final ConfiguredFeature BLUE_HYDRANGEA_4 = register("blue_hydrangea_4", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(BOPBlocks.blue_hydrangea.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(4))); + + ///////////////////////////////////////////////////////////////////// + + // Features + public static final ConfiguredFeature BIG_PUMPKIN = register("big_pumpkin", BOPFeatures.BIG_PUMPKIN.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature BLACK_SAND_DISK = register("black_sand_disk", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.black_sand.defaultBlockState(), FeatureSpread.of(2, 4), 2, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(2)); + public static final ConfiguredFeature BLACK_SAND_SPLATTER = register("black_sand_splatter", BOPFeatures.BLACK_SAND_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(25))); + public static final ConfiguredFeature BONE_SPINE = register("bone_spine", BOPFeatures.BONE_SPINE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature BRAMBLE = register("bramble", BOPFeatures.BRAMBLE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature BRAMBLE_EXTRA = register("bramble_extra", BOPFeatures.BRAMBLE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature CRAG_SPLATTER = register("crag_splatter", BOPFeatures.CRAG_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.decorated(FeatureUtil.denseCount(300)))); + public static final ConfiguredFeature DEEP_BAYOU_VINES = register("deep_bayou_vines", BOPFeatures.DEEP_BAYOU_VINES.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(128)); + public static final ConfiguredFeature DIORITE_DISK = register("diorite_disk", Feature.DISK.configured(new SphereReplaceConfig(Blocks.DIORITE.defaultBlockState(), FeatureSpread.of(3, 4), 2, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState(), Blocks.PODZOL.defaultBlockState(), Blocks.SAND.defaultBlockState(), Blocks.GRAVEL.defaultBlockState(), Blocks.GRANITE.defaultBlockState(), Blocks.ANDESITE.defaultBlockState(), Blocks.DIORITE.defaultBlockState(), Blocks.COAL_ORE.defaultBlockState(), Blocks.IRON_ORE.defaultBlockState(), Blocks.STONE.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(14)); + public static final ConfiguredFeature FLESH_TENDON = register("flesh_tendon", BOPFeatures.FLESH_TENDON.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(65))); + public static final ConfiguredFeature GRAVEL_DISK_EXTRA = register("gravel_disk_extra", Feature.DISK.configured(new SphereReplaceConfig(Blocks.GRAVEL.defaultBlockState(), FeatureSpread.of(4, 2), 1, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(6)); + public static final ConfiguredFeature HUGE_BROWN_MUSHROOM_EXTRA = register("huge_brown_mushroom_extra", Features.HUGE_BROWN_MUSHROOM.decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(21))); + public static final ConfiguredFeature HUGE_CLOVER = register("huge_clover", BOPFeatures.HUGE_CLOVER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(25))); + public static final ConfiguredFeature HUGE_GLOWSHROOM = register("huge_glowshroom", BOPFeatures.HUGE_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(6))); + public static final ConfiguredFeature HUGE_RED_MUSHROOM_EXTRA = register("huge_red_mushroom_extra", Features.HUGE_RED_MUSHROOM.decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(6))); + public static final ConfiguredFeature HUGE_TOADSTOOL = register("huge_toadstool", BOPFeatures.HUGE_TOADSTOOL.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); + public static final ConfiguredFeature LARGE_CRYSTAL = register("large_crystal", BOPFeatures.LARGE_CRYSTAL.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(200))); + public static final ConfiguredFeature LAVA_LAKE_COMMON = register("lava_lake_common", Feature.LAKE.configured(new BlockStateFeatureConfig(Blocks.LAVA.defaultBlockState())).decorated(Placement.LAVA_LAKE.configured(new ChanceConfig(10)))); + public static final ConfiguredFeature MUD_DISK = register("mud_disk", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.mud.defaultBlockState(), FeatureSpread.of(4, 2), 1, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(5)); + public static final ConfiguredFeature MYCELIUM_SPLATTER = register("mycelium_splatter", BOPFeatures.MYCELIUM_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(14))); + public static final ConfiguredFeature NETHER_BRAMBLE = register("nether_bramble", BOPFeatures.BRAMBLE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(50))); + public static final ConfiguredFeature NETHER_VINES = register("nether_vines", BOPFeatures.NETHER_VINES.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(150))); + public static final ConfiguredFeature OBSIDIAN_SPLATTER = register("obsidian_splatter", BOPFeatures.OBSIDIAN_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(12))); + public static final ConfiguredFeature ORANGE_SAND_DISK = register("orange_sand_disk", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.orange_sand.defaultBlockState(), FeatureSpread.of(2, 4), 2, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(3)); + public static final ConfiguredFeature PODZOL_SPLATTER = register("podzol_splatter", BOPFeatures.PODZOL_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(22))); + public static final ConfiguredFeature PUMPKIN_PATCH = register("pumpkin_patch", BOPFeatures.PUMPKIN_PATCH.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(35))); + public static final ConfiguredFeature RAINFOREST_CLIFFS_VINES = register("overgrown_cliffs_vines", BOPFeatures.RAINFOREST_CLIFFS_VINES.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(128)); + public static final ConfiguredFeature SCATTERED_ROCKS = register("scattered_rocks", BOPFeatures.SCATTERED_ROCKS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature SCRUB_EXTRA = register("scrub_extra", BOPFeatures.SCRUB.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(35))); + public static final ConfiguredFeature SCRUB_NORMAL = register("scrub_normal", BOPFeatures.SCRUB.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature SHORT_BAMBOO_10 = register("short_bamboo_10", BOPFeatures.SHORT_BAMBOO.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature SHORT_BAMBOO_5 = register("short_bamboo_5", BOPFeatures.SHORT_BAMBOO.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(5))); + public static final ConfiguredFeature SMALL_BROWN_MUSHROOM = register("small_brown_mushroom", BOPFeatures.SMALL_BROWN_MUSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature SMALL_CRYSTAL = register("small_crystal", BOPFeatures.SMALL_CRYSTAL.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(40))); + public static final ConfiguredFeature SMALL_GLOWSHROOM_UNCOMMON = register("small_glowshroom_uncommon", BOPFeatures.SMALL_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); + public static final ConfiguredFeature SMALL_GLOWSHROOM = register("small_glowshroom", BOPFeatures.SMALL_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature SMALL_RED_MUSHROOM = register("small_red_mushroom", BOPFeatures.SMALL_RED_MUSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); + public static final ConfiguredFeature SMALL_TOADSTOOL = register("small_toadstool", BOPFeatures.SMALL_TOADSTOOL.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); + public static final ConfiguredFeature VOLCANO_GRASS_SPLATTER = register("volcano_grass_splatter", BOPFeatures.GRASS_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(25))); + public static final ConfiguredFeature VOLCANO_SPRING = register("volcano_spring", Feature.SPRING.configured(BOPFeatures.VOLCANO_SPRING_CONFIG).decorated(Placement.RANGE_VERY_BIASED.configured(new TopSolidRangeConfig(8, 16, 256))).squared().count(75)); + public static final ConfiguredFeature WATER_LAKE_COMMON = register("water_lake_common", Feature.LAKE.configured(new BlockStateFeatureConfig(Blocks.WATER.defaultBlockState())).decorated(Placement.WATER_LAKE.configured(new ChanceConfig(1)))); + public static final ConfiguredFeature WATER_LAKE_UNCOMMON = register("water_lake_uncommon", Feature.LAKE.configured(new BlockStateFeatureConfig(Blocks.WATER.defaultBlockState())).decorated(Placement.WATER_LAKE.configured(new ChanceConfig(3)))); + public static final ConfiguredFeature WATER_SPRING_EXTRA = register("water_spring_extra", Feature.SPRING.configured(BOPFeatures.WATER_SPRING_EXTRA_CONFIG).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(128)); + public static final ConfiguredFeature WHITE_SAND_DISK = register("white_sand_disk", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.white_sand.defaultBlockState(), FeatureSpread.of(2, 4), 2, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(2)); + public static final ConfiguredFeature WHITE_SAND_DISK_EXTRA = register("white_sand_disk_extra", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.white_sand.defaultBlockState(), FeatureSpread.of(4, 2), 1, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(8)); + + private static ConfiguredFeature register(String key, ConfiguredFeature feature) + { + return Registry.register(WorldGenRegistries.CONFIGURED_FEATURE, new ResourceLocation(BiomesOPlenty.MOD_ID, key), feature); + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BOPFeatures.java b/src/main/java/biomesoplenty/common/world/gen/feature/BOPFeatures.java new file mode 100644 index 0000000000..690713ae45 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BOPFeatures.java @@ -0,0 +1,175 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.world.gen.feature.tree.*; +import biomesoplenty.core.BiomesOPlenty; +import com.google.common.collect.ImmutableSet; +import net.minecraft.block.Blocks; +import net.minecraft.block.LeavesBlock; +import net.minecraft.block.SaplingBlock; +import net.minecraft.fluid.Fluids; +import net.minecraft.util.Direction; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.gen.blockplacer.SimpleBlockPlacer; +import net.minecraft.world.gen.blockstateprovider.WeightedBlockStateProvider; +import net.minecraft.world.gen.feature.*; +import net.minecraftforge.registries.ForgeRegistries; + +public class BOPFeatures +{ + //Standard Trees + public static final Feature ORIGIN_TREE = register("origin_tree", new BasicTreeFeature.Builder().leaves(BOPBlocks.origin_leaves.defaultBlockState()).minHeight(5).maxHeight(8).create()); + public static final Feature FLOWERING_OAK_TREE = register("flowering_oak_tree", new BasicTreeFeature.Builder().altLeaves(BOPBlocks.flowering_oak_leaves.defaultBlockState()).create()); + public static final Feature RAINBOW_BIRCH_TREE = register("rainbow_birch_tree", new BasicTreeFeature.Builder().log(Blocks.BIRCH_LOG.defaultBlockState()).leaves(BOPBlocks.rainbow_birch_leaves.defaultBlockState()).create()); + public static final Feature YELLOW_AUTUMN_TREE = register("yellow_autumn_tree", new BasicTreeFeature.Builder().log(Blocks.BIRCH_LOG.defaultBlockState()).leaves(BOPBlocks.yellow_autumn_leaves.defaultBlockState()).minHeight(5).maxHeight(8).create()); + public static final Feature ORANGE_AUTUMN_TREE = register("orange_autumn_tree", new BasicTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(BOPBlocks.orange_autumn_leaves.defaultBlockState()).minHeight(5).maxHeight(8).create()); + public static final Feature MAPLE_TREE = register("maple_tree", new BasicTreeFeature.Builder().leaves(BOPBlocks.maple_leaves.defaultBlockState()).minHeight(5).maxHeight(10).create()); + public static final Feature PINK_CHERRY_TREE = register("pink_cherry_tree", new BasicTreeFeature.Builder().log(BOPBlocks.cherry_log.defaultBlockState()).leaves(BOPBlocks.pink_cherry_leaves.defaultBlockState()).create()); + public static final Feature WHITE_CHERRY_TREE = register("white_cherry_tree", new BasicTreeFeature.Builder().log(BOPBlocks.cherry_log.defaultBlockState()).leaves(BOPBlocks.white_cherry_leaves.defaultBlockState()).create()); + public static final Feature JACARANDA_TREE = register("jacaranda_tree", new BasicTreeFeature.Builder().log(BOPBlocks.jacaranda_log.defaultBlockState()).leaves(BOPBlocks.jacaranda_leaves.defaultBlockState()).create()); + public static final Feature SMALL_DEAD_TREE = register("small_dead_tree", new BasicTreeFeature.Builder().log(BOPBlocks.dead_log.defaultBlockState()).leaves(BOPBlocks.dead_leaves.defaultBlockState()).create()); + public static final Feature MAGIC_TREE = register("magic_tree", new PoplarTreeFeature.Builder().log(BOPBlocks.magic_log.defaultBlockState()).leaves(BOPBlocks.magic_leaves.defaultBlockState()).minHeight(8).maxHeight(12).create()); + + //Big Trees + public static final Feature BIG_OAK_TREE = register("big_oak_tree", new BigTreeFeature.Builder().create()); + public static final Feature BIG_ORIGIN_TREE = register("big_origin_tree", new BigTreeFeature.Builder().leaves(BOPBlocks.origin_leaves.defaultBlockState()).create()); + public static final Feature BIG_FLOWERING_OAK_TREE = register("big_flowering_oak_tree", new BigTreeFeature.Builder().altLeaves(BOPBlocks.flowering_oak_leaves.defaultBlockState()).create()); + public static final Feature BIG_RAINBOW_BIRCH_TREE = register("big_rainbow_birch_tree", new BigTreeFeature.Builder().log(Blocks.BIRCH_LOG.defaultBlockState()).leaves(BOPBlocks.rainbow_birch_leaves.defaultBlockState()).create()); + public static final Feature BIG_YELLOW_AUTUMN_TREE = register("big_yellow_autumn_tree", new BigTreeFeature.Builder().log(Blocks.BIRCH_LOG.defaultBlockState()).leaves(BOPBlocks.yellow_autumn_leaves.defaultBlockState()).create()); + public static final Feature BIG_ORANGE_AUTUMN_TREE = register("big_orange_autumn_tree", new BigTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(BOPBlocks.orange_autumn_leaves.defaultBlockState()).create()); + public static final Feature BIG_MAPLE_TREE = register("big_maple_tree", new BigTreeFeature.Builder().leaves(BOPBlocks.maple_leaves.defaultBlockState()).create()); + public static final Feature BIG_PINK_CHERRY_TREE = register("big_pink_cherry_tree", new BigTreeFeature.Builder().log(BOPBlocks.cherry_log.defaultBlockState()).leaves(BOPBlocks.pink_cherry_leaves.defaultBlockState()).create()); + public static final Feature BIG_WHITE_CHERRY_TREE = register("big_white_cherry_tree", new BigTreeFeature.Builder().log(BOPBlocks.cherry_log.defaultBlockState()).leaves(BOPBlocks.white_cherry_leaves.defaultBlockState()).create()); + public static final Feature BIG_JACARANDA_TREE = register("big_jacaranda_tree", new BigTreeFeature.Builder().log(BOPBlocks.jacaranda_log.defaultBlockState()).leaves(BOPBlocks.jacaranda_leaves.defaultBlockState()).create()); + public static final Feature BIG_MAGIC_TREE = register("big_magic_tree", new PoplarTreeFeature.Builder().log(BOPBlocks.magic_log.defaultBlockState()).leaves(BOPBlocks.magic_leaves.defaultBlockState()).minHeight(16).maxHeight(20).create()); + + public static final Feature GIANT_TREE = register("giant_tree", new BigTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)).minHeight(15).maxHeight(20).trunkWidth(4).create()); + + //Conifer Trees + public static final Feature TALL_SPRUCE_TREE = register("tall_spruce_tree", new TaigaTreeFeature.Builder().log(Blocks.SPRUCE_LOG.defaultBlockState()).leaves(Blocks.SPRUCE_LEAVES.defaultBlockState()).maxHeight(13).create()); + public static final Feature ALPS_SPRUCE_TREE = register("alps_spruce_tree", new TaigaTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.STONE).log(Blocks.SPRUCE_LOG.defaultBlockState()).leaves(Blocks.SPRUCE_LEAVES.defaultBlockState()).maxHeight(13).create()); + public static final Feature FIR_TREE_SMALL = register("fir_tree_small", new TaigaTreeFeature.Builder().log(BOPBlocks.fir_log.defaultBlockState()).leaves(BOPBlocks.fir_leaves.defaultBlockState()).minHeight(5).maxHeight(11).create()); + public static final Feature FIR_TREE = register("fir_tree", new TaigaTreeFeature.Builder().log(BOPBlocks.fir_log.defaultBlockState()).leaves(BOPBlocks.fir_leaves.defaultBlockState()).minHeight(5).maxHeight(28).create()); + public static final Feature FIR_TREE_LARGE = register("fir_tree_large", new TaigaTreeFeature.Builder().log(BOPBlocks.fir_log.defaultBlockState()).leaves(BOPBlocks.fir_leaves.defaultBlockState()).minHeight(20).maxHeight(40).trunkWidth(2).create()); + public static final Feature UMBRAN_TREE = register("umbran_tree", new TaigaTreeFeature.Builder().log(BOPBlocks.umbran_log.defaultBlockState()).leaves(BOPBlocks.umbran_leaves.defaultBlockState()).maxHeight(20).create()); + public static final Feature TALL_UMBRAN_TREE = register("tall_umbran_tree", new TaigaTreeFeature.Builder().log(BOPBlocks.umbran_log.defaultBlockState()).leaves(BOPBlocks.umbran_leaves.defaultBlockState()).minHeight(20).maxHeight(30).trunkWidth(2).create()); + + //Poplar Trees + public static final Feature SPRUCE_POPLAR = register("spruce_poplar", new PoplarTreeFeature.Builder().log(Blocks.SPRUCE_LOG.defaultBlockState()).leaves(Blocks.SPRUCE_LEAVES.defaultBlockState()).create()); + public static final Feature DARK_OAK_POPLAR = register("dark_oak_poplar", new PoplarTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState()).create()); + + //Swamp Trees + public static final Feature CYPRESS_TREE = register("cypress_tree", new CypressTreeFeature.Builder().create()); + public static final Feature CYPRESS_TREE_MEDIUM = register("cypress_tree_medium", new CypressTreeFeature.Builder().minHeight(15).maxHeight(25).trunkWidth(2).create()); + public static final Feature TALL_SWAMP_TREE = register("tall_swamp_tree", new BasicTreeFeature.Builder().vine(Blocks.VINE.defaultBlockState()).minHeight(8).maxHeight(12).maxLeavesRadius(2).leavesOffset(0).create()); + public static final Feature WILLOW_TREE = register("willow_tree", new BasicTreeFeature.Builder().log(BOPBlocks.willow_log.defaultBlockState()).leaves(BOPBlocks.willow_leaves.defaultBlockState()).vine(BOPBlocks.willow_vine.defaultBlockState()).minHeight(6).maxHeight(10).maxLeavesRadius(2).leavesOffset(0).create()); + + //Sparse Trees + public static final Feature SPARSE_ACACIA_TREE = register("sparse_acacia_tree", new BigTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.orange_sand).log(Blocks.ACACIA_LOG.defaultBlockState()).leaves(Blocks.ACACIA_LEAVES.defaultBlockState()).maxHeight(8).foliageHeight(1).create()); + public static final Feature SPARSE_OAK_TREE = register("sparse_oak_tree", new BigTreeFeature.Builder().maxHeight(10).foliageHeight(2).create()); + public static final Feature DYING_TREE = register("dying_tree", new BigTreeFeature.Builder().log(BOPBlocks.dead_log.defaultBlockState()).leaves(BOPBlocks.dead_leaves.defaultBlockState()).maxHeight(10).foliageHeight(2).create()); + public static final Feature DYING_TREE_WASTELAND = register("dying_tree_wasteland", new BigTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.dried_salt).log(BOPBlocks.dead_log.defaultBlockState()).leaves(BOPBlocks.dead_leaves.defaultBlockState()).maxHeight(10).foliageHeight(1).create()); + + //Bushes/Twiglets + public static final Feature BUSH = register("bush", new BushTreeFeature.Builder().create()); + public static final Feature SPRUCE_BUSH = register("spruce_bush", new BushTreeFeature.Builder().log(Blocks.SPRUCE_LOG.defaultBlockState()).leaves(Blocks.SPRUCE_LEAVES.defaultBlockState()).create()); + public static final Feature ACACIA_BUSH = register("acacia_bush", new BushTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.orange_sand).log(Blocks.ACACIA_LOG.defaultBlockState()).leaves(Blocks.ACACIA_LEAVES.defaultBlockState()).create()); + public static final Feature FLOWERING_BUSH = register("flowering_bush", new BushTreeFeature.Builder().altLeaves(BOPBlocks.flowering_oak_leaves.defaultBlockState()).create()); + public static final Feature HELLBARK_TREE = register("hellbark_tree", new BushTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.NETHERRACK || world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING)).log(BOPBlocks.hellbark_log.defaultBlockState()).leaves(BOPBlocks.hellbark_leaves.defaultBlockState()).create()); + + public static final Feature TWIGLET_TREE = register("twiglet_tree", new TwigletTreeFeature.Builder().minHeight(1).maxHeight(2).create()); + public static final Feature TALL_TWIGLET_TREE = register("tall_twiglet_tree", new TwigletTreeFeature.Builder().minHeight(2).maxHeight(4).create()); + public static final Feature SPRUCE_TWIGLET_TREE = register("spruce_twiglet_tree", new TwigletTreeFeature.Builder().log(Blocks.SPRUCE_LOG.defaultBlockState()).leaves(Blocks.SPRUCE_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).create()); + public static final Feature JUNGLE_TWIGLET_TREE = register("jungle_twiglet_tree", new TwigletTreeFeature.Builder().log(Blocks.JUNGLE_LOG.defaultBlockState()).leaves(Blocks.JUNGLE_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).trunkFruit(Blocks.COCOA.defaultBlockState()).create()); + public static final Feature DARK_OAK_TWIGLET_TREE = register("dark_oak_twiglet_tree", new TwigletTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).create()); + public static final Feature ACACIA_TWIGLET_TREE = register("acacia_twiglet_tree", new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.RED_SAND).log(Blocks.ACACIA_LOG.defaultBlockState()).leaves(Blocks.ACACIA_LEAVES.defaultBlockState()).create()); + public static final Feature ACACIA_TWIGLET_SMALL = register("acacia_twiglet_small", new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.SAND || world.getBlockState(pos).getBlock() == BOPBlocks.orange_sand).log(Blocks.ACACIA_LOG.defaultBlockState()).leaves(Blocks.ACACIA_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).create()); + public static final Feature ACACIA_TWIGLET = register("acacia_twiglet", new TwigletTreeFeature.Builder().log(Blocks.ACACIA_LOG.defaultBlockState()).leaves(Blocks.ACACIA_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).create()); + public static final Feature MAPLE_TWIGLET_TREE = register("maple_twiglet_tree", new TwigletTreeFeature.Builder().minHeight(1).maxHeight(2).leaves(BOPBlocks.maple_leaves.defaultBlockState()).create()); + public static final Feature DEAD_TWIGLET_TREE_SMALL = register("dead_twiglet_tree_small", new TwigletTreeFeature.Builder().minHeight(1).maxHeight(1).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).create()); + public static final Feature DEAD_TWIGLET_TREE = register("dead_twiglet_tree", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.05F, 0.25F).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(6).maxHeight(10).create()); + public static final Feature DEAD_TWIGLET_TREE_TALL = register("dead_twiglet_tree_tall", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.15F, 0.6F).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(12).maxHeight(18).create()); + public static final Feature TWIGLET_TREE_VOLCANO = register("twiglet_tree_volcano", new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.black_sand).log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).create()); + public static final Feature BIG_HELLBARK_TREE = register("big_hellbark_tree", new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.NETHERRACK || world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING)).log(BOPBlocks.hellbark_log.defaultBlockState()).leaves(BOPBlocks.hellbark_leaves.defaultBlockState()).minHeight(3).maxHeight(7).create()); + + //Special Trees + public static final Feature REDWOOD_TREE = register("redwood_tree", new RedwoodTreeFeature.Builder().create()); + public static final Feature REDWOOD_TREE_MEDIUM = register("redwood_tree_medium", new RedwoodTreeFeature.Builder().minHeight(25).maxHeight(40).trunkWidth(2).create()); + public static final Feature REDWOOD_TREE_LARGE = register("redwood_tree_large", new RedwoodTreeFeature.Builder().minHeight(45).maxHeight(60).trunkWidth(3).create()); + public static final Feature MAHOGANY_TREE = register("mahogany_tree", new MahoganyTreeFeature.Builder().create()); + public static final Feature PALM_TREE = register("palm_tree", new PalmTreeFeature.Builder().create()); + public static final Feature DEAD_TREE = register("dead_tree", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(6).maxHeight(10).create()); + public static final Feature TALL_DEAD_TREE = register("tall_dead_tree", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(8).maxHeight(12).create()); + public static final Feature DEAD_TREE_WASTELAND = register("dead_tree_wasteland", new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.dried_salt).trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(6).maxHeight(10).create()); + public static final Feature BURNT_TREE = register("burnt_tree", new TwigletTreeFeature.Builder().leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.stripped_hellbark_log.defaultBlockState()).minHeight(3).maxHeight(5).create()); + + ///////////////////////////////////////////////////////////////////////////////// + + //Features + public static final Feature BIG_PUMPKIN = register("big_pumpkin", new BigPumpkinFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature BLACK_SAND_SPLATTER = register("black_sand_splatter", new BlackSandSplatterFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature BONE_SPINE = register("bone_spine", new BoneSpineFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature BRAMBLE = register("bramble", new BrambleFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature CRAG_SPLATTER = register("crag_splatter", new CragSplatterFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature DEEP_BAYOU_VINES = register("deep_bayou_vines", new DeepBayouVinesFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature FERN = register("fern", new FernFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature FERN_GRASS = register("fern_grass", new FernGrassFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature FLESH_TENDON = register("flesh_tendon", new FleshTendonFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature GRASS_SPLATTER = register("grass_splatter", new GrassSplatterFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature HUGE_CLOVER = register("huge_clover", new HugeCloverFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature HUGE_GLOWSHROOM = register("huge_glowshroom", new HugeGlowshroomFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature HUGE_TOADSTOOL = register("huge_toadstool", new HugeToadstoolFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature LARGE_CRYSTAL = register("large_crystal", new LargeCrystalFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature MANGROVE = register("mangrove", new MangroveFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature MYCELIUM_SPLATTER = register("mycelium_splatter", new MyceliumSplatterFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature NETHER_VINES = register("nether_vines", new NetherVinesFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature OBSIDIAN_SPLATTER = register("obsidian_splatter", new ObsidianSplatterFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature RAINFOREST_CLIFFS_VINES = register("rainforest_cliffs_vines", new RainforestCliffsVinesFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature PODZOL_SPLATTER = register("podzol_splatter", new PodzolSplatterFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature PUMPKIN_PATCH = register("pumpkin_patch", new PumpkinPatchFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature RANDOM_PATCH_ABOVE_GROUND = register("random_patch_above_ground", new RandomPatchAboveGroundFeature(BlockClusterFeatureConfig.CODEC)); + public static final Feature SCATTERED_ROCKS = register("scattered_rocks", new ScatteredRocksFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature SCRUB = register("scrub", new ScrubFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature SHORT_BAMBOO = register("short_bamboo", new ShortBambooFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature SMALL_BROWN_MUSHROOM = register("small_brown_mushroom", new SmallBrownMushroomFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature SMALL_CRYSTAL = register("small_crystal", new SmallCrystalFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature SMALL_GLOWSHROOM = register("small_glowshroom", new SmallGlowshroomFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature SMALL_RED_MUSHROOM = register("small_red_mushroom", new SmallRedMushroomFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature SMALL_TOADSTOOL = register("small_toadstool", new SmallToadstoolFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature STANDARD_GRASS = register("standard_grass", new StandardGrassFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature WASTELAND_GRASS = register("wasteland_grass", new WastelandGrassFeature(NoFeatureConfig.CODEC.stable())); + + //Flowers + public static final BlockClusterFeatureConfig CHERRY_BLOSSOM_GROVE_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.pink_daffodil.defaultBlockState(), 1).add(Blocks.LILY_OF_THE_VALLEY.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig CONIFEROUS_FOREST_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(Blocks.CORNFLOWER.defaultBlockState(), 1).add(Blocks.OXEYE_DAISY.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig EXTENDED_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(Blocks.OXEYE_DAISY.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig FLOWER_MEADOW_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(Blocks.PINK_TULIP.defaultBlockState(), 1).add(Blocks.RED_TULIP.defaultBlockState(), 1).add(Blocks.WHITE_TULIP.defaultBlockState(), 1).add(Blocks.ORANGE_TULIP.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig MEADOW_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(Blocks.LILY_OF_THE_VALLEY.defaultBlockState(), 1).add(Blocks.AZURE_BLUET.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig MOOR_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(Blocks.ALLIUM.defaultBlockState(), 1).add(BOPBlocks.violet.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig MYSTIC_GROVE_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.glowflower.defaultBlockState(), 1).add(BOPBlocks.pink_daffodil.defaultBlockState(), 1).add(Blocks.LILY_OF_THE_VALLEY.defaultBlockState(), 1).add(Blocks.AZURE_BLUET.defaultBlockState(), 1).add(Blocks.ALLIUM.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig ORIGIN_VALLEY_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.rose.defaultBlockState(), 6).add(Blocks.DANDELION.defaultBlockState(), 4), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig RAINBOW_HILLS_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.orange_cosmos.defaultBlockState(), 1).add(BOPBlocks.pink_daffodil.defaultBlockState(), 1).add(Blocks.LILY_OF_THE_VALLEY.defaultBlockState(), 1).add(Blocks.AZURE_BLUET.defaultBlockState(), 1).add(Blocks.ALLIUM.defaultBlockState(), 1).add(Blocks.CORNFLOWER.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1).add(Blocks.BLUE_ORCHID.defaultBlockState(), 1).add(Blocks.PINK_TULIP.defaultBlockState(), 1).add(Blocks.RED_TULIP.defaultBlockState(), 1).add(Blocks.WHITE_TULIP.defaultBlockState(), 1).add(Blocks.ORANGE_TULIP.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig RAINFOREST_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.orange_cosmos.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig SNOWY_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.violet.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig TROPICS_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.pink_hibiscus.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig WETLAND_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(Blocks.BLUE_ORCHID.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + + //Other + public static final LiquidsConfig VOLCANO_SPRING_CONFIG = new LiquidsConfig(Fluids.LAVA.defaultFluidState(), true, 4, 1, ImmutableSet.of(Blocks.BASALT, Blocks.MAGMA_BLOCK, BOPBlocks.black_sand, BOPBlocks.black_sandstone, Blocks.STONE, Blocks.GRANITE, Blocks.DIORITE, Blocks.ANDESITE)); + public static final LiquidsConfig WATER_SPRING_EXTRA_CONFIG = new LiquidsConfig(Fluids.WATER.defaultFluidState(), true, 4, 1, ImmutableSet.of(Blocks.DIRT, Blocks.TERRACOTTA, Blocks.STONE, Blocks.GRANITE, Blocks.DIORITE, Blocks.ANDESITE, BOPBlocks.orange_sandstone)); + + private static > F register(String key, F value) + { + value.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, key)); + ForgeRegistries.FEATURES.register(value); + return value; + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BigPumpkinFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/BigPumpkinFeature.java new file mode 100644 index 0000000000..06b0b790e9 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BigPumpkinFeature.java @@ -0,0 +1,128 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.LeavesBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; +import java.util.function.Function; + +public class BigPumpkinFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos); + + public BigPumpkinFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) + { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos.offset(2, 0, 2))) + { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) + { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + for (int x = 1; x < 4; x++) + { + for (int y = 0; y < 5; y++) + { + for (int z = 1; z < 4; z++) + { + this.setBlock(world, pos.offset(x,y,z), Blocks.PUMPKIN.defaultBlockState()); + } + } + } + + for (int x = 0; x < 5; x++) + { + for (int y = 1; y < 4; y++) + { + for (int z = 1; z < 4; z++) + { + this.setBlock(world, pos.offset(x,y,z), Blocks.PUMPKIN.defaultBlockState()); + } + } + } + + for (int x = 1; x < 4; x++) + { + for (int y = 1; y < 4; y++) + { + for (int z = 0; z < 5; z++) + { + this.setBlock(world, pos.offset(x,y,z), Blocks.PUMPKIN.defaultBlockState()); + } + } + } + + this.setBlock(world, pos.offset(2,5,2), Blocks.OAK_LOG.defaultBlockState()); + + this.setBlock(world, pos.offset(1,5,2), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + this.setBlock(world, pos.offset(0,4,1), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + + this.setBlock(world, pos.offset(2,5,3), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + this.setBlock(world, pos.offset(3,5,3), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + this.setBlock(world, pos.offset(2,4,4), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + this.setBlock(world, pos.offset(3,4,4), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + + this.setBlock(world, pos.offset(3,5,1), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + this.setBlock(world, pos.offset(3,4,0), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + this.setBlock(world, pos.offset(4,4,2), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + this.setBlock(world, pos.offset(4,3,0), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + this.setBlock(world, pos.offset(4,2,0), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= 6; y++) + { + for (int x = 0; x <= 5; x++) + { + for (int z = 0; z <= 5; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BlackSandSplatterFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/BlackSandSplatterFeature.java new file mode 100644 index 0000000000..6e09ae72df --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BlackSandSplatterFeature.java @@ -0,0 +1,60 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.Random; + +public class BlackSandSplatterFeature extends Feature +{ + public BlackSandSplatterFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader worldIn, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + int j = rand.nextInt(2) + 1; + + for (int k = pos.getX() - j; k <= pos.getX() + j; ++k) + { + for (int l = pos.getZ() - j; l <= pos.getZ() + j; ++l) + { + int i1 = k - pos.getX(); + int j1 = l - pos.getZ(); + if (i1 * i1 + j1 * j1 <= j * j) + { + for (int k1 = pos.getY() - 2; k1 <= pos.getY() + 2; ++k1) + { + BlockPos blockpos = new BlockPos(k, k1, l); + BlockState blockstate = worldIn.getBlockState(blockpos); + BlockState blockstate1 = worldIn.getBlockState(blockpos.above()); + + if (blockstate.getBlock() == Blocks.GRASS_BLOCK && blockstate1.isAir(worldIn, blockpos.above())) + { + worldIn.setBlock(blockpos, BOPBlocks.black_sand.defaultBlockState(), 2); + if (rand.nextInt(4) == 0) + { + worldIn.setBlock(blockpos.above(), Blocks.DEAD_BUSH.defaultBlockState(), 2); + } + + ++i; + break; + } + } + } + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BoneSpineFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/BoneSpineFeature.java new file mode 100644 index 0000000000..25a5a9a440 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BoneSpineFeature.java @@ -0,0 +1,87 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.material.Material; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class BoneSpineFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.flesh || world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).isAir(world, pos) || world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getMaterial() == Material.WATER; + private int maxHeight = 3; + + public BoneSpineFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator p_230362_3_, Random rand, BlockPos startPos, NoFeatureConfig p_230362_6_) + { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos)) + { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) + { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + int height = 1 + rand.nextInt(maxHeight - 1); + + for (int y = 0; y <= height; y++) + { + this.setBlock(world, pos.offset(0, y, 0), Blocks.BONE_BLOCK.defaultBlockState()); + } + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= maxHeight + 1; y++) + { + for (int x = -2; x <= 2; x++) + { + for (int z = -2; z <= 2; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BrambleFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/BrambleFeature.java new file mode 100644 index 0000000000..90eeb1cc34 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BrambleFeature.java @@ -0,0 +1,124 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.block.BrambleBlock; +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.LeavesBlock; +import net.minecraft.block.SaplingBlock; +import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class BrambleFeature extends Feature +{ + public BrambleFeature(Codec deserializer) + { + super(deserializer); + } + + protected IBlockPosQuery placeOn = (world, pos) -> + { + BlockState state = world.getBlockState(pos); + return state.canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING) || state.getBlock() == Blocks.NETHERRACK; + }; + + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).getMaterial() == Material.AIR; + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) + { + for (int i = 0; i < 128; ++i) + { + BlockPos genPos = startPos.offset(rand.nextInt(4) - rand.nextInt(4), rand.nextInt(3) - rand.nextInt(3), rand.nextInt(4) - rand.nextInt(4)); + + if (this.placeOn.matches(world, genPos.below()) && this.replace.matches(world, genPos)) + { + int targetLength = GeneratorUtil.nextIntBetween(rand, 15, 30); + int height = 0; + int direction = rand.nextInt(4) + 2; + + for (int length = 0; length <= targetLength && replace.matches(world, genPos); length++) + { + //if (BrambleBlock.canPlaceBlockAt(world, genPos)) + //{ + world.setBlock(genPos, ((BrambleBlock)BOPBlocks.bramble).makeConnections(world, genPos), 2); + + for (Direction face : Direction.values()) + { + if (world.getBlockState(genPos.relative(face)).getBlock() == BOPBlocks.bramble) + { + world.setBlock(genPos.relative(face), ((BrambleBlock)BOPBlocks.bramble).makeConnections(world, genPos.relative(face)), 2); + } + } + + if (rand.nextInt(2) == 0) + { + direction = rand.nextInt(4) + 2; + } + + if (rand.nextInt(2) == 0) + { + int leafDirection = rand.nextInt(6); + BlockPos leafPos = genPos.relative(Direction.values()[leafDirection]); + if (world.isEmptyBlock(leafPos)) + { + world.setBlock(leafPos, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 19); + for (Direction face : Direction.values()) + { + if (world.getBlockState(leafPos.relative(face)).getBlock() == BOPBlocks.bramble) + { + world.setBlock(leafPos.relative(face), ((BrambleBlock)BOPBlocks.bramble).makeConnections(world, leafPos.relative(face)), 2); + } + } + } + } + + switch (rand.nextInt(6)) + { + case 0: case 1: + if (height <= 8) + { + genPos = genPos.above(); + height++; + } + break; + case 2: + if (height >= 0) + { + genPos = genPos.below(); + height--; + } + break; + default: + genPos = genPos.relative(Direction.values()[direction]); + break; + } + //} + //else + //{ + //return false; + //} + } + } + } + return true; + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/CragSplatterFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/CragSplatterFeature.java new file mode 100644 index 0000000000..e5080fe6ed --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/CragSplatterFeature.java @@ -0,0 +1,90 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.Random; + +public class CragSplatterFeature extends Feature +{ + public CragSplatterFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader worldIn, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + BlockPos.Mutable mutable = pos.mutable(); + int placed = 0; + int radius = rand.nextInt(8 - 2) + 2; + + for (int x = pos.getX() - radius; x <= pos.getX() + radius; ++x) + { + for (int z = pos.getZ() - radius; z <= pos.getZ() + radius; ++z) + { + int dx = x - pos.getX(); + int dz = z - pos.getZ(); + if (dx * dx + dz * dz <= radius * radius) + { + for (int k1 = pos.getY() - 6; k1 <= pos.getY() + 6; ++k1) + { + mutable.set(x, k1, z); + BlockState blockstate = worldIn.getBlockState(mutable); + BlockState blockstate1 = worldIn.getBlockState(mutable.move(Direction.UP)); + mutable.move(Direction.DOWN); + + if ((blockstate.getBlock() == Blocks.STONE || blockstate.getBlock() == Blocks.GRAVEL || blockstate.getBlock() == Blocks.ANDESITE || blockstate.getBlock() == Blocks.DIORITE || blockstate.getBlock() == Blocks.GRANITE || blockstate.getBlock() == Blocks.DIRT)) + { + switch (rand.nextInt(14)) + { + default: + case 0: + case 1: + case 2: + worldIn.setBlock(mutable, Blocks.COBBLESTONE.defaultBlockState(), 2); + break; + + case 3: + case 4: + case 5: + worldIn.setBlock(mutable, Blocks.GRAVEL.defaultBlockState(), 2); + break; + + case 6: + case 7: + worldIn.setBlock(mutable, Blocks.MOSSY_COBBLESTONE.defaultBlockState(), 2); + break; + + case 8: + case 9: + worldIn.setBlock(mutable, Blocks.ANDESITE.defaultBlockState(), 2); + break; + + case 10: + if (blockstate1.isAir(worldIn, mutable.move(Direction.UP))) + { + worldIn.setBlock(mutable, Blocks.GRASS.defaultBlockState(), 2); + worldIn.setBlock(mutable.move(Direction.DOWN), Blocks.GRASS_BLOCK.defaultBlockState(), 2); + } + break; + } + + ++placed; + break; + } + } + } + } + } + + return placed > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/DeepBayouVinesFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/DeepBayouVinesFeature.java new file mode 100644 index 0000000000..ab577f779a --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/DeepBayouVinesFeature.java @@ -0,0 +1,96 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.google.common.collect.Lists; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.VineBlock; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.List; +import java.util.Random; + +public class DeepBayouVinesFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.willow_log || world.getBlockState(pos).getBlock() == BOPBlocks.willow_leaves || world.getBlockState(pos).getBlock() == Blocks.OAK_LEAVES || world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.DIRT; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).isAir(world, pos); + int minHeight = 4; + int maxHeight = 8; + + public DeepBayouVinesFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) + { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos.offset(2, 0, 2))) + { + // Abandon if we can't place the tree on this block + return false; + } + + for (int i = 0; i < 128; ++i) + { + BlockPos genPos = startPos.offset(rand.nextInt(4) - rand.nextInt(4), rand.nextInt(3) - rand.nextInt(3), rand.nextInt(4) - rand.nextInt(4)); + + if (!this.replace.matches(world, genPos)) continue; + + BlockState vineState = BOPBlocks.willow_vine.defaultBlockState(); + + // make sure there is an adjacent block for the vine to attach to + List validDirections = Lists.newArrayList(); + + for (Direction facing : Direction.values()) { + if (facing == Direction.UP || facing == Direction.DOWN) continue; + if (this.placeOn.matches(world, genPos.relative(facing))) validDirections.add(facing); + } + + if (validDirections.isEmpty()) continue; + + Direction direction = validDirections.get(rand.nextInt(validDirections.size())); + vineState = vineState.setValue(VineBlock.getPropertyForFace(direction), Boolean.valueOf(true)); + + // choose random target height + int targetHeight = minHeight + rand.nextInt(maxHeight); + + // keep placing blocks upwards (if there's room) + for (int height = 0; height <= targetHeight; height++) + { + BlockPos offsetPos = genPos.below(height); + + if (replace.matches(world, offsetPos) && vineState.getBlock().canSurvive(vineState, world, offsetPos)) + { + world.setBlock(offsetPos, vineState, 2); + } + else + { + return false; + } + } + } + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/DenseFeatureSpreadConfig.java b/src/main/java/biomesoplenty/common/world/gen/feature/DenseFeatureSpreadConfig.java new file mode 100644 index 0000000000..923314866b --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/DenseFeatureSpreadConfig.java @@ -0,0 +1,28 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.world.gen.feature.FeatureSpread; +import net.minecraft.world.gen.feature.FeatureSpreadConfig; +import net.minecraft.world.gen.feature.IFeatureConfig; +import net.minecraft.world.gen.placement.IPlacementConfig; + +public class DenseFeatureSpreadConfig implements IPlacementConfig, IFeatureConfig +{ + public static final Codec CODEC = FeatureSpread.codec(-10, 1024, 1024).fieldOf("count").xmap(DenseFeatureSpreadConfig::new, DenseFeatureSpreadConfig::count).codec(); + private final FeatureSpread count; + + public DenseFeatureSpreadConfig(int count) + { + this.count = FeatureSpread.fixed(count); + } + + public DenseFeatureSpreadConfig(FeatureSpread count) + { + this.count = count; + } + + public FeatureSpread count() + { + return this.count; + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/FernFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/FernFeature.java new file mode 100644 index 0000000000..3ad63ffdf5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/FernFeature.java @@ -0,0 +1,58 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.Random; + +public class FernFeature extends Feature +{ + public FernFeature(Codec deserializer) + { + super(deserializer); + } + + public BlockState chooseGrassState(Random rand) + { + return Blocks.FERN.defaultBlockState(); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + BlockState BlockState = this.chooseGrassState(rand); + + for (BlockState BlockState1 = world.getBlockState(pos); (BlockState1.isAir(world, pos) || BlockState1.is(BlockTags.LEAVES)) && pos.getY() > 0; BlockState1 = world.getBlockState(pos)) + { + pos = pos.below(); + } + + int i = 0; + + for (int j = 0; j < 128; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.isEmptyBlock(blockpos) && BlockState.canSurvive(world, blockpos)) + { + world.setBlock(blockpos, BlockState, 2); + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/FernGrassFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/FernGrassFeature.java new file mode 100644 index 0000000000..2b1d6ae6ac --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/FernGrassFeature.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class FernGrassFeature extends Feature +{ + public FernGrassFeature(Codec deserializer) + { + super(deserializer); + } + + public BlockState chooseGrassState(Random rand) + { + return rand.nextInt(3) == 0 ? Blocks.FERN.defaultBlockState() : Blocks.GRASS.defaultBlockState(); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + BlockState BlockState = this.chooseGrassState(rand); + + for (BlockState BlockState1 = world.getBlockState(pos); (BlockState1.isAir(world, pos) || BlockState1.is(BlockTags.LEAVES)) && pos.getY() > 0; BlockState1 = world.getBlockState(pos)) + { + pos = pos.below(); + } + + int i = 0; + + for (int j = 0; j < 128; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.isEmptyBlock(blockpos) && BlockState.canSurvive(world, blockpos)) + { + world.setBlock(blockpos, BlockState, 2); + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/FleshTendonFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/FleshTendonFeature.java new file mode 100644 index 0000000000..99005f323f --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/FleshTendonFeature.java @@ -0,0 +1,140 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.block.NetherCrystalBlock; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.state.properties.AttachFace; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.util.math.vector.Vector3d; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class FleshTendonFeature extends Feature +{ + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() == BOPBlocks.nether_crystal; + + private static final int MIN_DISTANCE = 8; + private static final int MAX_DISTANCE = 32; + private static final float MID_POS_MULTIPLIER = 0.9F; + private static final float TENDON_STEP = 0.005f; + + public FleshTendonFeature(Codec deserializer) + { + super(deserializer); + } + + private static BlockPos quadratic(float t, BlockPos v0, BlockPos v1, BlockPos v2) + { + float dt = 1f - t; + Vector3d v = new Vector3d(v0.getX(), v0.getY(), v0.getZ()).scale(dt * dt).add(new Vector3d(v1.getX(), v1.getY(), v1.getZ()).scale(2 * dt * t)).add(new Vector3d(v2.getX(), v2.getY(), v2.getZ()).scale(t * t)); + return new BlockPos(v.x, v.y, v.z); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator generator, Random rand, BlockPos pos, NoFeatureConfig config) + { + BlockState below = world.getBlockState(pos.below()); + if (!below.is(BOPBlocks.flesh)) + { + return false; + } + + int xOff = rand.nextInt(MAX_DISTANCE * 2) - MAX_DISTANCE; + int zOff = rand.nextInt(MAX_DISTANCE * 2) - MAX_DISTANCE; + int minX = rand.nextBoolean() ? MIN_DISTANCE : -MIN_DISTANCE; + int minZ = rand.nextBoolean() ? MIN_DISTANCE : -MIN_DISTANCE; + BlockPos endPos = pos.offset(Math.abs(xOff) < MIN_DISTANCE ? minX : xOff, pos.getY(), Math.abs(zOff) < MIN_DISTANCE ? minZ : zOff); + + while (world.isEmptyBlock(endPos) && endPos.getY() < 126) + { + endPos = endPos.above(); + } + + // No room for the tendon + if (endPos.getY() == pos.getY()) + { + return false; + } + + BlockPos midPos = endPos.offset(0, -(endPos.getY() - pos.getY()) * MID_POS_MULTIPLIER, 0); + + for (float d = 0.0f; d < 1.0f; d += TENDON_STEP) + { + BlockPos curPos = quadratic(d, pos, midPos, endPos); + + if (curPos.getY() < 126) + { + this.setBlock(world, curPos, BOPBlocks.flesh.defaultBlockState()); + if (rand.nextInt(75) == 0) + { + this.generateFleshBall(world, curPos, rand); + } + } + else + { + break; + } + } + + return true; + } + + public boolean generateFleshBall(ISeedReader world, BlockPos pos, Random rand) + { + this.setBlock(world, pos, BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.north(), Blocks.SHROOMLIGHT.defaultBlockState(), 2); + this.setBlock(world, pos.south(), Blocks.SHROOMLIGHT.defaultBlockState(), 2); + this.setBlock(world, pos.east(), Blocks.SHROOMLIGHT.defaultBlockState(), 2); + this.setBlock(world, pos.west(), Blocks.SHROOMLIGHT.defaultBlockState(), 2); + this.setBlock(world, pos.north().west(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.south().west(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.north().east(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.south().east(), BOPBlocks.flesh.defaultBlockState()); + + this.setBlock(world, pos.above(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.above().north(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.above().south(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.above().east(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.above().west(), BOPBlocks.flesh.defaultBlockState()); + + this.setBlock(world, pos.below(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.below().north(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.below().south(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.below().east(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.below().west(), BOPBlocks.flesh.defaultBlockState()); + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state, int flags) + { + if (this.replace.matches(world, pos)) + { + world.setBlock(pos, state, flags); + return true; + } + return false; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/GrassSplatterFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/GrassSplatterFeature.java new file mode 100644 index 0000000000..80f863d33c --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/GrassSplatterFeature.java @@ -0,0 +1,61 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class GrassSplatterFeature extends Feature +{ + public GrassSplatterFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader worldIn, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + int j = rand.nextInt(8 - 2) + 2; + + for (int k = pos.getX() - j; k <= pos.getX() + j; ++k) + { + for (int l = pos.getZ() - j; l <= pos.getZ() + j; ++l) + { + int i1 = k - pos.getX(); + int j1 = l - pos.getZ(); + if (i1 * i1 + j1 * j1 <= j * j) + { + for (int k1 = pos.getY() - 2; k1 <= pos.getY() + 2; ++k1) + { + BlockPos blockpos = new BlockPos(k, k1, l); + BlockState blockstate = worldIn.getBlockState(blockpos); + BlockState blockstate1 = worldIn.getBlockState(blockpos.above()); + + if (blockstate.getBlock() == BOPBlocks.black_sand && blockstate1.isAir(worldIn, blockpos.above())) + { + worldIn.setBlock(blockpos, Blocks.GRASS_BLOCK.defaultBlockState(), 2); + if (rand.nextInt(3) == 0) + { + worldIn.setBlock(blockpos.above(), Blocks.FERN.defaultBlockState(), 2); + } + + ++i; + break; + } + } + } + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/HeathFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/HeathFeature.java new file mode 100644 index 0000000000..fad45d6ef6 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/HeathFeature.java @@ -0,0 +1,41 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.Blocks; +import net.minecraft.block.LeavesBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class HeathFeature extends Feature +{ + public HeathFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + + for(int j = 0; j < 64; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.getBlockState(blockpos).canBeReplacedByLeaves(world, blockpos) && world.getBlockState(blockpos.below()).getBlock() == Blocks.GRASS_BLOCK) + { + world.setBlock(blockpos, BOPBlocks.jacaranda_leaves.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/HugeCloverFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/HugeCloverFeature.java new file mode 100644 index 0000000000..f6ef0996bc --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/HugeCloverFeature.java @@ -0,0 +1,81 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.ibm.icu.impl.CalendarAstronomer; +import com.mojang.serialization.Codec; +import net.minecraft.block.*; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.Random; + +public class HugeCloverFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() instanceof BushBlock; + + public HugeCloverFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) + { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos)) + { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) + { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + this.setBlock(world, pos, BOPBlocks.huge_clover_petal.defaultBlockState().setValue(HorizontalBlock.FACING, Direction.NORTH)); + this.setBlock(world, pos.south(), BOPBlocks.huge_clover_petal.defaultBlockState().setValue(HorizontalBlock.FACING, Direction.WEST)); + this.setBlock(world, pos.east(), BOPBlocks.huge_clover_petal.defaultBlockState().setValue(HorizontalBlock.FACING, Direction.EAST)); + this.setBlock(world, pos.south().east(), BOPBlocks.huge_clover_petal.defaultBlockState().setValue(HorizontalBlock.FACING, Direction.SOUTH)); + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int x = 0; x <= 1; x++) + { + for (int z = 0; z <= 1; z++) + { + BlockPos pos1 = pos.offset(x, 0, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1) || !this.placeOn.matches(world, pos1.below())) + { + return false; + } + } + } + + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/HugeGlowshroomFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/HugeGlowshroomFeature.java new file mode 100644 index 0000000000..5eaf52cfb2 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/HugeGlowshroomFeature.java @@ -0,0 +1,128 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.block.HugeMushroomBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class HugeGlowshroomFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.MYCELIUM; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() instanceof BushBlock; + + public HugeGlowshroomFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) { + startPos = startPos.below(); + } + + if (!this.placeOn.matches(world, startPos.offset(0, 0, 0))) { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + int height = 6 + rand.nextInt(10); + int radius = 2 + rand.nextInt(2); + + for (int y = 0; y < height; y++) { + this.setBlock(world, pos.above(y), Blocks.MUSHROOM_STEM.defaultBlockState()); + } + + for (int x = -(radius-1); x <= (radius-1); x++) + { + for (int z = -(radius-1); z <= (radius-1); z++) + { + this.setBlock(world, pos.offset(x, height, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + } + } + + for (int x = -radius; x <= radius; x++) + { + for (int z = -radius; z <= radius; z++) + { + if ((x == -radius || x == radius) && (z == -radius || z == radius)) + { + continue; + } + else + { + if (x == radius) + { + this.setBlock(world, pos.offset(x, height - 1, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.WEST, false)); + this.setBlock(world, pos.offset(x, height - 2, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.WEST, false)); + } + if (x == -radius) + { + this.setBlock(world, pos.offset(x, height - 1, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.EAST, false)); + this.setBlock(world, pos.offset(x, height - 2, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.EAST, false)); + } + if (z == radius) + { + this.setBlock(world, pos.offset(x, height - 1, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.NORTH, false)); + this.setBlock(world, pos.offset(x, height - 2, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.NORTH, false)); + } + if (z == -radius) + { + this.setBlock(world, pos.offset(x, height - 1, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.SOUTH, false)); + this.setBlock(world, pos.offset(x, height - 2, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.SOUTH, false)); + } + } + } + } + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= 6; y++) + { + for (int x = -2; x <= 2; x++) + { + for (int z = -2; z <= 2; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/HugeToadstoolFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/HugeToadstoolFeature.java new file mode 100644 index 0000000000..dc92f5c2e4 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/HugeToadstoolFeature.java @@ -0,0 +1,102 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.block.HugeMushroomBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class HugeToadstoolFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.MYCELIUM; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() instanceof BushBlock; + + public HugeToadstoolFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) { + startPos = startPos.below(); + } + + if (!this.placeOn.matches(world, startPos.offset(0, 0, 0))) { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + int height = 2 + rand.nextInt(3); + int radius = 2; + + for (int y = 0; y < height; y++) { + this.setBlock(world, pos.above(y), Blocks.MUSHROOM_STEM.defaultBlockState()); + } + + for (int x = -(radius-1); x <= (radius-1); x++) + { + for (int z = -(radius-1); z <= (radius-1); z++) + { + this.setBlock(world, pos.offset(x, height, z), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(x, height+1, z), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(x, height+2, z), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + } + } + + this.setBlock(world, pos.offset(0, height+3, 0), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(1, height+3, 0), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(-1, height+3, 0), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(0, height+3, 1), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(0, height+3, -1), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= 8; y++) + { + for (int x = -2; x <= 2; x++) + { + for (int z = -2; z <= 2; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/LargeCrystalFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/LargeCrystalFeature.java new file mode 100644 index 0000000000..d1119b5f90 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/LargeCrystalFeature.java @@ -0,0 +1,142 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.block.NetherCrystalBlock; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.LeavesBlock; +import net.minecraft.state.properties.AttachFace; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class LargeCrystalFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.NETHERRACK; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() == BOPBlocks.nether_crystal; + private int minRadius = 2; + private int maxRadius = 3; + private int minHeight = 3; + private int maxHeight = 15; + + public LargeCrystalFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator p_230362_3_, Random rand, BlockPos pos, NoFeatureConfig p_230362_6_) + { + if (!world.isEmptyBlock(pos)) + { + return false; + } + else + { + BlockState blockstate = world.getBlockState(pos.above()); + if (!blockstate.is(Blocks.NETHERRACK) && !blockstate.is(Blocks.BASALT) && !blockstate.is(Blocks.BLACKSTONE) && !blockstate.is(Blocks.NETHER_QUARTZ_ORE)) + { + return false; + } + else + { + int randRadius = this.minRadius + rand.nextInt(this.maxRadius - this.minRadius); + int height = this.minHeight + rand.nextInt(this.maxHeight - this.minHeight); + + for (int y = 0; y <= height; y++) + { + int radius = (randRadius * (height - y) / height) + 1; + int radiusStart = MathHelper.ceil(0.25D - radius / 2.0D); + int radiusEnd = MathHelper.floor(0.25D + radius / 2.0D); + + for (int x = radiusStart; x <= radiusEnd; x++) { + for (int z = radiusStart; z <= radiusEnd; z++) { + this.setBlock(world, pos.offset(x, -y, z), BOPBlocks.nether_crystal_block.defaultBlockState()); + } + } + + this.generateCrystals(world, pos.offset(0, -y, 0), rand); + } + + return true; + } + } + } + + public boolean generateCrystals(ISeedReader world, BlockPos pos, Random rand) + { + int i = 0; + + for(int j = 0; j < 48; ++j) + { + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(rand); + AttachFace face; + switch (rand.nextInt(3)) + { + default: + case 0: + face = AttachFace.FLOOR; + break; + + case 1: + face = AttachFace.CEILING; + break; + + case 2: + face = AttachFace.WALL; + break; + } + + BlockState state = BOPBlocks.nether_crystal.defaultBlockState().setValue(NetherCrystalBlock.FACING, direction).setValue(NetherCrystalBlock.FACE, face); + BlockPos blockpos = pos.offset(rand.nextInt(3) - rand.nextInt(3), rand.nextInt(2) - rand.nextInt(2), rand.nextInt(3) - rand.nextInt(3)); + + if (world.isEmptyBlock(blockpos) && state.canSurvive(world, blockpos)) + { + world.setBlock(blockpos, state, 2); + + ++i; + } + } + + return i > 0; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= 15; y--) + { + for (int x = -1; x <= 1; x++) + { + for (int z = -1; z <= 1; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/MagmaSplatterFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/MagmaSplatterFeature.java new file mode 100644 index 0000000000..3d5ffe4d22 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/MagmaSplatterFeature.java @@ -0,0 +1,61 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.Random; + +public class MagmaSplatterFeature extends Feature +{ + public MagmaSplatterFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader worldIn, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + int j = rand.nextInt(2) + 1; + + for (int k = pos.getX() - j; k <= pos.getX() + j; ++k) + { + for (int l = pos.getZ() - j; l <= pos.getZ() + j; ++l) + { + int i1 = k - pos.getX(); + int j1 = l - pos.getZ(); + if (i1 * i1 + j1 * j1 <= j * j) + { + for (int k1 = pos.getY() - 2; k1 <= pos.getY() + 2; ++k1) + { + BlockPos blockpos = new BlockPos(k, k1, l); + BlockState blockstate = worldIn.getBlockState(blockpos); + BlockState blockstate1 = worldIn.getBlockState(blockpos.above()); + + if (rand.nextInt(6) != 0) + { + if (blockstate.getBlock() == Blocks.GRASS_BLOCK && (blockstate1.canBeReplacedByLeaves(worldIn, blockpos.above()) || blockstate1.getBlock() instanceof BushBlock)) + { + worldIn.setBlock(blockpos, Blocks.MAGMA_BLOCK.defaultBlockState(), 2); + worldIn.setBlock(blockpos.above(), Blocks.FIRE.defaultBlockState(), 2); + } + + ++i; + break; + } + } + } + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/MangroveFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/MangroveFeature.java new file mode 100644 index 0000000000..21f7d56ffb --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/MangroveFeature.java @@ -0,0 +1,82 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.DoublePlantBlock; +import net.minecraft.block.LeavesBlock; +import net.minecraft.block.material.Material; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class MangroveFeature extends Feature { + + public MangroveFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + BlockState blockstate = BOPBlocks.mangrove_root.defaultBlockState(); + + for(int j = 0; j < 64; ++j) { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.getBlockState(blockpos).getMaterial() == Material.WATER && world.isEmptyBlock(blockpos.above()) && (!world.dimensionType().hasCeiling() || blockpos.getY() < world.getLevel().getHeight() - 1) && blockstate.canSurvive(world, blockpos)) { + world.setBlock(blockpos, blockstate, 2); + ((DoublePlantBlock)blockstate.getBlock()).placeAt(world, blockpos, 2); + + if (rand.nextInt(5) != 0) + { + BlockPos leaves1 = blockpos.above().above(); + BlockPos leaves2 = leaves1.north(); + BlockPos leaves3 = leaves1.south(); + BlockPos leaves4 = leaves1.east(); + BlockPos leaves5 = leaves1.west(); + BlockPos leaves6 = leaves1.above(); + + if (world.getBlockState(leaves1).canBeReplacedByLeaves(world, leaves1)) + { + world.setBlock(leaves1, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + } + + if (rand.nextInt(2) == 0) + { + if (world.getBlockState(leaves2).canBeReplacedByLeaves(world, leaves2)) + { + world.setBlock(leaves2, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + } + if (world.getBlockState(leaves3).canBeReplacedByLeaves(world, leaves3)) + { + world.setBlock(leaves3, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + } + if (world.getBlockState(leaves4).canBeReplacedByLeaves(world, leaves4)) + { + world.setBlock(leaves4, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + } + if (world.getBlockState(leaves5).canBeReplacedByLeaves(world, leaves5)) + { + world.setBlock(leaves5, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + } + if (world.getBlockState(leaves6).canBeReplacedByLeaves(world, leaves6)) + { + world.setBlock(leaves6, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + } + } + } + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/MyceliumSplatterFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/MyceliumSplatterFeature.java new file mode 100644 index 0000000000..65b6bcd352 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/MyceliumSplatterFeature.java @@ -0,0 +1,60 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class MyceliumSplatterFeature extends Feature +{ + public MyceliumSplatterFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader worldIn, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + int j = rand.nextInt(8 - 2) + 2; + + for (int k = pos.getX() - j; k <= pos.getX() + j; ++k) + { + for (int l = pos.getZ() - j; l <= pos.getZ() + j; ++l) + { + int i1 = k - pos.getX(); + int j1 = l - pos.getZ(); + if (i1 * i1 + j1 * j1 <= j * j) + { + for (int k1 = pos.getY() - 2; k1 <= pos.getY() + 2; ++k1) + { + BlockPos blockpos = new BlockPos(k, k1, l); + BlockState blockstate = worldIn.getBlockState(blockpos); + BlockState blockstate1 = worldIn.getBlockState(blockpos.above()); + + if (blockstate.getBlock() == Blocks.GRASS_BLOCK && blockstate1.isAir(worldIn, blockpos.above())) + { + worldIn.setBlock(blockpos, Blocks.MYCELIUM.defaultBlockState(), 2); + if (rand.nextInt(8) == 0) + { + worldIn.setBlock(blockpos.above(), Blocks.RED_MUSHROOM.defaultBlockState(), 2); + } + + ++i; + break; + } + } + } + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/NetherVinesFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/NetherVinesFeature.java new file mode 100644 index 0000000000..e6cac8074e --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/NetherVinesFeature.java @@ -0,0 +1,97 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.google.common.collect.Lists; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.VineBlock; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.List; +import java.util.Random; + +public class NetherVinesFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.NETHERRACK; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).isAir(world, pos); + int minHeight = 8; + int maxHeight = 20; + + public NetherVinesFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) + { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos.offset(2, 0, 2))) + { + // Abandon if we can't place the tree on this block + return false; + } + + for (int i = 0; i < 128; ++i) + { + BlockPos genPos = startPos.offset(rand.nextInt(4) - rand.nextInt(4), rand.nextInt(3) - rand.nextInt(3), rand.nextInt(4) - rand.nextInt(4)); + + if (!this.replace.matches(world, genPos) || !this.placeOn.matches(world, genPos.above())) continue; + + BlockState vineState = BOPBlocks.willow_vine.defaultBlockState(); + + // make sure there is an adjacent block for the vine to attach to + List validDirections = Lists.newArrayList(); + + for (Direction facing : Direction.values()) { + if (facing == Direction.UP || facing == Direction.DOWN) continue; + if (this.placeOn.matches(world, genPos.relative(facing))) validDirections.add(facing); + } + + if (validDirections.isEmpty()) continue; + + Direction direction = validDirections.get(rand.nextInt(validDirections.size())); + vineState = vineState.setValue(VineBlock.getPropertyForFace(direction), Boolean.valueOf(true)); + + // choose random target height + int targetHeight = minHeight + rand.nextInt(maxHeight); + + // keep placing blocks upwards (if there's room) + for (int height = 0; height <= targetHeight; height++) + { + BlockPos offsetPos = genPos.below(height); + + if (replace.matches(world, offsetPos) && vineState.getBlock().canSurvive(vineState, world, offsetPos)) + { + world.setBlock(offsetPos, vineState, 2); + } + else + { + return false; + } + } + } + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/NetherWartFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/NetherWartFeature.java new file mode 100644 index 0000000000..fb80a065fd --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/NetherWartFeature.java @@ -0,0 +1,41 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.Blocks; +import net.minecraft.block.NetherWartBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class NetherWartFeature extends Feature +{ + public NetherWartFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + + for(int j = 0; j < 64; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(4) - rand.nextInt(4), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(4) - rand.nextInt(4)); + if (world.getBlockState(blockpos).isAir(world, blockpos) && world.getBlockState(blockpos.below()).getBlock() == Blocks.NETHERRACK && world.getBlockState(blockpos.below().east()).getBlock() == Blocks.NETHERRACK && world.getBlockState(blockpos.below().west()).getBlock() == Blocks.NETHERRACK && world.getBlockState(blockpos.below().north()).getBlock() == Blocks.NETHERRACK && world.getBlockState(blockpos.below().south()).getBlock() == Blocks.NETHERRACK) + { + world.setBlock(blockpos.below(), Blocks.SOUL_SAND.defaultBlockState(), 2); + world.setBlock(blockpos, Blocks.NETHER_WART.defaultBlockState().setValue(NetherWartBlock.AGE, rand.nextInt(4)), 2); + + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/ObsidianSplatterFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/ObsidianSplatterFeature.java new file mode 100644 index 0000000000..9d6837b1a6 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/ObsidianSplatterFeature.java @@ -0,0 +1,62 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class ObsidianSplatterFeature extends Feature +{ + public ObsidianSplatterFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader worldIn, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + int j = rand.nextInt(8 - 2) + 2; + + for (int k = pos.getX() - j; k <= pos.getX() + j; ++k) + { + for (int l = pos.getZ() - j; l <= pos.getZ() + j; ++l) + { + int i1 = k - pos.getX(); + int j1 = l - pos.getZ(); + if (i1 * i1 + j1 * j1 <= j * j) + { + for (int k1 = pos.getY() - 2; k1 <= pos.getY() + 2; ++k1) + { + BlockPos blockpos = new BlockPos(k, k1, l); + BlockState blockstate = worldIn.getBlockState(blockpos); + + if (blockstate.getBlock() == Blocks.BLACKSTONE) + { + if (rand.nextInt(2) == 0) + { + worldIn.setBlock(blockpos, Blocks.OBSIDIAN.defaultBlockState(), 2); + } + if (rand.nextInt(15) == 0) + { + worldIn.setBlock(blockpos, Blocks.CRYING_OBSIDIAN.defaultBlockState(), 2); + } + + ++i; + break; + } + } + } + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/PodzolSplatterFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/PodzolSplatterFeature.java new file mode 100644 index 0000000000..6966c41d56 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/PodzolSplatterFeature.java @@ -0,0 +1,60 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class PodzolSplatterFeature extends Feature +{ + public PodzolSplatterFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader worldIn, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + int j = rand.nextInt(8 - 2) + 2; + + for (int k = pos.getX() - j; k <= pos.getX() + j; ++k) + { + for (int l = pos.getZ() - j; l <= pos.getZ() + j; ++l) + { + int i1 = k - pos.getX(); + int j1 = l - pos.getZ(); + if (i1 * i1 + j1 * j1 <= j * j) + { + for (int k1 = pos.getY() - 2; k1 <= pos.getY() + 2; ++k1) + { + BlockPos blockpos = new BlockPos(k, k1, l); + BlockState blockstate = worldIn.getBlockState(blockpos); + BlockState blockstate1 = worldIn.getBlockState(blockpos.above()); + + if (blockstate.getBlock() == Blocks.GRASS_BLOCK && blockstate1.isAir(worldIn, blockpos.above())) + { + worldIn.setBlock(blockpos, Blocks.PODZOL.defaultBlockState(), 2); + if (rand.nextInt(6) == 0) + { + worldIn.setBlock(blockpos.above(), Blocks.BROWN_MUSHROOM.defaultBlockState(), 2); + } + + ++i; + break; + } + } + } + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/PumpkinPatchFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/PumpkinPatchFeature.java new file mode 100644 index 0000000000..1e5be7025c --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/PumpkinPatchFeature.java @@ -0,0 +1,63 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.Blocks; +import net.minecraft.block.CarvedPumpkinBlock; +import net.minecraft.block.LeavesBlock; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class PumpkinPatchFeature extends Feature +{ + public PumpkinPatchFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + + for(int j = 0; j < 64; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.getBlockState(blockpos).canBeReplacedByLeaves(world, blockpos) && world.getBlockState(blockpos.below()).getBlock() == Blocks.GRASS_BLOCK) + { + + if (rand.nextInt(3) == 0) + { + int num = rand.nextInt(50); + + if (num > 10) + { + world.setBlock(blockpos, Blocks.PUMPKIN.defaultBlockState(), 2); + } + else if (num > 1) + { + world.setBlock(blockpos, Blocks.CARVED_PUMPKIN.defaultBlockState().setValue(CarvedPumpkinBlock.FACING, Direction.from3DDataValue(2 + rand.nextInt(4))), 2); + } + else + { + world.setBlock(blockpos, Blocks.JACK_O_LANTERN.defaultBlockState().setValue(CarvedPumpkinBlock.FACING, Direction.from3DDataValue(2 + rand.nextInt(4))), 2); + } + } + else + { + world.setBlock(blockpos, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + } + + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/RainforestCliffsVinesFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/RainforestCliffsVinesFeature.java new file mode 100644 index 0000000000..9eff8be781 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/RainforestCliffsVinesFeature.java @@ -0,0 +1,96 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.google.common.collect.Lists; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.VineBlock; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.List; +import java.util.Random; + +public class RainforestCliffsVinesFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.DIRT || world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.STONE || world.getBlockState(pos).getBlock() == Blocks.TERRACOTTA || world.getBlockState(pos).getBlock() == Blocks.ANDESITE || world.getBlockState(pos).getBlock() == Blocks.GRANITE || world.getBlockState(pos).getBlock() == Blocks.DIORITE; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).isAir(world, pos); + int minHeight = 7; + int maxHeight = 14; + + public RainforestCliffsVinesFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) + { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos.offset(2, 0, 2))) + { + // Abandon if we can't place the tree on this block + return false; + } + + for (int i = 0; i < 128; ++i) + { + BlockPos genPos = startPos.offset(rand.nextInt(4) - rand.nextInt(4), rand.nextInt(3) - rand.nextInt(3), rand.nextInt(4) - rand.nextInt(4)); + + if (!this.replace.matches(world, genPos)) continue; + + BlockState vineState = Blocks.VINE.defaultBlockState(); + + // make sure there is an adjacent block for the vine to attach to + List validDirections = Lists.newArrayList(); + + for (Direction facing : Direction.values()) { + if (facing == Direction.UP || facing == Direction.DOWN) continue; + if (this.placeOn.matches(world, genPos.relative(facing))) validDirections.add(facing); + } + + if (validDirections.isEmpty()) continue; + + Direction direction = validDirections.get(rand.nextInt(validDirections.size())); + vineState = vineState.setValue(VineBlock.getPropertyForFace(direction), Boolean.valueOf(true)); + + // choose random target height + int targetHeight = minHeight + rand.nextInt(maxHeight); + + // keep placing blocks upwards (if there's room) + for (int height = 0; height <= targetHeight; height++) + { + BlockPos offsetPos = genPos.below(height); + + if (replace.matches(world, offsetPos) && vineState.getBlock().canSurvive(vineState, world, offsetPos)) + { + world.setBlock(offsetPos, vineState, 2); + } + else + { + return false; + } + } + } + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/RandomPatchAboveGroundFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/RandomPatchAboveGroundFeature.java new file mode 100644 index 0000000000..c27baba21d --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/RandomPatchAboveGroundFeature.java @@ -0,0 +1,54 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.CarvedPumpkinBlock; +import net.minecraft.block.LeavesBlock; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.Heightmap; +import net.minecraft.world.gen.feature.BlockClusterFeatureConfig; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.Random; + +public class RandomPatchAboveGroundFeature extends Feature { + public RandomPatchAboveGroundFeature(Codec p_i231979_1_) { + super(p_i231979_1_); + } + + public boolean place(ISeedReader p_241855_1_, ChunkGenerator p_241855_2_, Random p_241855_3_, BlockPos p_241855_4_, BlockClusterFeatureConfig p_241855_5_) { + BlockState blockstate = p_241855_5_.stateProvider.getState(p_241855_3_, p_241855_4_); + BlockPos blockpos; + if (p_241855_5_.project) { + blockpos = p_241855_1_.getHeightmapPos(Heightmap.Type.WORLD_SURFACE_WG, p_241855_4_); + } else { + blockpos = p_241855_4_; + } + + if (blockpos.getY() < 60) + { + return false; + } + + int i = 0; + BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable(); + + for(int j = 0; j < p_241855_5_.tries; ++j) { + blockpos$mutable.setWithOffset(blockpos, p_241855_3_.nextInt(p_241855_5_.xspread + 1) - p_241855_3_.nextInt(p_241855_5_.xspread + 1), p_241855_3_.nextInt(p_241855_5_.yspread + 1) - p_241855_3_.nextInt(p_241855_5_.yspread + 1), p_241855_3_.nextInt(p_241855_5_.zspread + 1) - p_241855_3_.nextInt(p_241855_5_.zspread + 1)); + BlockPos blockpos1 = blockpos$mutable.below(); + BlockState blockstate1 = p_241855_1_.getBlockState(blockpos1); + if ((p_241855_1_.isEmptyBlock(blockpos$mutable) || p_241855_5_.canReplace && p_241855_1_.getBlockState(blockpos$mutable).getMaterial().isReplaceable()) && blockstate.canSurvive(p_241855_1_, blockpos$mutable) && (p_241855_5_.whitelist.isEmpty() || p_241855_5_.whitelist.contains(blockstate1.getBlock())) && !p_241855_5_.blacklist.contains(blockstate1) && (!p_241855_5_.needWater || p_241855_1_.getFluidState(blockpos1.west()).is(FluidTags.WATER) || p_241855_1_.getFluidState(blockpos1.east()).is(FluidTags.WATER) || p_241855_1_.getFluidState(blockpos1.north()).is(FluidTags.WATER) || p_241855_1_.getFluidState(blockpos1.south()).is(FluidTags.WATER))) { + p_241855_5_.blockPlacer.place(p_241855_1_, blockpos$mutable, blockstate, p_241855_3_); + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/ScatteredRocksFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/ScatteredRocksFeature.java new file mode 100644 index 0000000000..7940930f03 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/ScatteredRocksFeature.java @@ -0,0 +1,47 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class ScatteredRocksFeature extends Feature +{ + public ScatteredRocksFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + + for(int j = 0; j < 32; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.getBlockState(blockpos).canBeReplacedByLeaves(world, blockpos) && world.getBlockState(blockpos.below()).getBlock() == Blocks.GRASS_BLOCK) + { + + if (rand.nextInt(3) == 0) + { + world.setBlock(blockpos, Blocks.MOSSY_COBBLESTONE.defaultBlockState(), 2); + } + else + { + world.setBlock(blockpos, Blocks.COBBLESTONE.defaultBlockState(), 2); + } + + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/ScrubFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/ScrubFeature.java new file mode 100644 index 0000000000..b3fab741e5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/ScrubFeature.java @@ -0,0 +1,40 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.Blocks; +import net.minecraft.block.LeavesBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class ScrubFeature extends Feature +{ + public ScrubFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + + for(int j = 0; j < 64; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.getBlockState(blockpos).canBeReplacedByLeaves(world, blockpos) && world.getBlockState(blockpos.below()).getBlock() == Blocks.GRASS_BLOCK) + { + world.setBlock(blockpos, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/ShortBambooFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/ShortBambooFeature.java new file mode 100644 index 0000000000..40db7cf754 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/ShortBambooFeature.java @@ -0,0 +1,70 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BambooBlock; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.state.properties.BambooLeaves; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class ShortBambooFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos); + private static final BlockState field_214566_a = Blocks.BAMBOO.defaultBlockState().setValue(BambooBlock.AGE, Integer.valueOf(1)).setValue(BambooBlock.LEAVES, BambooLeaves.NONE).setValue(BambooBlock.STAGE, Integer.valueOf(1)); + private static final BlockState field_214567_aS = field_214566_a.setValue(BambooBlock.LEAVES, BambooLeaves.LARGE).setValue(BambooBlock.STAGE, Integer.valueOf(1)); + private static final BlockState field_214568_aT = field_214566_a.setValue(BambooBlock.LEAVES, BambooLeaves.LARGE).setValue(BambooBlock.STAGE, Integer.valueOf(1)); + private static final BlockState field_214569_aU = field_214566_a.setValue(BambooBlock.LEAVES, BambooLeaves.SMALL).setValue(BambooBlock.STAGE, Integer.valueOf(1)); + + public ShortBambooFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + while (pos.getY() > 1 && this.replace.matches(world, pos)) {pos = pos.below();} + + if (!this.placeOn.matches(world, pos.offset(2, 0, 2))) + { + // Abandon if we can't place the tree on this block + return false; + } + + pos = pos.above(); + + BlockPos.Mutable blockpos$mutableblockpos = new BlockPos.Mutable(pos.getX(), pos.getY(), pos.getZ()); + if (world.isEmptyBlock(blockpos$mutableblockpos)) + { + if (Blocks.BAMBOO.defaultBlockState().canSurvive(world, blockpos$mutableblockpos)) + { + int j = rand.nextInt(2) + 3; + + for(int l1 = 0; l1 < j && world.isEmptyBlock(blockpos$mutableblockpos); ++l1) + { + world.setBlock(blockpos$mutableblockpos, field_214566_a, 2); + blockpos$mutableblockpos.move(Direction.UP, 1); + } + + if (blockpos$mutableblockpos.getY() - pos.getY() >= 3) + { + world.setBlock(blockpos$mutableblockpos, field_214567_aS, 2); + world.setBlock(blockpos$mutableblockpos.move(Direction.DOWN, 1), field_214568_aT, 2); + world.setBlock(blockpos$mutableblockpos.move(Direction.DOWN, 1), field_214569_aU, 2); + } + } + } + + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/SmallBrownMushroomFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/SmallBrownMushroomFeature.java new file mode 100644 index 0000000000..54461ace0c --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/SmallBrownMushroomFeature.java @@ -0,0 +1,101 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.block.HugeMushroomBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class SmallBrownMushroomFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.MYCELIUM; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() instanceof BushBlock; + + public SmallBrownMushroomFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) { + startPos = startPos.below(); + } + + if (!this.placeOn.matches(world, startPos.offset(0, 0, 0))) { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + int height = 1 + rand.nextInt(2); + + for (int y = 0; y < height; y++) { + this.setBlock(world, pos.above(y), Blocks.MUSHROOM_STEM.defaultBlockState()); + } + + this.setBlock(world, pos.offset(0, height, 0), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(-1, height, 0), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(1, height, 0), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(0, height, -1), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(0, height, 1), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + + if (rand.nextInt(2) == 0) + { + this.setBlock(world, pos.offset(1, height, 1), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(-1, height, -1), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + } + else + { + this.setBlock(world, pos.offset(-1, height, 1), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(1, height, -1), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + } + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= 4; y++) + { + for (int x = -2; x <= 2; x++) + { + for (int z = -2; z <= 2; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/SmallCrystalFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/SmallCrystalFeature.java new file mode 100644 index 0000000000..b1e50ed453 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/SmallCrystalFeature.java @@ -0,0 +1,64 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.block.NetherCrystalBlock; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.state.properties.AttachFace; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class SmallCrystalFeature extends Feature +{ + public SmallCrystalFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + + for(int j = 0; j < 128; ++j) + { + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(rand); + AttachFace face; + switch (rand.nextInt(3)) + { + default: + case 0: + face = AttachFace.FLOOR; + break; + + case 1: + face = AttachFace.CEILING; + break; + + case 2: + face = AttachFace.WALL; + break; + } + + BlockState state = BOPBlocks.nether_crystal.defaultBlockState().setValue(NetherCrystalBlock.FACING, direction).setValue(NetherCrystalBlock.FACE, face); + BlockPos blockpos = pos.offset(rand.nextInt(4) - rand.nextInt(4), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(4) - rand.nextInt(4)); + + if (world.isEmptyBlock(blockpos) && state.canSurvive(world, blockpos)) + { + world.setBlock(blockpos, state, 2); + + ++i; + } + } + + return i > 10; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/SmallGlowshroomFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/SmallGlowshroomFeature.java new file mode 100644 index 0000000000..f78dc71ebb --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/SmallGlowshroomFeature.java @@ -0,0 +1,93 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.block.HugeMushroomBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class SmallGlowshroomFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.MYCELIUM; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() instanceof BushBlock; + + public SmallGlowshroomFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) { + startPos = startPos.below(); + } + + if (!this.placeOn.matches(world, startPos.offset(0, 0, 0))) { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + int height = 1 + rand.nextInt(4); + + for (int y = 0; y < height; y++) { + this.setBlock(world, pos.above(y), Blocks.MUSHROOM_STEM.defaultBlockState()); + } + + for (int x = -1; x <= 1; x++) + { + for (int z = -1; z <= 1; z++) + { + this.setBlock(world, pos.offset(x, height, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + } + } + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= 4; y++) + { + for (int x = -2; x <= 2; x++) + { + for (int z = -2; z <= 2; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/SmallRedMushroomFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/SmallRedMushroomFeature.java new file mode 100644 index 0000000000..deb5dfb0bc --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/SmallRedMushroomFeature.java @@ -0,0 +1,98 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.block.HugeMushroomBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class SmallRedMushroomFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.MYCELIUM; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() instanceof BushBlock; + + public SmallRedMushroomFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) { + startPos = startPos.below(); + } + + if (!this.placeOn.matches(world, startPos.offset(0, 0, 0))) { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + int height = 1 + rand.nextInt(2); + + for (int y = 0; y < height; y++) { + this.setBlock(world, pos.above(y), Blocks.MUSHROOM_STEM.defaultBlockState()); + } + + for (int x = -1; x <= 1; x++) + { + for (int z = -1; z <= 1; z++) + { + this.setBlock(world, pos.offset(x, height, z), Blocks.RED_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + } + } + + this.setBlock(world, pos.offset(0, height + 1, 0), Blocks.RED_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(-1, height + 1, 0), Blocks.RED_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(1, height + 1, 0), Blocks.RED_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(0, height + 1, -1), Blocks.RED_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(0, height + 1, 1), Blocks.RED_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= 4; y++) + { + for (int x = -2; x <= 2; x++) + { + for (int z = -2; z <= 2; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/SmallToadstoolFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/SmallToadstoolFeature.java new file mode 100644 index 0000000000..bfd12c1812 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/SmallToadstoolFeature.java @@ -0,0 +1,87 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.block.HugeMushroomBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class SmallToadstoolFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.MYCELIUM; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() instanceof BushBlock; + + public SmallToadstoolFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) { + startPos = startPos.below(); + } + + if (!this.placeOn.matches(world, startPos.offset(0, 0, 0))) { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + int height = 1 + rand.nextInt(1); + + for (int y = 0; y < height; y++) { + this.setBlock(world, pos.above(y), Blocks.MUSHROOM_STEM.defaultBlockState()); + } + + this.setBlock(world, pos.offset(0, height, 0), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= 4; y++) + { + for (int x = -2; x <= 2; x++) + { + for (int z = -2; z <= 2; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/StandardGrassFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/StandardGrassFeature.java new file mode 100644 index 0000000000..f2b22a9988 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/StandardGrassFeature.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class StandardGrassFeature extends Feature +{ + public StandardGrassFeature(Codec deserializer) + { + super(deserializer); + } + + public BlockState chooseGrassState(Random rand) + { + return Blocks.GRASS.defaultBlockState(); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + BlockState BlockState = this.chooseGrassState(rand); + + for (BlockState BlockState1 = world.getBlockState(pos); (BlockState1.isAir(world, pos) || BlockState1.is(BlockTags.LEAVES)) && pos.getY() > 0; BlockState1 = world.getBlockState(pos)) + { + pos = pos.below(); + } + + int i = 0; + + for (int j = 0; j < 128; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.isEmptyBlock(blockpos) && BlockState.canSurvive(world, blockpos)) + { + world.setBlock(blockpos, BlockState, 2); + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/WastelandGrassFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/WastelandGrassFeature.java new file mode 100644 index 0000000000..5e37d1d6f9 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/WastelandGrassFeature.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class WastelandGrassFeature extends Feature +{ + public WastelandGrassFeature(Codec deserializer) + { + super(deserializer); + } + + public BlockState chooseGrassState(Random rand) + { + return rand.nextInt(3) == 0 ? BOPBlocks.desert_grass.defaultBlockState() : BOPBlocks.dead_grass.defaultBlockState(); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + BlockState BlockState = this.chooseGrassState(rand); + + for (BlockState BlockState1 = world.getBlockState(pos); (BlockState1.isAir(world, pos) || BlockState1.is(BlockTags.LEAVES)) && pos.getY() > 0; BlockState1 = world.getBlockState(pos)) + { + pos = pos.below(); + } + + int i = 0; + + for (int j = 0; j < 128; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.isEmptyBlock(blockpos) && BlockState.canSurvive(world, blockpos)) + { + world.setBlock(blockpos, BlockState, 2); + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/BasicTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BasicTreeFeature.java new file mode 100644 index 0000000000..bf0557e34c --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BasicTreeFeature.java @@ -0,0 +1,350 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.*; +import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class BasicTreeFeature extends TreeFeatureBase +{ + public static class Builder extends InnerBuilder + { + @Override + public BasicTreeFeature create() + { + return new BasicTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight, this.leafLayers, this.leavesOffset, this.maxLeavesRadius, this.leavesLayerHeight, this.placeVinesOn, this.hangingChance); + } + } + + protected static abstract class InnerBuilder extends BuilderBase + { + protected int leafLayers; + protected int leavesOffset; + protected int maxLeavesRadius; + protected int leavesLayerHeight; + protected IBlockPosQuery placeVinesOn; + protected float hangingChance; + + public T leafLayers(int a) {this.leafLayers = a; return (T)this;} + public T leavesOffset(int a) {this.leavesOffset = a; return (T)this;} + public T leavesLayerHeight(int a) {this.leavesLayerHeight = a; return (T)this;} + public T maxLeavesRadius(int a) {this.maxLeavesRadius = a; return (T)this;} + + public T placeVinesOn(IBlockPosQuery a) {this.placeVinesOn = a; return (T)this;} + + public T hangingChance(float a) {this.hangingChance = a; return (T)this;} + + public InnerBuilder() + { + this.placeOn = (world, pos) -> + { + return world.getBlockState(pos).canOcclude(); + }; + this.minHeight = 4; + this.maxHeight = 7; + this.leafLayers = 4; + this.leavesOffset = 1; + this.maxLeavesRadius = 1; + this.leavesLayerHeight = 2; + this.placeVinesOn = (world, pos) -> + { + Material mat = world.getBlockState(pos).getMaterial(); + return mat == Material.AIR; + }; + this.hangingChance = 0.0F; + } + } + + protected int leafLayers; + protected int leavesOffset; + protected int maxLeavesRadius; + protected int leavesLayerHeight; + protected IBlockPosQuery placeVinesOn; + protected float hangingChance; + + protected BasicTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, + BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, + int minHeight, int maxHeight, int leafLayers, int leavesOffset, int maxLeavesRadius, int leavesLayerHeight, + IBlockPosQuery placeVinesOn, float hangingChance) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + + this.leafLayers = leafLayers; + this.leavesOffset = leavesOffset; + this.maxLeavesRadius = maxLeavesRadius; + this.leavesLayerHeight = leavesLayerHeight; + this.placeVinesOn = placeVinesOn; + this.hangingChance = hangingChance; + } + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos pos, MutableBoundingBox boundingBox) + { + int height = random.nextInt(this.maxHeight - this.minHeight) + this.minHeight; + boolean hasSpace = true; + + //Generate only if we are above the lowest bedrock level (1) and reach less than the world height + //There must be a gap of 1 between the top leaf block and the world height + if (pos.getY() >= 1 && pos.getY() + height + 1 <= 256) + { + int radius; + + for (int y = pos.getY(); y <= pos.getY() + 1 + height; y++) + { + radius = 1; + + //Don't check for space on the first level, if we are a sapling then there will + //already be a block here (the sapling itself) + if (y == pos.getY()) + { + radius = 0; + } + + //At and above the top log block, require a radius of 2 to be empty + if (y >= pos.getY() + 1 + height - 2) + { + radius = 2; + } + + for (int x = pos.getX() - radius; x <= pos.getX() + radius && hasSpace; ++x) + { + for (int z = pos.getZ() - radius; z <= pos.getZ() + radius && hasSpace; ++z) + { + if (y >= 0 && y < 256) + { + if (!this.replace.matches(world, new BlockPos(x, y, z))) + { + hasSpace = false; + } + } + else + { + hasSpace = false; + } + } + } + } + + if (!hasSpace) + { + return false; + } + else + { + BlockPos soilPos = pos.below(); + Block soil = world.getBlockState(soilPos).getBlock(); + boolean isSoil = soil.canSustainPlant(world.getBlockState(soilPos), world, soilPos, Direction.UP, (SaplingBlock) Blocks.OAK_SAPLING); + + if (this.placeOn.matches(world, soilPos) && isSoil && pos.getY() < 256 - height - 1) + { + soil.onPlantGrow(world.getBlockState(soilPos), world, soilPos, pos); + int leavesLayers = (this.leafLayers - 1); + + //Generates leaves at the top of the tree, going one block above the top log (<= rather than <) + for (int y = pos.getY() + height - leavesLayers; y <= pos.getY() + height; y++) + { + //Determines the distance from the top of the tree as a negative number + int currentLayer = y - (pos.getY() + height); + //Uses integer division truncation (-3 / 2 = -1, -2 / 2 = -1) to reduce + //the radius closer to the top of the tree. (2, 2, 1, 1) + int leavesRadius = this.maxLeavesRadius - currentLayer / this.leavesLayerHeight; + + for (int x = pos.getX() - leavesRadius; x <= pos.getX() + leavesRadius; x++) + { + int xDiff = x - pos.getX(); + + for (int z = pos.getZ() - leavesRadius; z <= pos.getZ() + leavesRadius; ++z) + { + int zDiff = z - pos.getZ(); + + //Randomly prevent the generation of leaves on the corners of each layer + //If the layer is the top layer, never generate the corners + if (Math.abs(xDiff) != leavesRadius || Math.abs(zDiff) != leavesRadius || random.nextInt(2) != 0 && currentLayer != 0) + { + BlockPos leavesPos = new BlockPos(x, y, z); + if (this.replace.matches(world, leavesPos)) + { + if (this.altLeaves != Blocks.AIR.defaultBlockState()) + { + if (random.nextInt(4) == 0) + { + this.setAltLeaves(world, leavesPos, changedLeaves, boundingBox); + } + else + { + this.placeLeaves(world, leavesPos, changedLeaves, boundingBox); + } + } + else + { + this.placeLeaves(world, leavesPos, changedLeaves, boundingBox); + } + } + } + } + } + } + + this.generateTrunk(changedLogs, boundingBox, world, pos, height); + + if (this.vine != Blocks.AIR.defaultBlockState()) + { + for (int y = pos.getY() - leavesLayers + height; y <= pos.getY() + height; y++) + { + //Determines the distance from the top of the tree as a negative number + int currentLayer = y - (pos.getY() + height); + //Uses integer division truncation (-3 / 2 = -1, -2 / 2 = -1) to reduce + //the radius closer to the top of the tree. (3, 3, 2, 2) + int leavesRadius = (this.maxLeavesRadius + this.leavesOffset) - currentLayer / this.leavesLayerHeight; + + for (int x = pos.getX() - leavesRadius; x <= pos.getX() + leavesRadius; x++) + { + for (int z = pos.getZ() - leavesRadius; z <= pos.getZ() + leavesRadius; z++) + { + BlockPos blockpos3 = new BlockPos(x, y, z); + + //Surround leaves on the edge of the tree with vines and extend them downwards + if (world.getBlockState(blockpos3).getMaterial() == Material.LEAVES) + { + BlockPos westPos = blockpos3.west(); + BlockPos eastPos = blockpos3.east(); + BlockPos northPos = blockpos3.north(); + BlockPos southPos = blockpos3.south(); + + if (random.nextInt(4) == 0 && this.placeVinesOn.matches(world, westPos)) + { + this.extendVines(world, westPos, Direction.EAST); + } + + if (random.nextInt(4) == 0 && this.placeVinesOn.matches(world, eastPos)) + { + this.extendVines(world, eastPos, Direction.WEST); + } + + if (random.nextInt(4) == 0 && this.placeVinesOn.matches(world, northPos)) + { + this.extendVines(world, northPos, Direction.SOUTH); + } + + if (random.nextInt(4) == 0 && this.placeVinesOn.matches(world, southPos)) + { + this.extendVines(world, southPos, Direction.NORTH); + } + } + } + } + } + } + + //Generate fruit or any other blocks that may hang off of the tree + if (this.hanging != Blocks.AIR.defaultBlockState()) this.generateHanging(world, pos, random, height); + + if (this.trunkFruit != Blocks.AIR.defaultBlockState()) + { + if (random.nextInt(5) == 0 && height > 5) + { + for (int l3 = 0; l3 < 2; ++l3) + { + for (Direction Direction : Direction.Plane.HORIZONTAL) + { + if (random.nextInt(4 - l3) == 0) + { + Direction Direction1 = Direction.getOpposite(); + this.generateTrunkFruit(world, random.nextInt(3), pos.offset(Direction1.getStepX(), height - 5 + l3, Direction1.getStepZ()), Direction); + } + } + } + } + } + + return true; + } + else + { + return false; + } + } + } + else + { + return false; + } + } + + protected void generateTrunk(Set changedBlocks, MutableBoundingBox boundingBox, IWorld world, BlockPos start, int height) + { + //Create the trunk from the bottom up, using < to ensure it is covered with one layer of leaves + for (int layer = 0; layer < height; ++layer) + { + BlockPos blockpos2 = start.above(layer); + if (this.replace.matches(world, blockpos2)) + { + this.placeLog(world, start.above(layer), changedBlocks, boundingBox); + } + } + } + + protected void generateHanging(IWorld world, BlockPos start, Random rand, int height) + { + //Generate below the bottom layer of leaves + int y = start.getY() + (height - this.leafLayers); + + for (int x = start.getX() - (maxLeavesRadius + 1); x <= start.getX() + (maxLeavesRadius + 1); x++) + { + for (int z = start.getZ() - (maxLeavesRadius + 1); z <= start.getZ() + (maxLeavesRadius + 1); z++) + { + BlockPos hangingPos = new BlockPos(x, y, z); + + if (!world.isEmptyBlock(hangingPos.above()) && (world.isEmptyBlock(hangingPos)) && rand.nextFloat() <= this.hangingChance) + { + this.setHanging(world, hangingPos); + } + } + } + } + + private void generateTrunkFruit(IWorld world, int age, BlockPos pos, Direction direction) + { + if (this.trunkFruit == Blocks.COCOA.defaultBlockState()) + { + this.setBlock(world, pos, this.trunkFruit.setValue(CocoaBlock.AGE, Integer.valueOf(age)).setValue(CocoaBlock.FACING, direction)); + } + else + { + this.setBlock(world, pos, this.trunkFruit.setValue(CocoaBlock.FACING, direction)); + } + } + + private BlockState getVineStateForSide(Direction side) + { + return this.vine.getBlock() instanceof VineBlock ? this.vine.setValue(VineBlock.getPropertyForFace(side), Boolean.valueOf(true)) : this.vine; + } + + private void extendVines(IWorld world, BlockPos pos, Direction side) + { + BlockState vineState = this.getVineStateForSide(side); + this.setBlock(world, pos, vineState); + + int length = 4; + + //Extend vine downwards for a maximum of 4 blocks + for (pos = pos.below(); this.placeVinesOn.matches(world, pos) && length > 0; length--) + { + this.setBlock(world, pos, vineState); + pos = pos.below(); + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/BigTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BigTreeFeature.java new file mode 100644 index 0000000000..d8e187b8d5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BigTreeFeature.java @@ -0,0 +1,440 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.google.common.collect.Lists; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.List; +import java.util.Objects; +import java.util.Random; +import java.util.Set; + +/*This class is heavily based on https://gist.github.com/grum/62cfdec0537e8db24eb3#file-bigtreefeature-java +additional information has been added from http://pastebin.com/XBLdGqXQ. This class has been cross-checked*/ +public class BigTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + private int trunkWidth; + private int foliageHeight; + private double foliageDensity; + + public Builder trunkWidth(int a) {this.trunkWidth = a; return this;} + public Builder foliageHeight(int a) {this.foliageHeight = a; return this;} + public Builder foliageDensity(int a) {this.foliageDensity = a; return this;} + + public Builder() + { + this.minHeight = 5; + this.maxHeight = 12; + this.trunkWidth = 1; + this.foliageHeight = 5; + this.foliageDensity = 1.0F; + } + + @Override + public BigTreeFeature create() + { + return new BigTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight, this.trunkWidth, this.foliageHeight, this.foliageDensity); + } + } + + private double trunkHeightScale = 0.618; + private double branchSlope = 0.381; + private double widthScale = 1; + private int trunkWidth = 1; + + //Configurable fields + private int foliageHeight; + private double foliageDensity; + + protected BigTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight, int trunkWidth, int foliageHeight, double foliageDensity) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + this.foliageHeight = foliageHeight; + this.foliageDensity = foliageDensity; + this.trunkWidth = trunkWidth; + } + + // Create a circular cross section. + // + // Used to nearly everything in the foliage, branches, and trunk. + // This is a good target for performance optimization. + + // Passed values: + // pos is the center location of the cross section + // radius is the radius of the section from the center + // direction is the direction the cross section is pointed, 0 for x, 1 + // for y, 2 for z material is the index number for the material to use + private void crossSection(IWorld world, BlockPos pos, float radius, Random random, MutableBoundingBox boundingBox, Set changedBlocks) + { + final int r = (int)((double)radius + trunkHeightScale); + + for (int dx = -r; dx <= r; dx++) + { + for (int dz = -r; dz <= r; dz++) + { + if (Math.pow((double)Math.abs(dx) + 0.5D, 2.0D) + Math.pow((double)Math.abs(dz) + 0.5D, 2.0D) <= (double)(radius * radius)) + { + BlockPos blockpos = pos.offset(dx, 0, dz); + if (this.replace.matches(world, blockpos)) + { + // Mojang sets leaves via the method used for logs. Probably intentional? + if (this.altLeaves != Blocks.AIR.defaultBlockState()) + { + int rand = random.nextInt(4); + + if (rand == 0) + { + this.placeBlock(world, blockpos, this.altLeaves, changedBlocks, boundingBox); + } + else + { + this.placeBlock(world, blockpos, this.leaves, changedBlocks, boundingBox); + } + } + else + { + this.placeBlock(world, blockpos, this.leaves, changedBlocks, boundingBox); + } + } + } + } + } + + } + + // Take the y position relative to the base of the tree. + // Return the distance the foliage should be from the trunk axis. + // Return a negative number if foliage should not be created at this + // height. This method is intended for overriding in child classes, + // allowing different shaped trees. This method should return a + // consistent value for each y (don't randomize). + private float treeShape(int height, int y) + { + if ((float)y < (float)height * 0.3F) + { + return -1.0F; + } + + float radius = (float)height / 2.0F; + float adjacent = radius - (float)y; + + float distance = MathHelper.sqrt(radius * radius - adjacent * adjacent); + + if (adjacent == 0.0F) + { + distance = radius; + } + else if (Math.abs(adjacent) >= radius) + { + return 0.0F; + } + + return distance * 0.5F; + } + + + // Take the y position relative to the base of the foliage cluster. + // Return the radius of the cluster at this y + // Return a negative number if no foliage should be created at this + // level. This method is intended for overriding in child classes, + // allowing foliage of different sizes and shapes. + private float foliageShape(int y) + { + /*if (y >= 0 && y < foliageHeight) + { + return y != 0 && y != 4 ? 3.0F : 2.0F; + } + else + { + return -1.0F; + }*/ + + + if (y < 0 || y >= foliageHeight) + { + return -1.0F; + } + else if (y == 0 || y == foliageHeight - 1) + { + return 2.0F; + } + else + { + return 3.0F; + } + } + + // Generate a cluster of foliage, with the base at blockPos + // The shape of the cluster is derived from foliageShape + // crossection is called to make each level. + private void foliageCluster(IWorld world, BlockPos pos, Random random, MutableBoundingBox boundingBox, Set changedBlocks) + { + for (int y = 0; y < foliageHeight; y++) + { + this.crossSection(world, pos.above(y), this.foliageShape(y), random, boundingBox, changedBlocks); + } + } + + // Check from coordinates start to end (both inclusive) for blocks + // other than air and foliage If a block other than air and foliage is + // found, return the number of steps taken. + // If no block other than air and foliage is found, return -1. + // Examples: + // If the third block searched is stone, return 2 + // If the first block searched is lava, return 0 + private int checkLineAndOptionallySet(Set changedBlocks, IWorld world, BlockPos startPos, BlockPos endPos, boolean set, MutableBoundingBox boundingBox) + { + if (!set && Objects.equals(startPos, endPos)) { + return -1; + } else { + //The distance between the two points, may be negative if the second pos is smaller + BlockPos delta = endPos.offset(-startPos.getX(), -startPos.getY(), -startPos.getZ()); + + int steps = this.getGreatestDistance(delta); + + //How much should be incremented with each iteration relative + //to the greatest distance which will have a value of 1.0F. + float dx = (float)delta.getX() / (float)steps; + float dy = (float)delta.getY() / (float)steps; + float dz = (float)delta.getZ() / (float)steps; + + //Iterates over all values between the start pos and end pos + for (int j = 0; j <= steps; ++j) + { + BlockPos deltaPos = startPos.offset((double)(0.5F + (float)j * dx), (double)(0.5F + (float)j * dy), (double)(0.5F + (float)j * dz)); + if (set) + { + this.placeLog(world, deltaPos, this.getLogAxis(startPos, deltaPos), changedBlocks, boundingBox); + } + else if (!this.isFree(world, deltaPos)) + { + return j; + } + } + + return -1; + } + } + + /** + * Returns the absolute greatest distance in the BlockPos object. + */ + private int getGreatestDistance(BlockPos posIn) + { + int i = MathHelper.abs(posIn.getX()); + int j = MathHelper.abs(posIn.getY()); + int k = MathHelper.abs(posIn.getZ()); + return k > i && k > j ? k : (j > i ? j : i); + } + + private Direction.Axis getLogAxis(BlockPos startPos, BlockPos endPos) + { + Direction.Axis axis = Direction.Axis.Y; + + //Find the difference between the start and end pos + int xDiff = Math.abs(endPos.getX() - startPos.getX()); + int zDiff = Math.abs(endPos.getZ() - startPos.getZ()); + int maxDiff = Math.max(xDiff, zDiff); + + //Check if the distance between the two positions is greater than 0 on either + //the x or the z axis. axis is set to the axis with the greatest distance + if (maxDiff > 0) + { + if (xDiff == maxDiff) + { + axis = Direction.Axis.X; + } + else if (zDiff == maxDiff) + { + axis = Direction.Axis.Z; + } + } + + return axis; + } + + private void makeFoliage(IWorld worldIn, int height, BlockPos pos, List coordinates, Random random, MutableBoundingBox boundingBox, Set changedBlocks) + { + for (FoliageCoordinates coordinate : coordinates) + { + if (this.trimBranches(height, coordinate.getBranchBase() - pos.getY())) + { + this.foliageCluster(worldIn, coordinate, random, boundingBox, changedBlocks); + } + } + } + + private boolean trimBranches(int height, int localY) + { + return (double)localY >= (double)height * 0.2D; + } + + private void makeTrunk(Set changedBlocks, IWorld world, BlockPos pos, int height, MutableBoundingBox boundingBox) + { + this.checkLineAndOptionallySet(changedBlocks, world, pos, pos.above(height), true, boundingBox); + + if (trunkWidth == 2) + { + this.checkLineAndOptionallySet(changedBlocks, world, pos.east(), pos.above(height).east(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.east().south(), pos.above(height).east().south(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.south(), pos.above(height).south(), true, boundingBox); + } + + if (trunkWidth == 4) + { + this.checkLineAndOptionallySet(changedBlocks, world, pos.east(), pos.above(height).east(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.east().south(), pos.above(height).east().south(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.south(), pos.above(height).south(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.north(), pos.above(height).north(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.north().east(), pos.above(height).north().east(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.east().east(), pos.above(height).east().east(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.south().east().east(), pos.above(height).south().east().east(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.south().south().east(), pos.above(height).south().south().east(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.south().south(), pos.above(height).south().south(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.west().south(), pos.above(height).west().south(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.west(), pos.above(height).west(), true, boundingBox); + } + } + + private void makeBranches(Set changedBlocks, IWorld world, int height, BlockPos origin, List coordinates, MutableBoundingBox boundingBox) + { + for (FoliageCoordinates coordinate : coordinates) + { + int branchBase = coordinate.getBranchBase(); + BlockPos baseCoord = new BlockPos(origin.getX(), branchBase, origin.getZ()); + if (!baseCoord.equals(coordinate) && this.trimBranches(height, branchBase - origin.getY())) + { + this.checkLineAndOptionallySet(changedBlocks, world, baseCoord, coordinate, true, boundingBox); + } + } + } + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random rand, BlockPos pos, MutableBoundingBox boundingBox) + { + Random random = new Random(rand.nextLong()); + int height = this.checkLocation(changedLogs, world, pos, this.minHeight + random.nextInt(this.maxHeight), boundingBox); + if (height == -1) { + return false; + } else { + this.setBlock(world, pos.below(), Blocks.DIRT.defaultBlockState()); + int trunkHeight = (int)((double)height * this.trunkHeightScale); + + if (trunkHeight >= height) { + trunkHeight = height - 1; + } + + // Define foliage clusters per y + int clustersPerY = (int)(1.382D + Math.pow(this.foliageDensity * (double)height / 13.0D, 2.0D)); + + if (clustersPerY < 1) + { + clustersPerY = 1; + } + + int trunkTop = pos.getY() + trunkHeight; + int relativeY = height - this.foliageHeight; + + List foliageCoords = Lists.newArrayList(); + foliageCoords.add(new FoliageCoordinates(pos.above(relativeY), trunkTop)); + + for(; relativeY >= 0; --relativeY) + { + float treeShape = this.treeShape(height, relativeY); + + if (treeShape < 0.0F) + { + continue; + } + + for (int i = 0; i < clustersPerY; ++i) + { + final double radius = 1.0D * treeShape * (random.nextFloat() + 0.328D); + final double angle = random.nextFloat() * 2.0F * Math.PI; + + final double x = radius * Math.sin(angle) + 0.5D; + final double z = radius * Math.cos(angle) + 0.5D; + + final BlockPos checkStart = pos.offset(x, relativeY - 1, z); + final BlockPos checkEnd = checkStart.above(5); + + // check the center column of the cluster for obstructions. + if (this.checkLineAndOptionallySet(changedLogs, world, checkStart, checkEnd, false, boundingBox) == -1) + { + // If the cluster can be created, check the branch path for obstructions. + final int dx = pos.getX() - checkStart.getX(); + final int dz = pos.getZ() - checkStart.getZ(); + + final double branchHeight = checkStart.getY() - Math.sqrt(dx * dx + dz * dz) * this.branchSlope; + final int branchTop = branchHeight > trunkTop ? trunkTop : (int)branchHeight; + final BlockPos checkBranchBase = new BlockPos(pos.getX(), branchTop, pos.getZ()); + + // Now check the branch path + if (this.checkLineAndOptionallySet(changedLogs, world, checkBranchBase, checkStart, false, boundingBox) == -1) + { + // If the branch path is clear, add the position to the list of foliage positions + foliageCoords.add(new FoliageCoordinates(checkStart, checkBranchBase.getY())); + } + } + } + } + + this.makeFoliage(world, height, pos, foliageCoords, random, boundingBox, changedLeaves); + this.makeTrunk(changedLogs, world, pos, trunkHeight, boundingBox); + this.makeBranches(changedLogs, world, height, pos, foliageCoords, boundingBox); + return true; + } + } + + private int checkLocation(Set changedBlocks, IWorld world, BlockPos pos, int height, MutableBoundingBox boundingBox) + { + if (!this.placeOn.matches(world, pos.below())) + { + return -1; + } + else + { + int step = this.checkLineAndOptionallySet(changedBlocks, world, pos, pos.above(height - 1), false, boundingBox); + + if (step == -1) + { + return height; + } + else + { + return step < 6 ? -1 : step; + } + } + } + + static class FoliageCoordinates extends BlockPos + { + private final int branchBase; + + public FoliageCoordinates(BlockPos pos, int branchBase) + { + super(pos.getX(), pos.getY(), pos.getZ()); + this.branchBase = branchBase; + } + + public int getBranchBase() + { + return this.branchBase; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/BulbTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BulbTreeFeature.java new file mode 100644 index 0000000000..0d7e112892 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BulbTreeFeature.java @@ -0,0 +1,227 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.DirectionalBlock; +import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class BulbTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + public Builder() + { + this.minHeight = 6; + this.maxHeight = 12; + } + + @Override + public BulbTreeFeature create() + { + return new BulbTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight); + } + + } + + protected BulbTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + } + + public boolean setCocoa(IWorld world, BlockPos pos, Direction side) + { + BlockState cocoaState = Blocks.COCOA.defaultBlockState().setValue(DirectionalBlock.FACING, side); + if (this.replace.matches(world, pos)) + { + this.setBlock(world, pos, cocoaState); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos, int baseHeight, int height) + { + for (int y = 0; y <= height; y++) + { + // require 3x3 for the leaves, 1x1 for the trunk + int radius = (y <= baseHeight ? 0 : 1); + + for (int x = -radius; x <= radius; x++) + { + for (int z = -radius; z <= radius; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + // note, there may be a sapling on the first layer - make sure this.replace matches it! + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } + + // generates a 'branch' of a leaf layer + public void generateBranch(IWorld world, Random random, BlockPos pos, Direction direction, Set changedLeaves, MutableBoundingBox boundingBox) + { + Direction sideways = direction.getClockWise(); + this.placeLeaves(world, pos.relative(direction, 1), changedLeaves, boundingBox); + this.placeLeaves(world, pos.above().relative(direction, 1), changedLeaves, boundingBox); + if (random.nextInt(3) > 0) + { + this.placeLeaves(world, pos.above().relative(direction, 1).relative(sideways, 1), changedLeaves, boundingBox); + } + } + + // generates a layer of leafs (2 blocks high) + public void generateLeafLayer(IWorld world, Random random, BlockPos pos, Set changedLogs, Set changedLeaves, MutableBoundingBox boundingBox) + { + for (Direction direction : Direction.Plane.HORIZONTAL) + { + this.generateBranch(world, random, pos, direction, changedLeaves, boundingBox); + } + + // add the trunk in the middle + this.placeLog(world, pos, changedLogs, boundingBox); + this.placeLog(world, pos.above(), changedLogs, boundingBox); + } + + public void generateTop(IWorld world, Random random, BlockPos pos, int topHeight, Set changedLogs, Set changedLeaves, MutableBoundingBox boundingBox) + { + for (int y = 0; y < topHeight; y++) + { + int radius = topHeight - 1 - y; + + for (int x = -radius; x <= radius; ++x) + { + for (int z = -radius; z <= radius; ++z) + { + if (Math.abs(x) < radius || Math.abs(z) < radius || random.nextInt(2) == 0) + { + this.placeLeaves(world, pos.offset(x, y, z), changedLeaves, boundingBox); + } + } + } + if (y < topHeight - 1) + { + // add the trunk in the middle + this.placeLog(world, pos.offset(0, y, 0), changedLogs, boundingBox); + } else { + // add leaves on top for certain + this.placeLeaves(world, pos.offset(0, y, 0), changedLeaves, boundingBox); + } + } + } + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos startPos, MutableBoundingBox boundingBox) + { + // Move down until we reach the ground + while (startPos.getY() > 1 && world.isEmptyBlock(startPos) || world.getBlockState(startPos).getMaterial() == Material.LEAVES) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos)) + { + // Abandon if we can't place the tree on this block + return false; + } + + // Choose heights + int height = GeneratorUtil.nextIntBetween(random, this.minHeight, this.maxHeight); + if (height < 6) {return false;} + int topHeight = 3; + int heightMinusTop = height - topHeight; + int numBranches = heightMinusTop / 5; + int baseHeight = heightMinusTop - (numBranches * 2); + + // Start on the space above ground + BlockPos pos = startPos.above(); + + if (!this.checkSpace(world, pos, baseHeight, height)) + { + // Abandon if there isn't enough room + return false; + } + + // Generate bottom of tree (trunk only) + for(int i = 0; i < baseHeight; i++) + { + this.placeLog(world, pos, changedLogs, boundingBox); + pos = pos.above(); + } + + // Generate middle of the tree - 2 steps at a time (trunk and leaves) + for (int i = 0; i < numBranches; i++) + { + this.generateLeafLayer(world, random, pos, changedLogs, changedLeaves, boundingBox); + pos = pos.above(2); + } + + // Generate the top of the tree + this.generateTop(world, random, pos, topHeight, changedLogs, changedLeaves, boundingBox); + + // Add vines + this.addVines(world, random, startPos, baseHeight, height, 3, 10); + + // Add cocoa + // this.addCocoa(world, random, startPos, baseHeight, 3); + + return true; + } + + protected void addVines(IWorld world, Random rand, BlockPos startPos, int baseHeight, int height, int leavesRadius, int generationAttempts) + { + if (this.vine == null) {return;} + for (int i = 0; i < generationAttempts; i++) + { + // choose a random direction + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(rand); + Direction back = direction.getOpposite(); + Direction sideways = direction.getClockWise(); + + // choose a random starting point somewhere just outside the boundary of the tree leaves + BlockPos pos = startPos.above(GeneratorUtil.nextIntBetween(rand, baseHeight + 1, height)).relative(direction, leavesRadius + 1).relative(sideways, GeneratorUtil.nextIntBetween(rand, -leavesRadius, leavesRadius)); + + // move back towards the center until we meet a leaf, then stick a vine on it + for (int l = 0; l < leavesRadius; l++) + { + if (world.getBlockState(pos.relative(back, 1 + l)) == this.leaves) { + this.setVine(world, rand, pos.relative(back, l), back, 4); + break; + } + } + } + } + + protected void addCocoa(IWorld world, Random rand, BlockPos startPos, int baseHeight, int generationAttempts) + { + for (int i = 0; i < generationAttempts; i++) + { + // choose a random direction + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(rand); + Direction back = direction.getOpposite(); + + // choose a random point next to the trunk + BlockPos pos = startPos.above(GeneratorUtil.nextIntBetween(rand, 1, baseHeight)).relative(direction, 1); + + // stick a cocoa pod on it + this.setCocoa(world, pos, back); + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/BushTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BushTreeFeature.java new file mode 100644 index 0000000000..8a8c4605dd --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BushTreeFeature.java @@ -0,0 +1,110 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.material.Material; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class BushTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + public Builder() + { + this.minHeight = 2; + this.maxHeight = 2; + } + + @Override + public BushTreeFeature create() + { + // Bushes shouldn't check for decay + if (this.leaves != Blocks.AIR.defaultBlockState()) + this.leaves = this.leaves; + + if (this.altLeaves != Blocks.AIR.defaultBlockState()) + this.altLeaves = this.altLeaves; + + return new BushTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight); + } + } + + protected BushTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + } + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos startPos, MutableBoundingBox boundingBox) + { + // Move down until we reach the ground + while (startPos.getY() > 1 && (world.isEmptyBlock(startPos) || world.getBlockState(startPos).getMaterial() == Material.AIR)) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos)) + { + // Abandon if we can't place the tree on this block + return false; + } + + // choose a random height + int height = GeneratorUtil.nextIntBetween(random, this.minHeight, this.maxHeight); + + // start from the block above the ground block + BlockPos pos = startPos.above(); + + //Generate a bush 3 blocks tall, with the bottom block already set to a log + for (int y = 0; y < height; ++y) + { + // log in the center + if (height - y > 1) + { + this.placeLog(world, pos.offset(0, y, 0), changedLogs, boundingBox); + } + + //Reduces the radius closer to the top of the bush + int leavesRadius = (height - y > 1 ? 2 : 1); + + for (int x = -leavesRadius; x <= leavesRadius; ++x) + { + for (int z = -leavesRadius; z <= leavesRadius; ++z) + { + //Randomly prevent the generation of leaves on the corners of each layer + if (Math.abs(x) < leavesRadius || Math.abs(z) < leavesRadius || random.nextInt(2) != 0) + { + if (this.altLeaves != Blocks.AIR.defaultBlockState()) + { + if (random.nextInt(4) == 0) + { + this.setAltLeaves(world, pos.offset(x, y, z), changedLeaves, boundingBox); + } + else + { + this.placeLeaves(world, pos.offset(x, y, z), changedLeaves, boundingBox); + } + } + else + { + this.placeLeaves(world, pos.offset(x, y, z), changedLeaves, boundingBox); + } + } + } + } + } + + return true; + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/CypressTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/CypressTreeFeature.java new file mode 100644 index 0000000000..747980a057 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/CypressTreeFeature.java @@ -0,0 +1,343 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.*; +import net.minecraft.block.material.Material; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class CypressTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + protected int trunkWidth; + + public Builder trunkWidth(int a) {this.trunkWidth = a; return this;} + + public Builder() + { + this.minHeight = 6; + this.maxHeight = 15; + this.placeOn = (world, pos) -> world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING); + this.replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getMaterial() == Material.WATER || world.getBlockState(pos).getBlock().is(BlockTags.SAPLINGS) || world.getBlockState(pos).getBlock() == Blocks.VINE || world.getBlockState(pos).getBlock() == BOPBlocks.willow_vine || world.getBlockState(pos).getBlock() == BOPBlocks.spanish_moss_plant || world.getBlockState(pos).getBlock() == BOPBlocks.spanish_moss || world.getBlockState(pos).getBlock() instanceof BushBlock; + this.log = BOPBlocks.willow_log.defaultBlockState(); + this.leaves = BOPBlocks.willow_leaves.defaultBlockState(); + this.vine = BOPBlocks.willow_vine.defaultBlockState(); + this.trunkWidth = 1; + } + + @Override + public CypressTreeFeature create() + { + return new CypressTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight, this.trunkWidth); + } + + } + + private int trunkWidth = 1; + + protected CypressTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight, int trunkWidth) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + this.trunkWidth = trunkWidth; + } + + public boolean checkSpace(IWorld world, BlockPos pos, int baseHeight, int height) + { + for (int y = 0; y <= height; y++) + { + int radius = this.trunkWidth - 1; + + for (int x = -radius; x <= radius; x++) + { + for (int z = -radius; z <= radius; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + // note, there may be a sapling on the first layer - make sure this.replace matches it! + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + + BlockPos pos2 = pos.offset(0, height - 2,0); + if (!world.getBlockState(pos2).canBeReplacedByLeaves(world, pos2)) + { + return false; + } + + return true; + } + + // generates a layer of leaves + public void generateLeafLayer(IWorld world, Random rand, BlockPos pos, int leavesRadius, Set changedLeaves, MutableBoundingBox boundingBox) + { + int start = -leavesRadius; + int end = leavesRadius; + + for (int x = start; x <= end; x++) + { + for (int z = start; z <= end; z++) + { + // skip corners + if ((leavesRadius > 0) && (x == start || x == end) && (z == start || z == end)) + { + continue; + } + + // Make ends more scraggly + if ((leavesRadius > 0) && ((x == start || x == end) || (z == start || z == end)) && rand.nextDouble() < 0.2) + { + continue; + } + + this.placeLeaves(world, pos.offset(x, 0, z), changedLeaves, boundingBox); + } + } + } + + public void generateBranch(IWorld world, Random rand, BlockPos pos, Direction direction, int length, Set changedLogs, Set changedLeaves, MutableBoundingBox boundingBox) + { + Direction.Axis axis = direction.getAxis(); + Direction sideways = direction.getClockWise(); + for (int i = 1; i <= length; i++) + { + BlockPos pos1 = pos.relative(direction, i); + int r = (i == 1 || i == length) ? 1 : 2; + for (int j = -r; j <= r; j++) + { + if (i < length || rand.nextInt(2) == 0) + { + this.placeLeaves(world, pos1.relative(sideways, j), changedLeaves, boundingBox); + } + } + if (length - i > 2) + { + this.placeLeaves(world, pos1.above(), changedLeaves, boundingBox); + this.placeLeaves(world, pos1.above().relative(sideways, -1), changedLeaves, boundingBox); + this.placeLeaves(world, pos1.above().relative(sideways, 1), changedLeaves, boundingBox); + this.placeLog(world, pos1, axis, changedLogs, boundingBox); + } + } + } + + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos startPos, MutableBoundingBox boundingBox) + { + // Move down until we reach the ground + while (startPos.getY() > 1 && this.replace.matches(world, startPos) || world.getBlockState(startPos).getMaterial() == Material.LEAVES) {startPos = startPos.below();} + + for (int x = 0; x <= this.trunkWidth - 1; x++) + { + for (int z = 0; z <= this.trunkWidth - 1; z++) + { + if (!this.placeOn.matches(world, startPos.offset(x, 0, z))) + { + // Abandon if we can't place the tree on this block + return false; + } + } + } + + // Choose heights + int height = GeneratorUtil.nextIntBetween(random, this.minHeight, this.maxHeight); + int baseHeight = GeneratorUtil.nextIntBetween(random, (int)(height * 0.6F), (int)(height * 0.4F)); + int leavesHeight = height - baseHeight; + int baseLeavesHeight = leavesHeight; + if (leavesHeight < 3) {return false;} + + leavesHeight = MathHelper.clamp(leavesHeight, 3, 5); + leavesHeight = MathHelper.clamp(leavesHeight + random.nextInt(3), 0, baseLeavesHeight); + + if (!this.checkSpace(world, startPos.above(), baseHeight, height)) + { + // Abandon if there isn't enough room + return false; + } + + // Start at the top of the tree + BlockPos pos = startPos.above(height); + + // Leaves at the top + this.placeLeaves(world, pos, changedLeaves, boundingBox); + pos.below(); + + // Add layers of leaves + for (int i = 0; i < leavesHeight; i++) + { + int radius = 3; + if (i == 0) + { + radius = 1; + } + else if (i <= 2) + { + radius = 2; + } + + this.generateLeafLayer(world, random, pos, radius, changedLeaves, boundingBox); + + pos = pos.below(); + } + + this.placeSpanishMoss(world, random, pos); + + // We make the radius to check 1 less than the width + int trunkRadius = this.trunkWidth - 1; + + // Generate the trunk + for (int x = -trunkRadius; x <= trunkRadius; x++) + { + for (int z = -trunkRadius; z <= trunkRadius; z++) + { + int dist = Math.abs(x) + Math.abs(z); + + if (dist > trunkRadius) + { + continue; + } + + int heightHere = height - 1; + if (dist == 1) + { + heightHere = (int) (height * (0.2 + random.nextDouble() * 0.15)); + } + + heightHere += random.nextInt(2); + + for (int y = 0; y < heightHere; y++) + { + BlockPos local = startPos.offset(x, y, z); + boolean air = world.getBlockState(local).getFluidState().isEmpty(); + + this.placeLog(world, local, changedLogs, boundingBox); + + if (x == 0 && z == 0 && air && y < heightHere - leavesHeight + 1) + { + if (y >= baseHeight && random.nextInt(3) == 0) + { + // Big branch + double theta = Math.PI * random.nextDouble() * 2; + + int length = 2 + random.nextInt(3); + + BlockPos branchPos = null; + for (int i = 0; i < length; i++) + { + branchPos = local.offset(Math.cos(theta) * i, i / 2, Math.sin(theta) * i); + + this.placeLog(world, branchPos, changedLogs, boundingBox); + } + + generateLeafLayer(world, random, branchPos, 2, changedLeaves, boundingBox); + generateLeafLayer(world, random, branchPos.above(), 1, changedLeaves, boundingBox); + if (random.nextBoolean()) + { + generateLeafLayer(world, random, branchPos.above(2), 0, changedLeaves, boundingBox); + } + + this.placeSpanishMoss(world, random, branchPos); + + } + else if (y >= baseHeight && random.nextInt(3) == 0) + { + // Small branch + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(random); + BlockPos offset = local.relative(direction); + + this.placeLog(world, offset, changedLogs, boundingBox); + + for (Direction dir : Direction.values()) + { + if (random.nextDouble() > 0.2) + { + this.placeLeaves(world, offset.relative(dir), changedLeaves, boundingBox); + } + } + + this.placeSpanishMoss(world, random, offset); + } + } + } + } + } + + return true; + } + + @Override + public boolean placeLeaves(IWorld world, BlockPos pos, Set changedBlocks, MutableBoundingBox boundingBox) + { + if (world.getBlockState(pos).canBeReplacedByLeaves(world, pos)) + { + this.setBlock(world, pos, this.leaves); + this.placeBlock(world, pos, this.leaves, changedBlocks, boundingBox); + return true; + } + return false; + } + + private void placeSpanishMoss(IWorld p_236429_1_, Random p_236429_2_, BlockPos p_236429_3_) + { + BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable(); + + for(int i = 0; i < 50; ++i) + { + blockpos$mutable.setWithOffset(p_236429_3_, p_236429_2_.nextInt(5) - p_236429_2_.nextInt(5), p_236429_2_.nextInt(3) - p_236429_2_.nextInt(3), p_236429_2_.nextInt(5) - p_236429_2_.nextInt(5)); + if (p_236429_1_.isEmptyBlock(blockpos$mutable)) + { + BlockState blockstate = p_236429_1_.getBlockState(blockpos$mutable.above()); + if (blockstate.getBlock() == BOPBlocks.willow_leaves) + { + int j = MathHelper.nextInt(p_236429_2_, 1, 3); + + if (p_236429_2_.nextInt(5) == 0) + { + j = 1; + } + + placeSpanishMossColumn(p_236429_1_, p_236429_2_, blockpos$mutable, j, 17, 25); + } + } + } + } + + public static void placeSpanishMossColumn(IWorld p_236427_0_, Random p_236427_1_, BlockPos.Mutable p_236427_2_, int p_236427_3_, int p_236427_4_, int p_236427_5_) + { + for(int i = 0; i <= p_236427_3_; ++i) + { + if (p_236427_0_.isEmptyBlock(p_236427_2_)) + { + if (i == p_236427_3_ || !p_236427_0_.isEmptyBlock(p_236427_2_.below())) + { + p_236427_0_.setBlock(p_236427_2_, BOPBlocks.spanish_moss.defaultBlockState().setValue(AbstractTopPlantBlock.AGE, Integer.valueOf(MathHelper.nextInt(p_236427_1_, p_236427_4_, p_236427_5_))), 2); + break; + } + + p_236427_0_.setBlock(p_236427_2_, BOPBlocks.spanish_moss_plant.defaultBlockState(), 2); + } + + p_236427_2_.move(Direction.DOWN); + } + + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/MahoganyTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/MahoganyTreeFeature.java new file mode 100644 index 0000000000..06d702fa4c --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/MahoganyTreeFeature.java @@ -0,0 +1,202 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.SaplingBlock; +import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class MahoganyTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + public Builder() + { + this.log = BOPBlocks.mahogany_log.defaultBlockState(); + this.leaves = BOPBlocks.mahogany_leaves.defaultBlockState(); + this.minHeight = 8; + this.maxHeight = 14; + } + + @Override + public MahoganyTreeFeature create() + { + return new MahoganyTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight); + } + } + + protected MahoganyTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, + BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, + int minHeight, int maxHeight) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + } + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos pos, MutableBoundingBox boundingBox) + { + int height = random.nextInt(this.maxHeight - this.minHeight) + this.minHeight; + boolean hasSpace = true; + + //Generate only if we are above the lowest bedrock level (1) and reach less than the world height + //There must be a gap of 1 between the top leaf block and the world height + if (pos.getY() >= 1 && pos.getY() + height + 1 <= 256) + { + int radius; + + for (int y = pos.getY(); y <= pos.getY() + 1 + height; y++) + { + radius = 1; + + //Don't check for space on the first level, if we are a sapling then there will + //already be a block here (the sapling itself) + if (y == pos.getY()) + { + radius = 0; + } + + //At and above the top log block, require a radius of 2 to be empty + if (y >= pos.getY() + 1 + height - 2) + { + radius = 2; + } + + for (int x = pos.getX() - radius; x <= pos.getX() + radius && hasSpace; ++x) + { + for (int z = pos.getZ() - radius; z <= pos.getZ() + radius && hasSpace; ++z) + { + if (y >= 0 && y < 256) + { + if (!this.replace.matches(world, new BlockPos(x, y, z))) + { + hasSpace = false; + } + } + else + { + hasSpace = false; + } + } + } + } + + if (!hasSpace) + { + return false; + } + else + { + BlockPos soilPos = pos.below(); + Block soil = world.getBlockState(soilPos).getBlock(); + boolean isSoil = soil.canSustainPlant(world.getBlockState(soilPos), world, soilPos, Direction.UP, (SaplingBlock) Blocks.OAK_SAPLING); + + if (this.placeOn.matches(world, soilPos) && isSoil && pos.getY() < 256 - height - 1) + { + soil.onPlantGrow(world.getBlockState(soilPos), world, soilPos, pos); + + this.generateTrunk(changedLogs, changedLeaves, boundingBox, world, pos, height); + + return true; + } + else + { + return false; + } + } + } + else + { + return false; + } + } + + protected void generateTrunk(Set changedLogs, Set changedLeaves, MutableBoundingBox boundingBox, IWorld world, BlockPos start, int height) + { + int endHeight = height; + + for (int layer = 0; layer <= endHeight - 3; layer++) + { + BlockPos middlePos = start.above(layer); + + if (this.replace.matches(world, middlePos)) + { + this.placeLog(world, middlePos, changedLogs, boundingBox); + } + } + + //Generate upper branches + BlockPos branchStartPos = start.above(endHeight - 3); + + generateBranch(changedLogs, changedLeaves, boundingBox, world, branchStartPos, Direction.NORTH); + generateBranch(changedLogs, changedLeaves, boundingBox, world, branchStartPos, Direction.EAST); + generateBranch(changedLogs, changedLeaves, boundingBox, world, branchStartPos, Direction.SOUTH); + generateBranch(changedLogs, changedLeaves, boundingBox, world, branchStartPos, Direction.WEST); + } + + private void generateBranch(Set changedLogs, Set changedLeaves, MutableBoundingBox boundingBox, IWorld world, BlockPos middle, Direction direction) + { + BlockPos pos = middle; + int length = 1 + world.getRandom().nextInt(2); + + for (int i = 0; i <= length - 1; i++) + { + if (replace.matches(world, pos.relative(direction, i+1))) + { + this.placeLog(world, pos.relative(direction, i+1), direction.getAxis(), changedLogs, boundingBox); + } + } + + int height = 1 + world.getRandom().nextInt(2); + for (int i = 0; i <= height; i++) + { + if (replace.matches(world, pos.relative(direction, length+1).above(i+1))) + { + this.placeLog(world, pos.relative(direction, length+1).above(i+1), Direction.Axis.Y, changedLogs, boundingBox); + } + } + + + pos = pos.relative(direction, length+1).above(height+2); + + int radius = 2; + for (int x = -(radius-1); x <= (radius-1); x++) + { + for (int z = -(radius - 1); z <= (radius - 1); z++) + { + this.placeLeaves(world, pos.offset(x,0,z), changedLeaves, boundingBox); + } + } + + for (int x = -radius; x <= radius; x++) + { + for (int z = -radius; z <= radius; z++) + { + if ((x == -radius || x == radius) && (z == -radius || z == radius)) + { + continue; + } + else + { + this.placeLeaves(world, pos.offset(x,-1,z), changedLeaves, boundingBox); + } + } + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/PalmTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/PalmTreeFeature.java new file mode 100644 index 0000000000..0df4dd2692 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/PalmTreeFeature.java @@ -0,0 +1,166 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.*; +import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class PalmTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + public Builder() + { + this.placeOn = (world, pos) -> + { + Block ground = world.getBlockState(pos).getBlock(); + return (world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING) || (ground == BOPBlocks.white_sand || ground == Blocks.RED_SAND || ground == Blocks.SAND)); + }; + this.minHeight = 10; + this.maxHeight = 14; + this.log = BOPBlocks.palm_log.defaultBlockState(); + this.leaves = BOPBlocks.palm_leaves.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true); + } + + @Override + public PalmTreeFeature create() + { + return new PalmTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight); + } + + } + + protected PalmTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + } + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos startPos, MutableBoundingBox boundingBox) + { + // Move down until we reach the ground + while (startPos.getY() > 1 && world.isEmptyBlock(startPos) || world.getBlockState(startPos).getMaterial() == Material.LEAVES) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos)) + { + // Abandon if we can't place the tree on this block + return false; + } + + // Generation settings + int height = GeneratorUtil.nextIntBetween(random, this.minHeight, this.maxHeight); + int leavesRadius = 2; + int heightMinusTop = height - leavesRadius - 1; + boolean slant = false; + Direction direction = Direction.getRandom(random); //The direction the palm tree curves towards + if (direction == Direction.DOWN || direction == Direction.UP) + { + slant = false; + } + double baseSlant = random.nextInt(35) / 100D; + double slantMultiplier = 1.3D; + + if (height < 8) {return false;} //Prevent trees from being too small + + // Move up to space above ground + BlockPos pos = startPos.above(); + + if (!this.checkSpace(world, pos, height, 1)) + { + // Abandon if there isn't enough room + return false; + } + + double slantOffset = baseSlant; + + // Generate trunk of tree (trunk only) + for(int step = 0; step <= heightMinusTop; step++) + { + BlockPos offsetPos = pos.above(step); + + if (slant == true) + { + offsetPos = pos.above(step).relative(direction, (int)Math.floor(slantOffset)); + } + + if (step == heightMinusTop) + { + // Generate top of tree + this.placeLog(world, offsetPos, changedLogs, boundingBox); + generateLeavesTop(world, offsetPos, leavesRadius, changedLeaves, boundingBox); + break; + } + + this.placeLog(world, offsetPos, changedLogs, boundingBox); + + //As the height increases, slant more drastically + slantOffset *= slantMultiplier; + } + + return true; + } + + public boolean checkSpace(IWorld world, BlockPos pos, int height, int radius) + { + for (int y = 0; y <= height; y++) + { + for (int x = -radius; x <= radius; x++) + { + for (int z = -radius; z <= radius; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + // note, there may be a sapling on the first layer - make sure this.replace matches it! + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } + + // generate the top of the tree (3 blocks) + public void generateLeavesTop(IWorld world, BlockPos pos, int maxRadius, Set changedLeaves, MutableBoundingBox boundingBox) + { + placeLeaves(world, pos.offset(2, -1, 0), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(-2, -1, 0), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(0, -1, 2), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(0, -1, -2), changedLeaves, boundingBox); + + placeLeaves(world, pos.offset(1, 0, 0), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(-1, 0, 0), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(0, 0, 1), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(0, 0, -1), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(2, 0, 2), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(-2, 0, -2), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(2, 0, -2), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(-2, 0, 2), changedLeaves, boundingBox); + + placeLeaves(world, pos.offset(1, 1, -1), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(-1, 1, 1), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(1, 1, 1), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(-1, 1, -1), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(0, 1, 0), changedLeaves, boundingBox); + + placeLeaves(world, pos.offset(2, 2, 0), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(-2, 2, 0), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(0, 2, 2), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(0, 2, -2), changedLeaves, boundingBox); + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/PoplarTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/PoplarTreeFeature.java new file mode 100644 index 0000000000..47cb9e1ffa --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/PoplarTreeFeature.java @@ -0,0 +1,164 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.BlockState; +import net.minecraft.block.material.Material; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class PoplarTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + public Builder() + { + this.minHeight = 12; + this.maxHeight = 15; + } + + @Override + public PoplarTreeFeature create() + { + return new PoplarTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight); + } + + } + + protected PoplarTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + } + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos startPos, MutableBoundingBox boundingBox) + { + // Move down until we reach the ground + while (startPos.getY() > 1 && world.isEmptyBlock(startPos) || world.getBlockState(startPos).getMaterial() == Material.LEAVES) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos)) + { + // Abandon if we can't place the tree on this block + return false; + } + + // Choose heights and width + int height = GeneratorUtil.nextIntBetween(random, this.minHeight, this.maxHeight); + if (height < 4) {return false;} + int baseHeight = height / 3; + int leavesHeight = height - baseHeight; + + // Move up to space above ground + BlockPos pos = startPos.above(); + + if (!this.checkSpace(world, pos, baseHeight, height)) + { + // Abandon if there isn't enough room + return false; + } + + // Generate bottom of tree (trunk only) + for(int i = 0; i < baseHeight; i++) + { + this.placeLog(world, pos, changedLogs, boundingBox); + pos = pos.above(); + } + + for (int i = 1; i < leavesHeight - 3; i++) + { + for (int xx = -1; xx < 2; xx++) + { + for (int zz = -1; zz < 2; zz++) + { + this.placeLeaves(world, pos.offset(xx, i, zz), changedLeaves, boundingBox); + } + } + } + + // Generate middle of the tree + for(int i = 0; i < leavesHeight; i++) + { + int radius = radius(i, leavesHeight); + this.generateLeafLayer(world, pos, radius, changedLeaves, boundingBox); + if (leavesHeight - i > 2) {this.placeLog(world, pos, changedLogs, boundingBox);} + pos = pos.above(); + } + + return true; + } + + public int radius(int height, int maxHeight) + { + float x = (float)height / (float)maxHeight; + float maxRadius = 1.0F + maxHeight * 0.10F; + // this function creates a curved profile which has its widest point 1/4 from the bottom and a pointy top + float r = maxRadius * 0.6667F * x * (1/(x*x + 0.08173F) - 0.9244F); + return (int)(r + 0.5F); + } + + public boolean checkSpace(IWorld world, BlockPos pos, int baseHeight, int height) + { + for (int y = 0; y <= height; y++) + { + // require 3x3 for the leaves, 1x1 for the trunk + int radius = (y <= baseHeight ? 0 : 1); + for (int x = -radius; x <= radius; x++) + { + for (int z = -radius; z <= radius; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + // note, there may be a sapling on the first layer - make sure this.replace matches it! + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } + + // generates a layer of leafs with the given radius + public void generateLeafLayer(IWorld world, BlockPos pos, int radius, Set changedLeaves, MutableBoundingBox boundingBox) + { + for(int x = -radius; x <= radius; x++) + { + for(int z = -radius; z <= radius; z++) + { + if (radius < 2) + { + if (x*x + z*z <= radius*radius) + { + this.placeLeaves(world, pos.offset(x, 0, z), changedLeaves, boundingBox); + } + } + else + { + if ((x == -radius || x == radius) && (z == -radius || z == radius)) { continue; } + + if (x == -radius || x == radius || z == -radius || z == radius) + { + if (world.getRandom().nextInt(3) != 0) { + this.placeLeaves(world, pos.offset(x, 0, z), changedLeaves, boundingBox); + } + } + else + { + this.placeLeaves(world, pos.offset(x, 0, z), changedLeaves, boundingBox); + } + } + } + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/RedwoodTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/RedwoodTreeFeature.java new file mode 100644 index 0000000000..4469f50dbc --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/RedwoodTreeFeature.java @@ -0,0 +1,323 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class RedwoodTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + protected int trunkWidth; + + public Builder trunkWidth(int a) {this.trunkWidth = a; return this;} + + public Builder() + { + this.minHeight = 10; + this.maxHeight = 30; + this.log = BOPBlocks.redwood_log.defaultBlockState(); + this.leaves = BOPBlocks.redwood_leaves.defaultBlockState(); + this.vine = Blocks.VINE.defaultBlockState(); + this.trunkWidth = 1; + } + + @Override + public RedwoodTreeFeature create() + { + return new RedwoodTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight, this.trunkWidth); + } + + } + + private int trunkWidth = 1; + + protected RedwoodTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight, int trunkWidth) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + this.trunkWidth = trunkWidth; + } + + public boolean checkSpace(IWorld world, BlockPos pos, int baseHeight, int height) + { + for (int y = 0; y <= height; y++) + { + + int trunkWidth = (this.trunkWidth * (height - y) / height) + 1; + int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D); + int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D); + + // require 3x3 for the leaves, 1x1 for the trunk + int start = (y <= baseHeight ? trunkStart : trunkStart - 1); + int end = (y <= baseHeight ? trunkEnd : trunkEnd + 1); + + for (int x = start; x <= end; x++) + { + for (int z = start; z <= end; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + // note, there may be a sapling on the first layer - make sure this.replace matches it! + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } + + // generates a layer of leafs + public void generateLeafLayer(IWorld world, Random rand, BlockPos pos, int leavesRadius, int trunkStart, int trunkEnd, Set changedLeaves, MutableBoundingBox boundingBox) + { + int start = trunkStart - leavesRadius; + int end = trunkEnd + leavesRadius; + + for (int x = start; x <= end; x++) + { + for (int z = start; z <= end; z++) + { + // skip corners + if ((leavesRadius > 0 ) && (x == start || x == end) && (z == start || z == end)) {continue;} + int distFromTrunk = (x < 0 ? trunkStart - x : x - trunkEnd) + (z < 0 ? trunkStart - z : z - trunkEnd); + + // set leaves as long as it's not too far from the trunk to survive + if (distFromTrunk < 4 || (distFromTrunk == 4 && rand.nextInt(2) == 0)) + { + this.placeLeaves(world, pos.offset(x, 0, z), changedLeaves, boundingBox); + } + } + } + } + + public void generateBranch(IWorld world, Random rand, BlockPos pos, Direction direction, int length, Set changedLogs, Set changedLeaves, MutableBoundingBox boundingBox) + { + Direction.Axis axis = direction.getAxis(); + Direction sideways = direction.getClockWise(); + for (int i = 1; i <= length; i++) + { + BlockPos pos1 = pos.relative(direction, i); + int r = (i == 1 || i == length) ? 1 : 2; + for (int j = -r; j <= r; j++) + { + if (i < length || rand.nextInt(2) == 0) + { + this.placeLeaves(world, pos1.relative(sideways, j), changedLeaves, boundingBox); + } + } + if (length - i > 2) + { + this.placeLeaves(world, pos1.above(), changedLeaves, boundingBox); + this.placeLeaves(world, pos1.above().relative(sideways, -1), changedLeaves, boundingBox); + this.placeLeaves(world, pos1.above().relative(sideways, 1), changedLeaves, boundingBox); + this.placeLog(world, pos1, axis, changedLogs, boundingBox); + } + } + } + + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos startPos, MutableBoundingBox boundingBox) + { + // Move down until we reach the ground + while (startPos.getY() > 1 && world.isEmptyBlock(startPos) || world.getBlockState(startPos).getMaterial() == Material.LEAVES) {startPos = startPos.below();} + + for (int x = 0; x <= this.trunkWidth - 1; x++) + { + for (int z = 0; z <= this.trunkWidth - 1; z++) + { + if (!this.placeOn.matches(world, startPos.offset(x, 0, z))) + { + // Abandon if we can't place the tree on this block + return false; + } + } + } + + // Choose heights + int height = GeneratorUtil.nextIntBetween(random, this.minHeight, this.maxHeight); + int baseHeight = GeneratorUtil.nextIntBetween(random, (int)(height * 0.6F), (int)(height * 0.4F)); + int leavesHeight = height - baseHeight; + if (leavesHeight < 3) {return false;} + + if (!this.checkSpace(world, startPos.above(), baseHeight, height)) + { + // Abandon if there isn't enough room + return false; + } + + // Start at the top of the tree + BlockPos pos = startPos.above(height); + + // Leaves at the top + this.placeLeaves(world, pos, changedLeaves, boundingBox); + pos.below(); + + // Add layers of leaves + for (int i = 0; i < leavesHeight; i++) + { + int trunkWidth = (this.trunkWidth * i / height) + 1; + int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D); + int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D); + + + int radius = Math.min(Math.min((i + 2) / 4, 2 + (leavesHeight - i)), 4); + if (radius == 0) + { + this.placeLeaves(world, pos, changedLeaves, boundingBox); + } + else if (radius < 2) + { + this.generateLeafLayer(world, random, pos, radius, trunkStart, trunkEnd, changedLeaves, boundingBox); + } + else + { + this.generateBranch(world, random, pos.offset(trunkStart, 0, trunkStart), Direction.NORTH, radius, changedLogs, changedLeaves, boundingBox); + this.generateBranch(world, random, pos.offset(trunkEnd, 0, trunkStart), Direction.EAST, radius, changedLogs, changedLeaves, boundingBox); + this.generateBranch(world, random, pos.offset(trunkEnd, 0, trunkEnd), Direction.SOUTH, radius, changedLogs, changedLeaves, boundingBox); + this.generateBranch(world, random, pos.offset(trunkStart, 0, trunkEnd), Direction.WEST, radius, changedLogs, changedLeaves, boundingBox); + } + pos = pos.below(); + } + + // Create the trunk widths scales + double[] scalingFactors = new double[]{ + (0.35 + random.nextDouble() * 0.15), + (0.07 + random.nextDouble() * 0.1), + (random.nextDouble() * 0.06) + }; + + if (this.trunkWidth == 3) { + scalingFactors = new double[]{ + (0.6 + random.nextDouble() * 0.2), + (0.1 + random.nextDouble() * 0.2), + (0.03 + random.nextDouble() * 0.09) + }; + } + + // Generate the trunk + for (int x = -this.trunkWidth; x <= this.trunkWidth; x++) { + for (int z = -this.trunkWidth; z <= this.trunkWidth; z++) { + int dist = Math.abs(x) + Math.abs(z); + + int heightHere = height - 2; + + // If we're not the center of the trunk on a single trunk width, give up + if (this.trunkWidth == 1 && dist > 0) { + continue; + } + + // Scale bigger widths + if (dist == 1) { + heightHere = (int) (height * scalingFactors[0]); + } else if (dist == 2) { + heightHere = (int) (height * scalingFactors[1]); + } else if (dist == 3) { + heightHere = (int) (height * scalingFactors[2]); + } else if (dist > 3) { + continue; + } + + heightHere += random.nextInt(2); + + for (int y = 0; y < heightHere; y++) + { + BlockPos local = startPos.offset(x, y, z); + this.placeLog(world, local, changedLogs, boundingBox); + + if (dist > 0 && y > 4 && y < (baseHeight - 2) && random.nextInt(10) == 0) { + double theta; + if (x == 0 && z == 0) { + // Prevents bushes originating from the center from generating too low + if (y < 10) { + continue; + } + + theta = Math.PI * random.nextDouble() * 2; + } else { + // Make sure the branches only go in the same direction of the current trunk position from the center + double angleFromCenter = Math.atan2(x, z); + + theta = angleFromCenter + (Math.PI * (random.nextDouble() * 0.5 - 0.25)); + } + + int branchLength = (3 - dist) + 1 + random.nextInt(2); + + BlockPos branchPos = null; + for (int i = 0; i < branchLength; i++) { + branchPos = local.offset(Math.cos(theta) * i, i / 2, Math.sin(theta) * i); + + this.placeLog(world, branchPos, changedLogs, boundingBox); + } + + this.generateBush(changedLogs, changedLeaves, world, random, branchPos, boundingBox); + } + } + } + } + + return true; + } + + protected boolean generateBush(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos pos, MutableBoundingBox boundingBox) + { + //Generate a bush 3 blocks tall, with the center block set to a log + for (int y = -1; y < 2; ++y) + { + // log in the center + if (y == 0) + { + this.placeLog(world, pos.offset(0, y, 0), changedLogs, boundingBox); + } + + //Reduces the radius closer to the top of the bush + int leavesRadius = y == 0 ? 2 : 1; + + for (int x = -leavesRadius; x <= leavesRadius; ++x) + { + for (int z = -leavesRadius; z <= leavesRadius; ++z) + { + //Randomly prevent the generation of leaves on the corners of each layer + if (Math.abs(x) < leavesRadius || Math.abs(z) < leavesRadius || random.nextInt(2) != 0) + { + if (this.altLeaves != Blocks.AIR.defaultBlockState()) + { + if (random.nextInt(4) == 0) + { + this.setAltLeaves(world, pos.offset(x, y, z), changedLeaves, boundingBox); + } + else + { + this.placeLeaves(world, pos.offset(x, y, z), changedLeaves, boundingBox); + } + } + else + { + this.placeLeaves(world, pos.offset(x, y, z), changedLeaves, boundingBox); + } + } + } + } + } + + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/TaigaTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/TaigaTreeFeature.java new file mode 100644 index 0000000000..f0485ed475 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/TaigaTreeFeature.java @@ -0,0 +1,236 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class TaigaTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + protected int trunkWidth; + + public Builder trunkWidth(int a) {this.trunkWidth = a; return this;} + + public Builder() + { + this.minHeight = 6; + this.maxHeight = 12; + this.log = Blocks.SPRUCE_LOG.defaultBlockState(); + this.leaves = Blocks.SPRUCE_LEAVES.defaultBlockState(); + this.vine = Blocks.VINE.defaultBlockState(); + this.trunkWidth = 1; + } + + @Override + public TaigaTreeFeature create() + { + return new TaigaTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight, this.trunkWidth); + } + + } + + private int trunkWidth = 1; + + protected TaigaTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight, int trunkWidth) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + this.trunkWidth = trunkWidth; + } + + public boolean checkSpace(IWorld world, BlockPos pos, int baseHeight, int height) + { + for (int y = 0; y <= height; y++) + { + int trunkWidth = (this.trunkWidth * (height - y) / height) + 1; + int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D); + int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D); + + // require 3x3 for the leaves, 1x1 for the trunk + int start = (y <= baseHeight ? trunkStart : trunkStart - 1); + int end = (y <= baseHeight ? trunkEnd : trunkEnd + 1); + + for (int x = start; x <= end; x++) + { + for (int z = start; z <= end; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + // note, there may be a sapling on the first layer - make sure this.replace matches it! + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } + + // generates a layer of leafs + public void generateLeafLayer(IWorld world, Random rand, BlockPos pos, int leavesRadius, int trunkStart, int trunkEnd, Set changedLeaves, MutableBoundingBox boundingBox) + { + int start = trunkStart - leavesRadius; + int end = trunkEnd + leavesRadius; + + for (int x = start; x <= end; x++) + { + for (int z = start; z <= end; z++) + { + // skip corners + if ((leavesRadius > 0 ) && (x == start || x == end) && (z == start || z == end)) {continue;} + int distFromTrunk = (x < 0 ? trunkStart - x : x - trunkEnd) + (z < 0 ? trunkStart - z : z - trunkEnd); + + // set leaves as long as it's not too far from the trunk to survive + if (distFromTrunk < 4 || (distFromTrunk == 4 && rand.nextInt(2) == 0)) + { + this.placeLeaves(world, pos.offset(x, 0, z), changedLeaves, boundingBox); + } + } + } + } + + public void generateBranch(IWorld world, Random rand, BlockPos pos, Direction direction, int length, Set changedLogs, Set changedLeaves, MutableBoundingBox boundingBox) + { + Direction.Axis axis = direction.getAxis(); + Direction sideways = direction.getClockWise(); + for (int i = 1; i <= length; i++) + { + BlockPos pos1 = pos.relative(direction, i); + int r = (i == 1 || i == length) ? 1 : 2; + for (int j = -r; j <= r; j++) + { + if (i < length || rand.nextInt(2) == 0) + { + this.placeLeaves(world, pos1.relative(sideways, j), changedLeaves, boundingBox); + } + } + if (length - i > 2) + { + this.placeLeaves(world, pos1.above(), changedLeaves, boundingBox); + this.placeLeaves(world, pos1.above().relative(sideways, -1), changedLeaves, boundingBox); + this.placeLeaves(world, pos1.above().relative(sideways, 1), changedLeaves, boundingBox); + this.placeLog(world, pos1, axis, changedLogs, boundingBox); + } + } + } + + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos startPos, MutableBoundingBox boundingBox) + { + // Move down until we reach the ground + while (startPos.getY() > 1 && world.isEmptyBlock(startPos) || world.getBlockState(startPos).getMaterial() == Material.LEAVES) {startPos = startPos.below();} + + for (int x = 0; x <= this.trunkWidth - 1; x++) + { + for (int z = 0; z <= this.trunkWidth - 1; z++) + { + if (!this.placeOn.matches(world, startPos.offset(x, 0, z))) + { + // Abandon if we can't place the tree on this block + return false; + } + } + } + + // Choose heights + int height = GeneratorUtil.nextIntBetween(random, this.minHeight, this.maxHeight); + int baseHeight = GeneratorUtil.nextIntBetween(random, height / 5, height / 3); + int leavesHeight = height - baseHeight; + if (leavesHeight < 3) {return false;} + + if (!this.checkSpace(world, startPos.above(), baseHeight, height)) + { + // Abandon if there isn't enough room + return false; + } + + // Start at the top of the tree + BlockPos pos = startPos.above(height); + + // Leaves at the top + this.placeLeaves(world, pos, changedLeaves, boundingBox); + pos.below(); + + // Add layers of leaves + for (int i = 0; i < leavesHeight; i++) + { + + int trunkWidth = (this.trunkWidth * i / height) + 1; + int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D); + int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D); + + + int radius = Math.min(Math.min((i + 2) / 3, 3 + (leavesHeight - i)), 6); + if (radius == 0) + { + this.placeLeaves(world, pos, changedLeaves, boundingBox); + } + else if (radius < 4) + { + // for smallish radius, do simple leaf layers + if (i % 2 == 0) + { + this.generateLeafLayer(world, random, pos, radius, trunkStart, trunkEnd, changedLeaves, boundingBox); + } + else + { + this.generateLeafLayer(world, random, pos, radius / 2, trunkStart, trunkEnd, changedLeaves, boundingBox); + } + } + else + { + // for bigger radius, need branches + if (i % 2 == 0) + { + this.generateBranch(world, random, pos.offset(trunkStart, 0, trunkStart), Direction.NORTH, radius, changedLogs, changedLeaves, boundingBox); + this.generateBranch(world, random, pos.offset(trunkEnd, 0, trunkStart), Direction.EAST, radius, changedLogs, changedLeaves, boundingBox); + this.generateBranch(world, random, pos.offset(trunkEnd, 0, trunkEnd), Direction.SOUTH, radius, changedLogs, changedLeaves, boundingBox); + this.generateBranch(world, random, pos.offset(trunkStart, 0, trunkEnd), Direction.WEST, radius, changedLogs, changedLeaves, boundingBox); + } + } + pos = pos.below(); + } + + // Generate the trunk + for (int y = 0; y < height - 1; y++) + { + int trunkWidth = (this.trunkWidth * (height - y) / height) + 1; + int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D); + int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D); + + if (trunkWidth < 1 || trunkWidth > this.trunkWidth) + { + trunkStart = 0; + trunkEnd = 0; + } + + for (int x = trunkStart; x <= trunkEnd; x++) + { + for (int z = trunkStart; z <= trunkEnd; z++) + { + this.placeLog(world, startPos.offset(x, y, z), changedLogs, boundingBox); + } + } + } + + return true; + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/TreeFeatureBase.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/TreeFeatureBase.java new file mode 100644 index 0000000000..80c6044896 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/TreeFeatureBase.java @@ -0,0 +1,220 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.BlockUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.*; +import net.minecraft.state.Property; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldWriter; +import net.minecraft.world.gen.IWorldGenerationReader; +import net.minecraft.world.gen.feature.BaseTreeFeatureConfig; +import net.minecraft.world.gen.feature.TreeFeature; + +import java.util.Random; +import java.util.Set; + +public abstract class TreeFeatureBase extends TreeFeature +{ + protected static abstract class BuilderBase + { + protected IBlockPosQuery placeOn; + protected IBlockPosQuery replace; + protected BlockState log; + protected BlockState leaves; + protected BlockState vine; + protected BlockState hanging; + protected BlockState trunkFruit; + protected BlockState altLeaves; + protected int minHeight; + protected int maxHeight; + + public BuilderBase() + { + this.placeOn = (world, pos) -> world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING); + this.replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock().is(BlockTags.SAPLINGS) || world.getBlockState(pos).getBlock() == Blocks.VINE || world.getBlockState(pos).getBlock() == BOPBlocks.willow_vine || world.getBlockState(pos).getBlock() == BOPBlocks.dead_branch || world.getBlockState(pos).getBlock() instanceof BushBlock; + this.log = Blocks.OAK_LOG.defaultBlockState(); + this.leaves = Blocks.OAK_LEAVES.defaultBlockState(); + this.vine = Blocks.AIR.defaultBlockState(); + this.hanging = Blocks.AIR.defaultBlockState(); + this.trunkFruit = Blocks.AIR.defaultBlockState(); + this.altLeaves = Blocks.AIR.defaultBlockState(); + } + + public T placeOn(IBlockPosQuery a) {this.placeOn = a; return (T)this;} + + public T replace(IBlockPosQuery a) {this.replace = a; return (T)this;} + + public T log(BlockState a) {this.log = a; return (T)this;} + + public T leaves(BlockState a) {this.leaves = a; return (T)this;} + + public T vine(BlockState a) + { + this.vine = a; + return (T)this; + } + public T hanging(BlockState a) + { + this.hanging = a; + return (T)this; + } + public T trunkFruit(BlockState a) + { + this.trunkFruit = a; + return (T)this; + } + + public T altLeaves(BlockState a) {this.altLeaves = a; return (T)this;} + + public T minHeight(int a) {this.minHeight = a; return (T)this;} + public T maxHeight(int a) {this.maxHeight = a; return (T)this;} + + abstract F create(); + } + + protected final IBlockPosQuery placeOn; + protected final IBlockPosQuery replace; + + protected final BlockState log; + protected final BlockState leaves; + protected final BlockState altLeaves; + protected final BlockState vine; + protected final BlockState hanging; + protected final BlockState trunkFruit; + + protected final int minHeight; + protected final int maxHeight; + + protected Property logAxisProperty; + + protected TreeFeatureBase(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight) + { + super(BaseTreeFeatureConfig.CODEC.stable()); + + this.placeOn = placeOn; + this.replace = replace; + this.log = log; + this.leaves = leaves; + this.logAxisProperty = BlockUtil.getAxisProperty(log); + this.altLeaves = altLeaves; + this.vine = vine; + this.hanging = hanging; + this.trunkFruit = trunkFruit; + this.minHeight = minHeight; + this.maxHeight = maxHeight; + } + + public boolean placeLeaves(IWorld world, BlockPos pos, Set changedBlocks, MutableBoundingBox boundingBox) + { + if (this.replace.matches(world, pos)) + { + this.placeBlock(world, pos, this.leaves, changedBlocks, boundingBox); + return true; + } + return false; + } + + public boolean placeLog(IWorld world, BlockPos pos, Set changedBlocks, MutableBoundingBox boundingBox) + { + return this.placeLog(world, pos, null, changedBlocks, boundingBox); + } + + public boolean placeLog(IWorld world, BlockPos pos, Direction.Axis axis, Set changedBlocks, MutableBoundingBox boundingBox) + { + BlockState directedLog = (axis != null && this.logAxisProperty != null) ? this.log.setValue(this.logAxisProperty, axis) : this.log; + if (this.replace.matches(world, pos)) + { + // Logs must be added to the "changedBlocks" so that the leaves have their distance property updated, + // preventing incorrect decay + this.placeBlock(world, pos, directedLog, changedBlocks, boundingBox); + return true; + } + return false; + } + + public boolean setVine(IWorld world, Random rand, BlockPos pos, Direction side, int length) + { + BlockState vineState = this.vine.getBlock() instanceof VineBlock ? this.vine.setValue(VineBlock.NORTH, Boolean.valueOf(side == Direction.NORTH)).setValue(VineBlock.EAST, Boolean.valueOf(side == Direction.EAST)).setValue(VineBlock.SOUTH, Boolean.valueOf(side == Direction.SOUTH)).setValue(VineBlock.WEST, Boolean.valueOf(side == Direction.WEST)) : this.vine; + boolean setOne = false; + while (world.getBlockState(pos).getBlock().isAir(world.getBlockState(pos), world, pos) && length > 0 && rand.nextInt(12) > 0) + { + setBlock(world, pos, vineState); + setOne = true; + length--; + pos = pos.below(); + } + return setOne; + } + + public boolean setHanging(IWorld world, BlockPos pos) + { + if (this.replace.matches(world, pos)) + { + setBlock(world, pos, this.hanging); + } + return false; + } + + public boolean setTrunkFruit(IWorld world, BlockPos pos) + { + if (this.trunkFruit == null) {return false;} + if (this.replace.matches(world, pos)) + { + setBlock(world, pos, this.trunkFruit); + } + return false; + } + + public boolean setAltLeaves(IWorld world, BlockPos pos, Set changedBlocks, MutableBoundingBox boundingBox) + { + if (this.replace.matches(world, pos)) + { + this.placeBlock(world, pos, this.altLeaves, changedBlocks, boundingBox); + return true; + } + return false; + } + + @Override + public boolean doPlace(IWorldGenerationReader reader, Random random, BlockPos pos, Set changedLogs, Set changedLeaves, MutableBoundingBox boundingBox, BaseTreeFeatureConfig config) + { + return place(changedLogs, changedLeaves, (IWorld)reader, random, pos, boundingBox); + } + + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random rand, BlockPos position, MutableBoundingBox boundingBox) + { + return false; + } + + protected boolean placeBlock(IWorld world, BlockPos pos, BlockState state, Set changedBlocks, MutableBoundingBox boundingBox) + { + if (!isFree(world, pos)) + { + return false; + } + else + { + setBlock(world, pos, state, boundingBox); + changedBlocks.add(pos.immutable()); + return true; + } + } + + protected static void setBlock(IWorldWriter world, BlockPos pos, BlockState state, MutableBoundingBox boundingBox) + { + setBlockKnownShape(world, pos, state); + boundingBox.expand(new MutableBoundingBox(pos, pos)); + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/TwigletTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/TwigletTreeFeature.java new file mode 100644 index 0000000000..20d1175b61 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/TwigletTreeFeature.java @@ -0,0 +1,164 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.block.CocoaBlock; +import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class TwigletTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + protected float leafChanceEven; + protected float leafChanceOdd; + + public Builder leafChance(float a) + { + this.leafChanceEven = a; + this.leafChanceOdd = a; + return this; + } + + public Builder leafChance(float a, float b) + { + this.leafChanceEven = a; + this.leafChanceOdd = b; + return this; + } + + public Builder() + { + this.minHeight = 2; + this.maxHeight = 6; + this.leafChanceEven = 0.2F; + this.leafChanceOdd = 0.9F; + } + + @Override + public TwigletTreeFeature create() + { + return new TwigletTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight, this.leafChanceEven, this.leafChanceOdd); + } + } + + private float leafChanceEven; + private float leafChanceOdd; + + protected TwigletTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight, float leafChanceEven, float leafChanceOdd) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + this.leafChanceEven = leafChanceEven; + this.leafChanceOdd = leafChanceOdd; + } + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos startPos, MutableBoundingBox boundingBox) + { + // Move down until we reach the ground + while (startPos.getY() > 1 && world.isEmptyBlock(startPos) || world.getBlockState(startPos).getMaterial() == Material.LEAVES) + { + startPos = startPos.below(); + } + + if (!this.placeOn.matches(world, startPos)) + { + // Abandon if we can't place the tree on this block + return false; + } + + // choose a random height + int height = this.minHeight + random.nextInt(1 + this.maxHeight - this.minHeight); + int baseHeight = height / 3; + + // start from the block above the ground block + BlockPos pos = startPos.above(); + + // add log and leaves on each level + float leafChance; + for (int y = 0; y < height; y++) + { + if (!this.placeLog(world, pos.above(y), changedLogs, boundingBox)) + { + // abandon if the log can't grow + return true; + } + leafChance = ((height - y) % 2 == 0) ? this.leafChanceEven : this.leafChanceOdd; + if (y <= baseHeight) + { + continue; + } // no leaves below base height + if (random.nextFloat() < leafChance) + { + this.placeLeaves(world, pos.offset(1, y, 0), changedLeaves, boundingBox); + } + if (random.nextFloat() < leafChance) + { + this.placeLeaves(world, pos.offset(-1, y, 0), changedLeaves, boundingBox); + } + if (random.nextFloat() < leafChance) + { + this.placeLeaves(world, pos.offset(0, y, 1), changedLeaves, boundingBox); + } + if (random.nextFloat() < leafChance) + { + this.placeLeaves(world, pos.offset(0, y, -1), changedLeaves, boundingBox); + } + + if (this.trunkFruit != Blocks.AIR.defaultBlockState()) + { + for (Direction Direction : Direction.Plane.HORIZONTAL) + { + if (random.nextInt(4) == 0) + { + if (this.trunkFruit.getBlock() == Blocks.COCOA) + { + this.generateTrunkFruit(world, random.nextInt(3), pos.offset(Direction.getOpposite().getStepX(), 0, Direction.getOpposite().getStepZ()), Direction); + } + else + { + this.generateTrunkFruit(world, random.nextInt(3), pos.offset(Direction.getStepX(), y, Direction.getStepZ()), Direction); + } + } + } + } + } + // finish with leaves on top + this.placeLeaves(world, pos.offset(0, height, 0), changedLeaves, boundingBox); + + return true; + } + + private void generateTrunkFruit(IWorld world, int age, BlockPos pos, Direction direction) + { + if (this.trunkFruit == Blocks.COCOA.defaultBlockState()) + { + if (world.getBlockState(pos).getBlock() == Blocks.AIR || world.getBlockState(pos).getBlock() instanceof BushBlock) + { + this.setBlock(world, pos, this.trunkFruit.setValue(CocoaBlock.AGE, Integer.valueOf(age)).setValue(CocoaBlock.FACING, direction)); + } + } + else + { + if (world.getBlockState(pos).getBlock() == Blocks.AIR || world.getBlockState(pos).getBlock() instanceof BushBlock) + { + this.setBlock(world, pos, this.trunkFruit.setValue(CocoaBlock.FACING, direction)); + } + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/placement/AlphaTreePlacement.java b/src/main/java/biomesoplenty/common/world/gen/placement/AlphaTreePlacement.java new file mode 100644 index 0000000000..29e027ce0e --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/placement/AlphaTreePlacement.java @@ -0,0 +1,46 @@ +package biomesoplenty.common.world.gen.placement; + +import java.util.Random; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +import biomesoplenty.common.world.AlphaOctavePerlinNoise; +import com.mojang.serialization.Codec; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.gen.feature.WorldDecoratingHelper; +import net.minecraft.world.gen.placement.NoPlacementConfig; +import net.minecraft.world.gen.placement.Placement; + +public class AlphaTreePlacement extends Placement +{ + private AlphaOctavePerlinNoise treeNoise; + private long seed; + + public AlphaTreePlacement(Codec codec) + { + super(codec); + } + + @Override + public Stream getPositions(WorldDecoratingHelper decoratorContext, Random random, NoPlacementConfig config, BlockPos pos) + { + // If the seed has changed, then re-initialize the noise. + long seed = decoratorContext.level.getSeed(); + if (this.treeNoise == null || seed != this.seed) { + this.treeNoise = new AlphaOctavePerlinNoise(new Random(seed), 8); + this.seed = seed; + } + + // Sample the tree gen noise for the base amount of trees in this chunk + int treeCount = (int)((this.treeNoise.sample((double) pos.getX() * 0.5D, (double) pos.getZ() * 0.5D) / 8.0D + random.nextDouble() * 4.0D + 4.0D) / 3.0D); + + // Add extra trees randomly + if (random.nextInt(10) == 0) { + treeCount++; + } + + // Map to position + return IntStream.range(0, treeCount).mapToObj((idx) -> pos); + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/placement/BOPCountPlacement.java b/src/main/java/biomesoplenty/common/world/gen/placement/BOPCountPlacement.java new file mode 100644 index 0000000000..b744feaa6e --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/placement/BOPCountPlacement.java @@ -0,0 +1,25 @@ +package biomesoplenty.common.world.gen.placement; + +import biomesoplenty.common.world.gen.feature.DenseFeatureSpreadConfig; +import com.mojang.serialization.Codec; +import java.util.Random; +import java.util.stream.IntStream; +import java.util.stream.Stream; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.gen.feature.FeatureSpreadConfig; +import net.minecraft.world.gen.placement.SimplePlacement; + +public class BOPCountPlacement extends SimplePlacement +{ + public BOPCountPlacement(Codec codec) + { + super(codec); + } + + public Stream place(Random random, DenseFeatureSpreadConfig config, BlockPos pos) + { + return IntStream.range(0, config.count().sample(random)).mapToObj((p_242878_1_) -> { + return pos; + }); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/placement/BOPPlacements.java b/src/main/java/biomesoplenty/common/world/gen/placement/BOPPlacements.java new file mode 100644 index 0000000000..72aa7e02a0 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/placement/BOPPlacements.java @@ -0,0 +1,30 @@ +/******************************************************************************* + * Copyright 2014-2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.placement; + +import biomesoplenty.common.world.gen.feature.DenseFeatureSpreadConfig; +import biomesoplenty.core.BiomesOPlenty; +import com.mojang.serialization.Codec; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.gen.feature.FeatureSpreadConfig; +import net.minecraft.world.gen.placement.*; +import net.minecraftforge.registries.ForgeRegistries; + +public class BOPPlacements +{ + public static final Placement COUNT = register("count", new BOPCountPlacement(DenseFeatureSpreadConfig.CODEC.stable())); + public static final Placement ALPHA_TREE = register("alpha_tree", new AlphaTreePlacement(NoPlacementConfig.CODEC.stable())); + + private static > G register(String key, G placement) + { + placement.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, key)); + ForgeRegistries.DECORATORS.register(placement); + return placement; + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPConfiguredSurfaceBuilders.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPConfiguredSurfaceBuilders.java new file mode 100644 index 0000000000..53f928faa5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPConfiguredSurfaceBuilders.java @@ -0,0 +1,51 @@ +/******************************************************************************* + * Copyright 2014-2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.WorldGenRegistries; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ISurfaceBuilderConfig; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +public class BOPConfiguredSurfaceBuilders +{ + public static final ConfiguredSurfaceBuilder DEEP_SNOW = register("deep_snow", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DEEP_TOP_LAYER, BOPSurfaceBuilders.SNOW_SNOW_GRAVEL_SURFACE)); + public static final ConfiguredSurfaceBuilder ALPS_FOOTHILLS = register("alps_foothills", new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_STONE)); + public static final ConfiguredSurfaceBuilder GRAVEL_FULL = register("gravel_full", new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRAVEL)); + public static final ConfiguredSurfaceBuilder COLD_DESERT = register("cold_desert", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.COLD_DESERT, SurfaceBuilder.CONFIG_GRAVEL)); + public static final ConfiguredSurfaceBuilder EXPOSED_STONE = register("exposed_stone", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.EXPOSED_STONE, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder DRYLAND = register("dryland", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DRYLAND, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder MANGROVE = register("mangrove", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.MANGROVE, BOPSurfaceBuilders.MUD_SURFACE)); + public static final ConfiguredSurfaceBuilder PODZOL_MIXED = register("podzol_mixed", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.PODZOL, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder PODZOL_FULL = register("podzol_full", new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_PODZOL)); + public static final ConfiguredSurfaceBuilder LUSH_DESERT = register("lush_desert", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.LUSH_DESERT, BOPSurfaceBuilders.ORANGE_SAND_SURFACE)); + public static final ConfiguredSurfaceBuilder LUSH_SAVANNA = register("lush_savanna", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.LUSH_SAVANNA, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder HIGHLAND_CRAG = register("highland_crag", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.HIGHLAND_CRAG, SurfaceBuilder.CONFIG_STONE)); + public static final ConfiguredSurfaceBuilder MARSH = register("marsh", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.MARSH, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder VOLCANO = register("volcano", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.VOLCANO, BOPSurfaceBuilders.BASALT_SURFACE)); + public static final ConfiguredSurfaceBuilder VOLCANIC_PLAINS = register("volcanic_plains", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.BLACK_SAND, BOPSurfaceBuilders.BLACK_SAND_SURFACE)); + public static final ConfiguredSurfaceBuilder GROVE_LAKES = register("grove_lakes", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DEEP_TOP_LAYER, BOPSurfaceBuilders.DIORITE_SURFACE)); + public static final ConfiguredSurfaceBuilder DEEP_GRASS = register("deep_grass", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DEEP_TOP_LAYER, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder RAINFOREST_CLIFFS = register("rainforest_cliffs", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.TERRACOTTA, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder STONE_BASIN = register("stone_basin", new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, BOPSurfaceBuilders.BASIN_SURFACE)); + public static final ConfiguredSurfaceBuilder ORIGIN_VALLEY = register("origin_valley", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.ORIGIN_VALLEY, BOPSurfaceBuilders.ORIGIN_GRASS_SURFACE)); + public static final ConfiguredSurfaceBuilder TROPIC_BEACH = register("tropic_beach", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.TROPICS, BOPSurfaceBuilders.WHITE_SAND_SURFACE)); + public static final ConfiguredSurfaceBuilder TROPICS = register("tropics", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.TROPICS, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder VISCERAL_HEAP = register("visceral_heap", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.FLESH, SurfaceBuilder.CONFIG_HELL)); + public static final ConfiguredSurfaceBuilder WASTELAND = register("wasteland", new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, BOPSurfaceBuilders.DRIED_SALT_SURFACE)); + public static final ConfiguredSurfaceBuilder WITHERED_ABYSS = register("withered_abyss", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.WITHERED_ABYSS, BOPSurfaceBuilders.BLACKSTONE_SURFACE)); + + private static > F register(String key, F builder) + { + return Registry.register(WorldGenRegistries.CONFIGURED_SURFACE_BUILDER, new ResourceLocation(BiomesOPlenty.MOD_ID, key), builder); + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPSurfaceBuilders.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPSurfaceBuilders.java new file mode 100644 index 0000000000..d64cba1641 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPSurfaceBuilders.java @@ -0,0 +1,62 @@ +/******************************************************************************* + * Copyright 2014-2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.block.Blocks; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.gen.surfacebuilders.ISurfaceBuilderConfig; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; +import net.minecraftforge.registries.ForgeRegistries; + +public class BOPSurfaceBuilders +{ + public static final SurfaceBuilderConfig BLACKSTONE_SURFACE = new SurfaceBuilderConfig(Blocks.BLACKSTONE.defaultBlockState(), Blocks.BLACKSTONE.defaultBlockState(), Blocks.BLACKSTONE.defaultBlockState()); + public static final SurfaceBuilderConfig BASALT_SURFACE = new SurfaceBuilderConfig(Blocks.BASALT.defaultBlockState(), Blocks.BASALT.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()); + public static final SurfaceBuilderConfig TERRACOTTA_SURFACE = new SurfaceBuilderConfig(Blocks.TERRACOTTA.defaultBlockState(), Blocks.TERRACOTTA.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()); + public static final SurfaceBuilderConfig DIORITE_SURFACE = new SurfaceBuilderConfig(Blocks.DIORITE.defaultBlockState(), Blocks.DIORITE.defaultBlockState(), Blocks.DIORITE.defaultBlockState()); + public static final SurfaceBuilderConfig MAGMA_SURFACE = new SurfaceBuilderConfig(Blocks.MAGMA_BLOCK.defaultBlockState(), Blocks.MAGMA_BLOCK.defaultBlockState(), Blocks.BASALT.defaultBlockState()); + public static final SurfaceBuilderConfig SNOW_SNOW_GRAVEL_SURFACE = new SurfaceBuilderConfig(Blocks.SNOW_BLOCK.defaultBlockState(), Blocks.SNOW_BLOCK.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()); + public static final SurfaceBuilderConfig MUD_SURFACE = new SurfaceBuilderConfig(BOPBlocks.mud.defaultBlockState(), BOPBlocks.mud.defaultBlockState(), BOPBlocks.mud.defaultBlockState()); + public static final SurfaceBuilderConfig WHITE_SAND_SURFACE = new SurfaceBuilderConfig(BOPBlocks.white_sand.defaultBlockState(), BOPBlocks.white_sand.defaultBlockState(), BOPBlocks.white_sand.defaultBlockState()); + public static final SurfaceBuilderConfig ORANGE_SAND_SURFACE = new SurfaceBuilderConfig(BOPBlocks.orange_sand.defaultBlockState(), BOPBlocks.orange_sand.defaultBlockState(), BOPBlocks.orange_sand.defaultBlockState()); + public static final SurfaceBuilderConfig ORANGE_SANDSTONE_SURFACE = new SurfaceBuilderConfig(BOPBlocks.orange_sandstone.defaultBlockState(), BOPBlocks.orange_sandstone.defaultBlockState(), BOPBlocks.orange_sandstone.defaultBlockState()); + public static final SurfaceBuilderConfig BLACK_SAND_SURFACE = new SurfaceBuilderConfig(BOPBlocks.black_sand.defaultBlockState(), BOPBlocks.black_sand.defaultBlockState(), BOPBlocks.black_sand.defaultBlockState()); + public static final SurfaceBuilderConfig DRIED_SALT_SURFACE = new SurfaceBuilderConfig(BOPBlocks.dried_salt.defaultBlockState(), BOPBlocks.dried_salt.defaultBlockState(), BOPBlocks.dried_salt.defaultBlockState()); + public static final SurfaceBuilderConfig ORIGIN_GRASS_SURFACE = new SurfaceBuilderConfig(BOPBlocks.origin_grass_block.defaultBlockState(), Blocks.DIRT.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()); + public static final SurfaceBuilderConfig BASIN_SURFACE = new SurfaceBuilderConfig(Blocks.AIR.defaultBlockState(), Blocks.STONE.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()); + + public static final SurfaceBuilder DRYLAND = register("dryland", new DrylandSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder HIGHLAND_CRAG = register("highland_crag", new HighlandCragSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder EXPOSED_STONE = register("exposed_stone", new ExposedStoneSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder TERRACOTTA = register("terracotta", new TerracottaSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder MARSH = register("marsh", new MarshSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder MANGROVE = register("mangrove", new MangroveSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder PODZOL = register("podzol", new PodzolSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder VOLCANO = register("volcano", new VolcanoSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder DEEP_TOP_LAYER = register("deep_top_layer", new DeepTopLayerSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder ORANGE_SANDSTONE = register("orange_sandstone", new OrangeSandstoneSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder LUSH_SAVANNA = register("lush_savanna", new LushSavannaSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder WITHERED_ABYSS = register("withered_abyss", new WitheredAbyssSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder FLESH = register("flesh", new FleshSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder ORIGIN_VALLEY = register("origin_valley", new OriginValleySurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder TROPICS = register("tropics", new TropicsSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder LUSH_DESERT = register("lush_desert", new LushDesertSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder BLACK_SAND = register("black_sand", new BlackSandSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder COLD_DESERT = register("cold_desert", new ColdDesertSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + + private static > F register(String key, F builder) + { + builder.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, key)); + ForgeRegistries.SURFACE_BUILDERS.register(builder); + return builder; + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BlackSandSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BlackSandSurfaceBuilder.java new file mode 100644 index 0000000000..77b6590a82 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BlackSandSurfaceBuilder.java @@ -0,0 +1,100 @@ +package biomesoplenty.common.world.gen.surfacebuilders; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class BlackSandSurfaceBuilder extends SurfaceBuilder { + public BlackSandSurfaceBuilder(Codec p_i232124_1_) { + super(p_i232124_1_); + } + + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + this.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, config.getTopMaterial(), config.getUnderMaterial(), config.getUnderwaterMaterial(), seaLevel); + } + + protected void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, BlockState top, BlockState middle, BlockState bottom, int sealevel) { + BlockState blockstate = top; + BlockState blockstate1 = middle; + BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable(); + int i = -1; + int j = (int)(noise / 3.0D + 3.0D + random.nextDouble() * 0.25D); + int k = x & 15; + int l = z & 15; + + for(int i1 = startHeight; i1 >= 0; --i1) + { + blockpos$mutable.set(k, i1, l); + BlockState blockstate2 = chunkIn.getBlockState(blockpos$mutable); + if (blockstate2.isAir()) + { + i = -1; + } + else if (blockstate2.is(defaultBlock.getBlock())) + { + if (i == -1) + { + if (j <= 0) + { + blockstate = Blocks.AIR.defaultBlockState(); + blockstate1 = defaultBlock; + } + else if (i1 >= sealevel - 4 && i1 <= sealevel + 1) + { + blockstate = top; + blockstate1 = middle; + } + + if (i1 < sealevel && (blockstate == null || blockstate.isAir())) + { + if (biomeIn.getTemperature(blockpos$mutable.set(x, i1, z)) < 0.15F) + { + blockstate = Blocks.ICE.defaultBlockState(); + } + else + { + blockstate = defaultFluid; + } + + blockpos$mutable.set(k, i1, l); + } + + i = j; + if (i1 >= sealevel - 1) + { + chunkIn.setBlockState(blockpos$mutable, blockstate, false); + } + else if (i1 < sealevel - 7 - j) + { + blockstate = Blocks.AIR.defaultBlockState(); + blockstate1 = defaultBlock; + chunkIn.setBlockState(blockpos$mutable, bottom, false); + } + else + { + chunkIn.setBlockState(blockpos$mutable, blockstate1, false); + } + } + else if (i > 0) + { + --i; + chunkIn.setBlockState(blockpos$mutable, blockstate1, false); + if (i == 0 && blockstate1.is(BOPBlocks.black_sand) && j > 1) + { + i = random.nextInt(4) + Math.max(0, i1 - 63); + blockstate1 = BOPBlocks.black_sandstone.defaultBlockState(); + } + } + } + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ColdDesertSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ColdDesertSurfaceBuilder.java new file mode 100644 index 0000000000..fc51968eca --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ColdDesertSurfaceBuilder.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class ColdDesertSurfaceBuilder extends SurfaceBuilder +{ + public ColdDesertSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) + { + if (noise > 2.6D) + { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPSurfaceBuilders.SNOW_SNOW_GRAVEL_SURFACE); + } + else + { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRAVEL); + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/DeepTopLayerSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/DeepTopLayerSurfaceBuilder.java new file mode 100644 index 0000000000..1b603d0a83 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/DeepTopLayerSurfaceBuilder.java @@ -0,0 +1,79 @@ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class DeepTopLayerSurfaceBuilder extends SurfaceBuilder { + public DeepTopLayerSurfaceBuilder(Codec p_i51315_1_) { + super(p_i51315_1_); + } + + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + this.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, config.getTopMaterial(), config.getUnderMaterial(), config.getUnderwaterMaterial(), seaLevel); + } + + protected void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, BlockState top, BlockState middle, BlockState bottom, int sealevel) { + BlockState blockstate = top; + BlockState blockstate1 = middle; + BlockPos.Mutable blockpos$mutableblockpos = new BlockPos.Mutable(); + int i = -1; + int j = (int)(noise / 3.0D + 8.0D + random.nextDouble() * 0.25D); + int k = x & 15; + int l = z & 15; + + for(int i1 = startHeight; i1 >= 0; --i1) { + blockpos$mutableblockpos.set(k, i1, l); + BlockState blockstate2 = chunkIn.getBlockState(blockpos$mutableblockpos); + if (blockstate2.isAir()) { + i = -1; + } else if (blockstate2.getBlock() == defaultBlock.getBlock()) { + if (i == -1) { + if (j <= 0) { + blockstate = Blocks.AIR.defaultBlockState(); + blockstate1 = defaultBlock; + } else if (i1 >= sealevel - 4 && i1 <= sealevel + 1) { + blockstate = top; + blockstate1 = middle; + } + + if (i1 < sealevel && (blockstate == null || blockstate.isAir())) { + if (biomeIn.getTemperature(blockpos$mutableblockpos.set(x, i1, z)) < 0.15F) { + blockstate = Blocks.ICE.defaultBlockState(); + } else { + blockstate = defaultFluid; + } + + blockpos$mutableblockpos.set(k, i1, l); + } + + i = j; + if (i1 >= sealevel - 1) { + chunkIn.setBlockState(blockpos$mutableblockpos, blockstate, false); + } else if (i1 < sealevel - 7 - j) { + blockstate = Blocks.AIR.defaultBlockState(); + blockstate1 = defaultBlock; + chunkIn.setBlockState(blockpos$mutableblockpos, bottom, false); + } else { + chunkIn.setBlockState(blockpos$mutableblockpos, blockstate1, false); + } + } else if (i > 0) { + --i; + chunkIn.setBlockState(blockpos$mutableblockpos, blockstate1, false); + if (i == 0 && blockstate1.getBlock() == Blocks.SAND && j > 1) { + i = random.nextInt(4) + Math.max(0, i1 - 63); + blockstate1 = blockstate1.getBlock() == Blocks.RED_SAND ? Blocks.RED_SANDSTONE.defaultBlockState() : Blocks.SANDSTONE.defaultBlockState(); + } + } + } + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/DrylandSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/DrylandSurfaceBuilder.java new file mode 100644 index 0000000000..8f5a592e53 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/DrylandSurfaceBuilder.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class DrylandSurfaceBuilder extends SurfaceBuilder +{ + public DrylandSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + if (noise > 1.8D) { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_FULL_SAND); + } else { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRASS); + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ExposedStoneSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ExposedStoneSurfaceBuilder.java new file mode 100644 index 0000000000..d810ed8766 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ExposedStoneSurfaceBuilder.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class ExposedStoneSurfaceBuilder extends SurfaceBuilder +{ + public ExposedStoneSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + if (noise > 1.7D) { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_STONE); + } else { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRASS); + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/FleshSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/FleshSurfaceBuilder.java new file mode 100644 index 0000000000..9033f822cf --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/FleshSurfaceBuilder.java @@ -0,0 +1,37 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import biomesoplenty.api.block.BOPBlocks; +import com.google.common.collect.ImmutableList; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; +import net.minecraft.world.gen.surfacebuilders.ValleySurfaceBuilder; + +public class FleshSurfaceBuilder extends ValleySurfaceBuilder { + private static final BlockState FLESH = BOPBlocks.flesh.defaultBlockState(); + private static final ImmutableList BLOCK_STATES = ImmutableList.of(FLESH); + + public FleshSurfaceBuilder(Codec p_i232135_1_) { + super(p_i232135_1_); + } + + protected ImmutableList getFloorBlockStates() { + return BLOCK_STATES; + } + + protected ImmutableList getCeilingBlockStates() { + return BLOCK_STATES; + } + + protected BlockState getPatchBlockState() { + return FLESH; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/HighlandCragSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/HighlandCragSurfaceBuilder.java new file mode 100644 index 0000000000..e264fb3656 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/HighlandCragSurfaceBuilder.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class HighlandCragSurfaceBuilder extends SurfaceBuilder +{ + public HighlandCragSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + if (noise > 1.9D) { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRAVEL); + } else { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_STONE); + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/LushDesertSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/LushDesertSurfaceBuilder.java new file mode 100644 index 0000000000..db457106e7 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/LushDesertSurfaceBuilder.java @@ -0,0 +1,32 @@ +package biomesoplenty.common.world.gen.surfacebuilders; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class LushDesertSurfaceBuilder extends SurfaceBuilder { + public LushDesertSurfaceBuilder(Codec p_i232124_1_) { + super(p_i232124_1_); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) + { + if (noise > 1.9D) + { + BOPSurfaceBuilders.ORANGE_SANDSTONE.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPSurfaceBuilders.ORANGE_SANDSTONE_SURFACE); + } + else + { + BOPSurfaceBuilders.ORANGE_SANDSTONE.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPSurfaceBuilders.ORANGE_SAND_SURFACE); + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/LushSavannaSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/LushSavannaSurfaceBuilder.java new file mode 100644 index 0000000000..59290755e3 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/LushSavannaSurfaceBuilder.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class LushSavannaSurfaceBuilder extends SurfaceBuilder +{ + public LushSavannaSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) + { + if (noise > 2.1D) + { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_COARSE_DIRT); + } + else + { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRASS); + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/MangroveSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/MangroveSurfaceBuilder.java new file mode 100644 index 0000000000..ed532e34a6 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/MangroveSurfaceBuilder.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class MangroveSurfaceBuilder extends SurfaceBuilder +{ + public MangroveSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) + { + double d0 = Biome.BIOME_INFO_NOISE.getValue((double)x * 0.25D, (double)z * 0.25D, false); + if (d0 < 0.1D) { + int i = x & 15; + int j = z & 15; + BlockPos.Mutable blockpos$mutableblockpos = new BlockPos.Mutable(); + + for(int k = startHeight; k >= 0; --k) { + blockpos$mutableblockpos.set(i, k, j); + if (!chunkIn.getBlockState(blockpos$mutableblockpos).isAir()) { + if (k == 62 && chunkIn.getBlockState(blockpos$mutableblockpos).getBlock() != defaultFluid.getBlock()) { + chunkIn.setBlockState(blockpos$mutableblockpos, defaultFluid, false); + } + break; + } + } + } + + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, config); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/MarshSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/MarshSurfaceBuilder.java new file mode 100644 index 0000000000..f901294ab8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/MarshSurfaceBuilder.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class MarshSurfaceBuilder extends SurfaceBuilder +{ + public MarshSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) + { + double d0 = Biome.BIOME_INFO_NOISE.getValue((double)x * 0.25D, (double)z * 0.25D, false); + if (d0 > 0.0D) { + int i = x & 15; + int j = z & 15; + BlockPos.Mutable blockpos$mutableblockpos = new BlockPos.Mutable(); + + for(int k = startHeight; k >= 0; --k) { + blockpos$mutableblockpos.set(i, k, j); + if (!chunkIn.getBlockState(blockpos$mutableblockpos).isAir()) { + if (k == 62 && chunkIn.getBlockState(blockpos$mutableblockpos).getBlock() != defaultFluid.getBlock()) { + chunkIn.setBlockState(blockpos$mutableblockpos, defaultFluid, false); + } + break; + } + } + } + + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, config); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/OrangeSandstoneSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/OrangeSandstoneSurfaceBuilder.java new file mode 100644 index 0000000000..a300c7a3e2 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/OrangeSandstoneSurfaceBuilder.java @@ -0,0 +1,100 @@ +package biomesoplenty.common.world.gen.surfacebuilders; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class OrangeSandstoneSurfaceBuilder extends SurfaceBuilder { + public OrangeSandstoneSurfaceBuilder(Codec p_i232124_1_) { + super(p_i232124_1_); + } + + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + this.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, config.getTopMaterial(), config.getUnderMaterial(), config.getUnderwaterMaterial(), seaLevel); + } + + protected void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, BlockState top, BlockState middle, BlockState bottom, int sealevel) { + BlockState blockstate = top; + BlockState blockstate1 = middle; + BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable(); + int i = -1; + int j = (int)(noise / 3.0D + 4.0D + random.nextDouble() * 0.25D); + int k = x & 15; + int l = z & 15; + + for(int i1 = startHeight; i1 >= 0; --i1) + { + blockpos$mutable.set(k, i1, l); + BlockState blockstate2 = chunkIn.getBlockState(blockpos$mutable); + if (blockstate2.isAir()) + { + i = -1; + } + else if (blockstate2.is(defaultBlock.getBlock())) + { + if (i == -1) + { + if (j <= 0) + { + blockstate = Blocks.AIR.defaultBlockState(); + blockstate1 = defaultBlock; + } + else if (i1 >= sealevel - 4 && i1 <= sealevel + 1) + { + blockstate = top; + blockstate1 = middle; + } + + if (i1 < sealevel && (blockstate == null || blockstate.isAir())) + { + if (biomeIn.getTemperature(blockpos$mutable.set(x, i1, z)) < 0.15F) + { + blockstate = Blocks.ICE.defaultBlockState(); + } + else + { + blockstate = defaultFluid; + } + + blockpos$mutable.set(k, i1, l); + } + + i = j; + if (i1 >= sealevel - 1) + { + chunkIn.setBlockState(blockpos$mutable, blockstate, false); + } + else if (i1 < sealevel - 7 - j) + { + blockstate = Blocks.AIR.defaultBlockState(); + blockstate1 = defaultBlock; + chunkIn.setBlockState(blockpos$mutable, bottom, false); + } + else + { + chunkIn.setBlockState(blockpos$mutable, blockstate1, false); + } + } + else if (i > 0) + { + --i; + chunkIn.setBlockState(blockpos$mutable, blockstate1, false); + if (i == 0 && blockstate1.is(BOPBlocks.orange_sand) && j > 1) + { + i = random.nextInt(4) + Math.max(0, i1 - 63); + blockstate1 = BOPBlocks.orange_sandstone.defaultBlockState(); + } + } + } + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/OriginValleySurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/OriginValleySurfaceBuilder.java new file mode 100644 index 0000000000..e0360ea480 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/OriginValleySurfaceBuilder.java @@ -0,0 +1,126 @@ +package biomesoplenty.common.world.gen.surfacebuilders; + +import biomesoplenty.common.world.AlphaOctavePerlinNoise; +import com.google.common.collect.ImmutableList; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.SharedSeedRandom; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.PerlinNoiseGenerator; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; +import java.util.stream.IntStream; + +public class OriginValleySurfaceBuilder extends SurfaceBuilder +{ + protected long seed; + protected AlphaOctavePerlinNoise sandNoise; + protected AlphaOctavePerlinNoise gravelNoise; + public OriginValleySurfaceBuilder(Codec p_i232124_1_) + { + super(p_i232124_1_); + } + + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + this.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, config.getTopMaterial(), config.getUnderMaterial(), config.getUnderwaterMaterial(), seaLevel); + } + + protected void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, BlockState top, BlockState middle, BlockState bottom, int sealevel) { + BlockState topState = top; + BlockState middleState = middle; + BlockPos.Mutable mutable = new BlockPos.Mutable(); + + int placedDepth = -1; + int grassDepth = (int)(noise / 3.0D + 3.0D + random.nextDouble() * 0.25D); + int localX = x & 15; + int localZ = z & 15; + + boolean gravelGen = gravelNoise.sample(x, 109.0134, z, 0.03125, 1, 0.03125) + random.nextDouble() * 0.2 > 3.0; + boolean sandGen = sandNoise.sample(x, z, 0, 0.03125, 0.03125, 1) + random.nextDouble() * 0.2 > 0.0; + + for (int y = startHeight; y >= 0; --y) + { + mutable.set(localX, y, localZ); + BlockState blockstate2 = chunkIn.getBlockState(mutable); + if (blockstate2.isAir()) + { + placedDepth = -1; + } + else if (blockstate2.is(defaultBlock.getBlock())) + { + if (placedDepth == -1) + { + if (grassDepth <= 0) + { + topState = Blocks.AIR.defaultBlockState(); + middleState = defaultBlock; + } + else if (y >= sealevel - 4 && y <= sealevel + 1) + { + topState = top; + middleState = middle; + + if (gravelGen) + { + topState = Blocks.AIR.defaultBlockState(); + middleState = Blocks.GRAVEL.defaultBlockState(); + } + if (sandGen) + { + topState = Blocks.SAND.defaultBlockState(); + middleState = Blocks.SAND.defaultBlockState(); + } + } + + if (y < sealevel && (topState == null || topState.isAir())) + { + if (biomeIn.getTemperature(mutable.set(x, y, z)) < 0.15F) + { + topState = Blocks.ICE.defaultBlockState(); + } + else + { + topState = defaultFluid; + } + + mutable.set(localX, y, localZ); + } + + placedDepth = grassDepth; + if (y >= sealevel - 1) + { + chunkIn.setBlockState(mutable, topState, false); + } + else + { + chunkIn.setBlockState(mutable, middleState, false); + } + } + else if (placedDepth > 0) + { + --placedDepth; + chunkIn.setBlockState(mutable, middleState, false); + } + } + } + } + + @Override + public void initNoise(long seed) + { + // If the seed has changed, then re-initialize the noise. + if (this.seed != seed || this.sandNoise == null || this.gravelNoise == null) + { + SharedSeedRandom random = new SharedSeedRandom(seed); + this.sandNoise = new AlphaOctavePerlinNoise(random, 4); + this.gravelNoise = new AlphaOctavePerlinNoise(random, 4); + } + + this.seed = seed; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/PodzolSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/PodzolSurfaceBuilder.java new file mode 100644 index 0000000000..a8db0807ef --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/PodzolSurfaceBuilder.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class PodzolSurfaceBuilder extends SurfaceBuilder +{ + public PodzolSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) + { + if (noise > 1.9D) { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_PODZOL); + } else { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRASS); + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/TerracottaSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/TerracottaSurfaceBuilder.java new file mode 100644 index 0000000000..b323dfc162 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/TerracottaSurfaceBuilder.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class TerracottaSurfaceBuilder extends SurfaceBuilder +{ + public TerracottaSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + if (noise > 1.9D) { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPSurfaceBuilders.TERRACOTTA_SURFACE); + } else { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRASS); + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/TropicsSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/TropicsSurfaceBuilder.java new file mode 100644 index 0000000000..dc322b18b8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/TropicsSurfaceBuilder.java @@ -0,0 +1,100 @@ +package biomesoplenty.common.world.gen.surfacebuilders; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class TropicsSurfaceBuilder extends SurfaceBuilder { + public TropicsSurfaceBuilder(Codec p_i232124_1_) { + super(p_i232124_1_); + } + + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + this.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, config.getTopMaterial(), config.getUnderMaterial(), config.getUnderwaterMaterial(), seaLevel); + } + + protected void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, BlockState top, BlockState middle, BlockState bottom, int sealevel) { + BlockState blockstate = top; + BlockState blockstate1 = middle; + BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable(); + int i = -1; + int j = (int)(noise / 3.0D + 3.0D + random.nextDouble() * 0.25D); + int k = x & 15; + int l = z & 15; + + for(int i1 = startHeight; i1 >= 0; --i1) + { + blockpos$mutable.set(k, i1, l); + BlockState blockstate2 = chunkIn.getBlockState(blockpos$mutable); + if (blockstate2.isAir()) + { + i = -1; + } + else if (blockstate2.is(defaultBlock.getBlock())) + { + if (i == -1) + { + if (j <= 0) + { + blockstate = Blocks.AIR.defaultBlockState(); + blockstate1 = defaultBlock; + } + else if (i1 >= sealevel - 4 && i1 <= sealevel + 1) + { + blockstate = BOPBlocks.white_sand.defaultBlockState(); + blockstate1 = BOPBlocks.white_sand.defaultBlockState(); + } + + if (i1 < sealevel && (blockstate == null || blockstate.isAir())) + { + if (biomeIn.getTemperature(blockpos$mutable.set(x, i1, z)) < 0.15F) + { + blockstate = Blocks.ICE.defaultBlockState(); + } + else + { + blockstate = defaultFluid; + } + + blockpos$mutable.set(k, i1, l); + } + + i = j; + if (i1 >= sealevel - 1) + { + chunkIn.setBlockState(blockpos$mutable, blockstate, false); + } + else if (i1 < sealevel - 7 - j) + { + blockstate = Blocks.AIR.defaultBlockState(); + blockstate1 = defaultBlock; + chunkIn.setBlockState(blockpos$mutable, bottom, false); + } + else + { + chunkIn.setBlockState(blockpos$mutable, blockstate1, false); + } + } + else if (i > 0) + { + --i; + chunkIn.setBlockState(blockpos$mutable, blockstate1, false); + if (i == 0 && blockstate1.is(BOPBlocks.white_sand) && j > 1) + { + i = random.nextInt(4) + Math.max(0, i1 - 63); + blockstate1 = BOPBlocks.white_sandstone.defaultBlockState(); + } + } + } + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/VolcanoSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/VolcanoSurfaceBuilder.java new file mode 100644 index 0000000000..252c2ab408 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/VolcanoSurfaceBuilder.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class VolcanoSurfaceBuilder extends SurfaceBuilder +{ + public VolcanoSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) + { + if (noise > 2.7F) + { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPSurfaceBuilders.MAGMA_SURFACE); + } + else + { + BOPSurfaceBuilders.DEEP_TOP_LAYER.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPSurfaceBuilders.BASALT_SURFACE); + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/WitheredAbyssSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/WitheredAbyssSurfaceBuilder.java new file mode 100644 index 0000000000..57b79aab8f --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/WitheredAbyssSurfaceBuilder.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.google.common.collect.ImmutableList; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; +import net.minecraft.world.gen.surfacebuilders.ValleySurfaceBuilder; + +import java.util.Random; + +public class WitheredAbyssSurfaceBuilder extends ValleySurfaceBuilder { + private static final BlockState BLACKSTONE = Blocks.BLACKSTONE.defaultBlockState(); + private static final BlockState OBSIDIAN = Blocks.OBSIDIAN.defaultBlockState(); + private static final ImmutableList BLOCK_STATES = ImmutableList.of(BLACKSTONE); + + public WitheredAbyssSurfaceBuilder(Codec p_i232135_1_) { + super(p_i232135_1_); + } + + protected ImmutableList getFloorBlockStates() { + return BLOCK_STATES; + } + + protected ImmutableList getCeilingBlockStates() { + return BLOCK_STATES; + } + + protected BlockState getPatchBlockState() { + return OBSIDIAN; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/layer/BOPBiomeEdgeLayer.java b/src/main/java/biomesoplenty/common/world/layer/BOPBiomeEdgeLayer.java new file mode 100644 index 0000000000..c2cd5f3af6 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/BOPBiomeEdgeLayer.java @@ -0,0 +1,115 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.common.util.biome.BiomeUtil; +import net.minecraft.util.RegistryKey; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.layer.LayerUtil; +import net.minecraft.world.gen.layer.traits.ICastleTransformer; + +import java.util.Optional; + +public enum BOPBiomeEdgeLayer implements ICastleTransformer +{ + INSTANCE; + + private static final int DESERT = BiomeUtil.getBiomeId(Biomes.DESERT); + private static final int MOUNTAINS = BiomeUtil.getBiomeId(Biomes.MOUNTAINS); + private static final int WOODED_MOUNTAINS = BiomeUtil.getBiomeId(Biomes.WOODED_MOUNTAINS); + private static final int SNOWY_TUNDRA = BiomeUtil.getBiomeId(Biomes.SNOWY_TUNDRA); + private static final int JUNGLE = BiomeUtil.getBiomeId(Biomes.JUNGLE); + private static final int JUNGLE_HILLS = BiomeUtil.getBiomeId(Biomes.JUNGLE_HILLS); + private static final int JUNGLE_EDGE = BiomeUtil.getBiomeId(Biomes.JUNGLE_EDGE); + private static final int BADLANDS = BiomeUtil.getBiomeId(Biomes.BADLANDS); + private static final int BADLANDS_PLATEAU = BiomeUtil.getBiomeId(Biomes.BADLANDS_PLATEAU); + private static final int WOODED_BADLANDS_PLATEAU = BiomeUtil.getBiomeId(Biomes.WOODED_BADLANDS_PLATEAU); + private static final int PLAINS = BiomeUtil.getBiomeId(Biomes.PLAINS); + private static final int GIANT_TREE_TAIGA = BiomeUtil.getBiomeId(Biomes.GIANT_TREE_TAIGA); + private static final int MOUNTAIN_EDGE = BiomeUtil.getBiomeId(Biomes.MOUNTAIN_EDGE); + private static final int SWAMP = BiomeUtil.getBiomeId(Biomes.SWAMP); + private static final int TAIGA = BiomeUtil.getBiomeId(Biomes.TAIGA); + private static final int SNOWY_TAIGA = BiomeUtil.getBiomeId(Biomes.SNOWY_TAIGA); + + @Override + public int apply(INoiseRandom context, int northBiomeId, int eastBiomeId, int southBiomeId, int westBiomeId, int biomeId) + { + int[] outBiomeId = new int[1]; + + // line BOP alps peaks with BOP alps foothills + if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BOPBiomes.alps, BOPBiomes.alps_foothills)) { return outBiomeId[0]; } + + // line BOP redwood forest with BOP redwood forest edge + if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BOPBiomes.redwood_forest, BOPBiomes.redwood_forest_edge)) { return outBiomeId[0]; } + if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BOPBiomes.redwood_hills, BOPBiomes.redwood_forest_edge)) { return outBiomeId[0]; } + + // line BOP volcano with BOP volcanic plains + if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BOPBiomes.volcano, BOPBiomes.volcanic_plains)) { return outBiomeId[0]; } + + // line mountains with mountain edges + //if (this.replaceBiomeEdgeIfNecessary(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, MOUNTAINS, MOUNTAIN_EDGE)) { return outBiomeId[0]; } + + // line special badlands with badlands + if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, WOODED_BADLANDS_PLATEAU, BADLANDS)) { return outBiomeId[0]; } + if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BADLANDS_PLATEAU, BADLANDS)) { return outBiomeId[0]; } + + // line the giant tree taiga with taiga + if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, GIANT_TREE_TAIGA, TAIGA)) { return outBiomeId[0]; } + + if (biomeId == DESERT && (northBiomeId == SNOWY_TUNDRA || eastBiomeId == SNOWY_TUNDRA || westBiomeId == SNOWY_TUNDRA || southBiomeId == SNOWY_TUNDRA)) + { + return WOODED_MOUNTAINS; + } + else + { + if (biomeId == SWAMP) + { + if (northBiomeId == DESERT || eastBiomeId == DESERT || westBiomeId == DESERT || southBiomeId == DESERT || northBiomeId == SNOWY_TAIGA || eastBiomeId == SNOWY_TAIGA || westBiomeId == SNOWY_TAIGA || southBiomeId == SNOWY_TAIGA || northBiomeId == SNOWY_TUNDRA || eastBiomeId == SNOWY_TUNDRA || westBiomeId == SNOWY_TUNDRA || southBiomeId == SNOWY_TUNDRA) + { + return PLAINS; + } + + if (northBiomeId == JUNGLE || southBiomeId == JUNGLE || eastBiomeId == JUNGLE || westBiomeId == JUNGLE || northBiomeId == JUNGLE_HILLS || southBiomeId == JUNGLE_HILLS || eastBiomeId == JUNGLE_HILLS || westBiomeId == JUNGLE_HILLS) + { + return JUNGLE_EDGE; + } + } + } + + return biomeId; + } + + private boolean replaceBiomeEdge(int[] outId, int northBiomeId, int eastBiomeId, int southBiomeId, int westBiomeId, int biomeId, RegistryKey fromBiome, RegistryKey toBiome) + { + return BiomeUtil.exists(fromBiome) && BiomeUtil.exists(toBiome) && this.replaceBiomeEdge(outId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BiomeUtil.getBiomeId(fromBiome), BiomeUtil.getBiomeId(toBiome)); + } + + private boolean replaceBiomeEdge(int[] outId, int northBiomeId, int eastBiomeId, int southBiomeId, int westBiomeId, int biomeId, int fromBiome, int toBiome) + { + if (biomeId != fromBiome) + { + return false; + } + else + { + if (LayerUtil.isSame(northBiomeId, fromBiome) && LayerUtil.isSame(eastBiomeId, fromBiome) && LayerUtil.isSame(westBiomeId, fromBiome) && LayerUtil.isSame(southBiomeId, fromBiome)) + { + outId[0] = biomeId; + } + else + { + outId[0] = toBiome; + } + + return true; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/BOPBiomeLayer.java b/src/main/java/biomesoplenty/common/world/layer/BOPBiomeLayer.java new file mode 100644 index 0000000000..cd7022b9af --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/BOPBiomeLayer.java @@ -0,0 +1,65 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.init.ModBiomes; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.layer.traits.IAreaTransformer2; +import net.minecraft.world.gen.layer.traits.IDimOffset0Transformer; + +public enum BOPBiomeLayer implements IAreaTransformer2, IDimOffset0Transformer +{ + INSTANCE; + + private static final int DEEP_OCEAN = BiomeUtil.getBiomeId(Biomes.DEEP_OCEAN); + private static final int MUSHROOM_FIELDS = BiomeUtil.getBiomeId(Biomes.MUSHROOM_FIELDS); + + @Override + public int applyPixel(INoiseRandom context, IArea area1, IArea area2, int x, int z) + { + int landSeaVal = area1.get(x, z); + int climateVal = area2.get(x, z); + + BOPClimates climate; + try + { + climate = BOPClimates.lookup(climateVal); + } + catch (ArrayIndexOutOfBoundsException e) + { + // This shouldn't happen - but apparently it (rarely) does (https://github.com/Glitchfiend/BiomesOPlenty/issues/983) + // If it does it means that something weird happened with the climate layer / lookup + // Rethrow with hopefully a more useful message + String msg = "Climate lookup failed climateOrdinal: " + climateVal; + throw new RuntimeException(msg,e); + } + + // At this point, oceans and land have been assigned, and so have mushroom islands + if (landSeaVal == DEEP_OCEAN) + { + return BiomeUtil.getBiomeId(climate.getRandomOceanBiome(context, true)); + } + else if ((landSeaVal == MUSHROOM_FIELDS || ModBiomes.islandBiomeIds.contains(landSeaVal)) && !(climate == BOPClimates.ICE_CAP || climate == BOPClimates.TUNDRA)) + { + // keep islands, unless it's in an icy climate in which case, replace + return landSeaVal; + } + else if (landSeaVal == 0) + { + return BiomeUtil.getBiomeId(climate.getRandomOceanBiome(context, false)); + } + else + { + return BiomeUtil.getBiomeId(climate.getRandomBiome(context, Biomes.OCEAN)); + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/BOPMixOceansLayer.java b/src/main/java/biomesoplenty/common/world/layer/BOPMixOceansLayer.java new file mode 100644 index 0000000000..2c128423a8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/BOPMixOceansLayer.java @@ -0,0 +1,126 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.common.world.BOPLayerUtil; +import biomesoplenty.common.world.layer.traits.IAreaTransformer3; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.layer.traits.IDimOffset0Transformer; + +public enum BOPMixOceansLayer implements IAreaTransformer3, IDimOffset0Transformer +{ + INSTANCE; + + @Override + public int applyPixel(INoiseRandom context, IArea biomeArea, IArea oceanArea, IArea climateArea, int x, int z) + { + int biomeId = biomeArea.get(x, z); + int oceanId = oceanArea.get(x, z); + int climateVal = climateArea.get(x, z); + BOPClimates climate = BOPClimates.lookup(climateVal); + + if (!BOPLayerUtil.isOcean(biomeId)) + { + return biomeId; + } + else + { + switch (climate) + { + case ICE_CAP: + oceanId = BOPLayerUtil.FROZEN_OCEAN; + break; + + case TUNDRA: + case WET_BOREAL: + case DRY_BOREAL: + oceanId = BOPLayerUtil.COLD_OCEAN; + break; + + case WARM_TEMPERATE: + case SUBTROPICAL: + case MEDITERRANEAN: + case SAVANNA: + oceanId = BOPLayerUtil.LUKEWARM_OCEAN; + break; + + case TROPICAL: + case HOT_DESERT: + oceanId = BOPLayerUtil.WARM_OCEAN; + break; + + default: + oceanId = BOPLayerUtil.OCEAN; + break; + } + + // When far from land, warm oceans should become lukewarm and frozen oceans should become cold + /*for (int xOff = -8; xOff <= 8; xOff += 4) + { + for (int zOff = -8; zOff <= 8; zOff += 4) + { + int offsetBiomeId = biomeArea.get(x + xOff, z + zOff); + + if (!BOPLayerUtil.isOcean(offsetBiomeId)) + { + if (oceanId == BOPLayerUtil.WARM_OCEAN) + { + return BOPLayerUtil.LUKEWARM_OCEAN; + } + + if (oceanId == BOPLayerUtil.FROZEN_OCEAN) + { + return BOPLayerUtil.COLD_OCEAN; + } + } + } + }*/ + + if (biomeId == BOPLayerUtil.DEEP_OCEAN) + { + if (oceanId == BOPLayerUtil.WARM_OCEAN) + { + return BOPLayerUtil.DEEP_WARM_OCEAN; + } + + if (oceanId == BOPLayerUtil.LUKEWARM_OCEAN) + { + return BOPLayerUtil.DEEP_LUKEWARM_OCEAN; + } + + if (oceanId == BOPLayerUtil.OCEAN) + { + return BOPLayerUtil.DEEP_OCEAN; + } + + if (oceanId == BOPLayerUtil.COLD_OCEAN) + { + return BOPLayerUtil.DEEP_COLD_OCEAN; + } + + if (oceanId == BOPLayerUtil.FROZEN_OCEAN) + { + return BOPLayerUtil.DEEP_FROZEN_OCEAN; + } + + if (BiomeUtil.exists(BOPBiomes.wasteland) && oceanId == BiomeUtil.getBiomeId(BOPBiomes.wasteland)) + { + return BiomeUtil.getBiomeId(BOPBiomes.wasteland); + } + } + + return oceanId; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/BOPRiverMixLayer.java b/src/main/java/biomesoplenty/common/world/layer/BOPRiverMixLayer.java new file mode 100644 index 0000000000..6daf94dea6 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/BOPRiverMixLayer.java @@ -0,0 +1,70 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.common.biome.BiomeMetadata; +import biomesoplenty.common.biome.BiomeRegistry; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.common.world.BOPLayerUtil; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.layer.traits.IAreaTransformer2; +import net.minecraft.world.gen.layer.traits.IDimOffset0Transformer; + +public enum BOPRiverMixLayer implements IAreaTransformer2, IDimOffset0Transformer +{ + INSTANCE; + + private static final int FROZEN_RIVER = BiomeUtil.getBiomeId(Biomes.FROZEN_RIVER); + private static final int SNOWY_TUNDRA = BiomeUtil.getBiomeId(Biomes.SNOWY_TUNDRA); + private static final int MUSHROOM_FIELDS = BiomeUtil.getBiomeId(Biomes.MUSHROOM_FIELDS); + private static final int MUSHROOM_FIELD_SHORE = BiomeUtil.getBiomeId(Biomes.MUSHROOM_FIELD_SHORE); + private static final int RIVER = BiomeUtil.getBiomeId(Biomes.RIVER); + + @Override + public int applyPixel(INoiseRandom context, IArea biomeArea, IArea riverArea, int x, int z) + { + int biomeId = biomeArea.get(x, z); + int riverId = riverArea.get(x, z); + RegistryKey biome = BiomeUtil.createKey(biomeId); + + if (BOPLayerUtil.isOcean(biomeId)) + { + return biomeId; + } + else if (riverId == RIVER) + { + if (biomeId == SNOWY_TUNDRA) + { + return FROZEN_RIVER; + } + else if (BiomeUtil.hasMetadata(biome)) + { + BiomeMetadata meta = BiomeUtil.getMetadata(biome); + + if (meta.getRiverBiome() != null) + return BiomeUtil.getBiomeId(meta.getRiverBiome()); + else + return biomeId; + } + else + { + return biomeId != MUSHROOM_FIELDS && biomeId != MUSHROOM_FIELD_SHORE ? riverId & 255 : MUSHROOM_FIELD_SHORE; + } + } + else + { + return biomeId; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/BOPShoreLayer.java b/src/main/java/biomesoplenty/common/world/layer/BOPShoreLayer.java new file mode 100644 index 0000000000..8add8bac58 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/BOPShoreLayer.java @@ -0,0 +1,146 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.common.biome.BiomeMetadata; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.common.world.BOPLayerUtil; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.layer.traits.ICastleTransformer; + +import java.util.Optional; + +public enum BOPShoreLayer implements ICastleTransformer +{ + INSTANCE; + + private static final int BEACH = BiomeUtil.getBiomeId(Biomes.BEACH); + private static final int SNOWY_BEACH = BiomeUtil.getBiomeId(Biomes.SNOWY_BEACH); + private static final int DESERT = BiomeUtil.getBiomeId(Biomes.DESERT); + private static final int MOUNTAINS = BiomeUtil.getBiomeId(Biomes.MOUNTAINS); + private static final int WOODED_MOUNTAINS = BiomeUtil.getBiomeId(Biomes.WOODED_MOUNTAINS); + private static final int FOREST = BiomeUtil.getBiomeId(Biomes.FOREST); + private static final int JUNGLE = BiomeUtil.getBiomeId(Biomes.JUNGLE); + private static final int JUNGLE_EDGE = BiomeUtil.getBiomeId(Biomes.JUNGLE_EDGE); + private static final int JUNGLE_HILLS = BiomeUtil.getBiomeId(Biomes.JUNGLE_HILLS); + private static final int BADLANDS = BiomeUtil.getBiomeId(Biomes.BADLANDS); + private static final int WOODED_BADLANDS_PLATEAU = BiomeUtil.getBiomeId(Biomes.WOODED_BADLANDS_PLATEAU); + private static final int BADLANDS_PLATEAU = BiomeUtil.getBiomeId(Biomes.BADLANDS_PLATEAU); + private static final int ERODED_BADLANDS = BiomeUtil.getBiomeId(Biomes.ERODED_BADLANDS); + private static final int MODIFIED_WOODED_BADLANDS_PLATEAU = BiomeUtil.getBiomeId(Biomes.MODIFIED_WOODED_BADLANDS_PLATEAU); + private static final int MODIFIED_BADLANDS_PLATEAU = BiomeUtil.getBiomeId(Biomes.MODIFIED_BADLANDS_PLATEAU); + private static final int MUSHROOM_FIELDS = BiomeUtil.getBiomeId(Biomes.MUSHROOM_FIELDS); + private static final int MUSHROOM_FIELD_SHORE = BiomeUtil.getBiomeId(Biomes.MUSHROOM_FIELD_SHORE); + private static final int RIVER = BiomeUtil.getBiomeId(Biomes.RIVER); + private static final int MOUNTAIN_EDGE = BiomeUtil.getBiomeId(Biomes.MOUNTAIN_EDGE); + private static final int STONE_SHORE = BiomeUtil.getBiomeId(Biomes.STONE_SHORE); + private static final int SWAMP = BiomeUtil.getBiomeId(Biomes.SWAMP); + private static final int TAIGA = BiomeUtil.getBiomeId(Biomes.TAIGA); + + @Override + public int apply(INoiseRandom context, int northBiomeId, int eastBiomeId, int southBiomeId, int westBiomeId, int biomeId) + { + Biome biome = BiomeUtil.getBiome(biomeId); + RegistryKey key = BiomeUtil.createKey(biome); + + if (biomeId == MUSHROOM_FIELDS) + { + if (BOPLayerUtil.isShallowOcean(northBiomeId) || BOPLayerUtil.isShallowOcean(eastBiomeId) || BOPLayerUtil.isShallowOcean(southBiomeId) || BOPLayerUtil.isShallowOcean(westBiomeId)) + { + return MUSHROOM_FIELD_SHORE; + } + } + else if (biome != null && biome.getBiomeCategory() == Biome.Category.JUNGLE && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest_floodplain, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest_cliffs, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.fungal_jungle, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.fungal_field, biomeId)) + { + if (!isJungleCompatible(northBiomeId) || !isJungleCompatible(eastBiomeId) || !isJungleCompatible(southBiomeId) || !isJungleCompatible(westBiomeId)) + { + return JUNGLE_EDGE; + } + } + else if (biomeId != MOUNTAINS && biomeId != WOODED_MOUNTAINS && biomeId != MOUNTAIN_EDGE) + { + if (biome != null && biome.getPrecipitation() == Biome.RainType.SNOW) + { + if (!BOPLayerUtil.isOcean(biomeId) && (BOPLayerUtil.isOcean(northBiomeId) || BOPLayerUtil.isOcean(eastBiomeId) || BOPLayerUtil.isOcean(southBiomeId) || BOPLayerUtil.isOcean(westBiomeId))) + { + if (BiomeUtil.hasMetadata(biome)) + { + BiomeMetadata meta = BiomeUtil.getMetadata(biome); + + if (meta.getBeachBiome() == null) + return biomeId; + } + + return SNOWY_BEACH; + } + } + else if (biomeId != BADLANDS && biomeId != WOODED_BADLANDS_PLATEAU) + { + if (!BOPLayerUtil.isOcean(biomeId) && biomeId != RIVER && biomeId != SWAMP && (BOPLayerUtil.isOcean(northBiomeId) || BOPLayerUtil.isOcean(eastBiomeId) || BOPLayerUtil.isOcean(southBiomeId) || BOPLayerUtil.isOcean(westBiomeId))) + { + if (BiomeUtil.hasMetadata(biome)) + { + BiomeMetadata meta = BiomeUtil.getMetadata(biome); + + if (meta.getBeachBiome() == null) return biomeId; + else return BiomeUtil.getBiomeId(meta.getBeachBiome()); + } + else + { + if (key == Biomes.TAIGA || key == Biomes.TAIGA_MOUNTAINS || key == Biomes.TAIGA_HILLS || key == Biomes.GIANT_TREE_TAIGA || key == Biomes.GIANT_SPRUCE_TAIGA || key == Biomes.GIANT_TREE_TAIGA_HILLS || key == Biomes.GIANT_SPRUCE_TAIGA_HILLS || key == Biomes.BIRCH_FOREST_HILLS || key == Biomes.BIRCH_FOREST || key == Biomes.TALL_BIRCH_HILLS || key == Biomes.TALL_BIRCH_FOREST || key == Biomes.DARK_FOREST_HILLS || key == Biomes.DARK_FOREST) + { + return getBiomeIdIfPresent(BOPBiomes.gravel_beach, biomeId); + } + } + + return BEACH; + } + } + else if (!BOPLayerUtil.isOcean(northBiomeId) && !BOPLayerUtil.isOcean(eastBiomeId) && !BOPLayerUtil.isOcean(southBiomeId) && !BOPLayerUtil.isOcean(westBiomeId) && (!isMesa(northBiomeId) || !isMesa(eastBiomeId) || !isMesa(southBiomeId) || !isMesa(westBiomeId))) + { + return DESERT; + } + } + else if (!BOPLayerUtil.isOcean(biomeId) && (BOPLayerUtil.isOcean(northBiomeId) || BOPLayerUtil.isOcean(eastBiomeId) || BOPLayerUtil.isOcean(southBiomeId) || BOPLayerUtil.isOcean(westBiomeId))) + { + return STONE_SHORE; + } + + return biomeId; + } + + private static int getBiomeIdIfPresent(RegistryKey biome, int fallbackId) + { + return BiomeUtil.exists(biome) ? BiomeUtil.getBiomeId(biome) : fallbackId; + } + + private static boolean isJungleCompatible(int biomeId) + { + Biome biome = BiomeUtil.getBiome(biomeId); + + if (biome != null && biome.getBiomeCategory() == Biome.Category.JUNGLE) + { + return true; + } + else + { + return biomeId == JUNGLE_EDGE || biomeId == JUNGLE || biomeId == JUNGLE_HILLS || biomeId == FOREST || biomeId == TAIGA || BOPLayerUtil.isOcean(biomeId); + } + } + + private static boolean isMesa(int biomeId) + { + return biomeId == BADLANDS || biomeId == WOODED_BADLANDS_PLATEAU || biomeId == BADLANDS_PLATEAU || biomeId == ERODED_BADLANDS || biomeId == MODIFIED_WOODED_BADLANDS_PLATEAU || biomeId == MODIFIED_BADLANDS_PLATEAU; + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/ClimateLayer.java b/src/main/java/biomesoplenty/common/world/layer/ClimateLayer.java new file mode 100644 index 0000000000..64cc06eea2 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/ClimateLayer.java @@ -0,0 +1,40 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.api.enums.BOPClimates; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.layer.traits.IAreaTransformer2; +import net.minecraft.world.gen.layer.traits.IDimOffset0Transformer; + +public enum ClimateLayer implements IAreaTransformer2, IDimOffset0Transformer +{ + INSTANCE; + + private final int[] climateMapping; + + ClimateLayer() + { + this.climateMapping = BOPClimates.getClimateMappingInts(); + } + + @Override + public int applyPixel(INoiseRandom context, IArea area1, IArea area2, int x, int z) + { + int temperature = area1.get(x, z); + int rainfall = area2.get(x, z); + + // temperature values from 0 (cold) to 8 (hot) and rainfall values from 0 (wet) to 11 (dry), index is (temperatureValue * 12) + rainfallValue + // clamp as a precaution against potential rounding errors due to use of doubles/floats in noise calculations + // this guarantees index is between 0 and 108 (= 9 * 12), the range of indexes in BOPClimates.getClimateMappingInts() + int index = ( MathHelper.clamp(temperature, 0, 8) * 12 ) + MathHelper.clamp(rainfall, 0, 11); + return this.climateMapping[index]; + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/LandLayer.java b/src/main/java/biomesoplenty/common/world/layer/LandLayer.java new file mode 100644 index 0000000000..eb6fd3be9b --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/LandLayer.java @@ -0,0 +1,20 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.layer.traits.IAreaTransformer0; + +public enum LandLayer implements IAreaTransformer0 +{ + INSTANCE; + + public int applyPixel(INoiseRandom random, int x, int z) { + return 1; + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/LargeIslandLayer.java b/src/main/java/biomesoplenty/common/world/layer/LargeIslandLayer.java new file mode 100644 index 0000000000..a5504c69ca --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/LargeIslandLayer.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.layer.traits.IAreaTransformer2; +import net.minecraft.world.gen.layer.traits.IDimOffset1Transformer; + +public enum LargeIslandLayer implements IAreaTransformer2, IDimOffset1Transformer +{ + INSTANCE; + + @Override + public int applyPixel(INoiseRandom context, IArea landSeaArea, IArea climateArea, int x, int z) + { + int centerVal = landSeaArea.get(x + 1, z + 1); + + if (context.nextRandom(50) == 0) + { + int northVal = landSeaArea.get(x + 1, z + 0); + int eastVal = landSeaArea.get(x + 2, z + 1); + int southVal = landSeaArea.get(x + 1, z + 2); + int westVal = landSeaArea.get(x + 0, z + 1); + int climateVal = climateArea.get(x, z); + + BOPClimates climate; + try + { + climate = BOPClimates.lookup(climateVal); + } + catch (ArrayIndexOutOfBoundsException e) + { + // This shouldn't happen - but apparently it (rarely) does (https://github.com/Glitchfiend/BiomesOPlenty/issues/983) + // If it does it means that something weird happened with the climate layer / lookup + // Rethrow with hopefully a more useful message + String msg = "Climate lookup failed climateOrdinal: " + climateVal; + throw new RuntimeException(msg,e); + } + + if (centerVal == 0 && northVal == 0 && eastVal == 0 && southVal == 0 && westVal == 0) + { + RegistryKey islandBiome = climate.getRandomIslandBiome(context, null); + + if (islandBiome == null) + { + return centerVal; + } + else + { + return BiomeUtil.getBiomeId(islandBiome); + } + } + else return centerVal; + } else { + return centerVal; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/NetherBiomeLayer.java b/src/main/java/biomesoplenty/common/world/layer/NetherBiomeLayer.java new file mode 100644 index 0000000000..3db7e66c47 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/NetherBiomeLayer.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.layer.traits.IAreaTransformer0; +import net.minecraft.world.gen.layer.traits.IDimOffset0Transformer; + +public enum NetherBiomeLayer implements IAreaTransformer0, IDimOffset0Transformer +{ + INSTANCE; + + @Override + public int applyPixel(INoiseRandom context, int x, int z) + { + return BiomeUtil.getBiomeId(BOPClimates.NETHER.getRandomBiome(context, Biomes.NETHER_WASTES)); + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/RainfallNoiseLayer.java b/src/main/java/biomesoplenty/common/world/layer/RainfallNoiseLayer.java new file mode 100644 index 0000000000..6ebb7a4730 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/RainfallNoiseLayer.java @@ -0,0 +1,62 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import java.util.Random; + +import biomesoplenty.common.world.SimplexNoise; +import biomesoplenty.common.world.layer.traits.IBOPAreaTransformer0; +import biomesoplenty.common.world.layer.traits.IBOPContextExtended; + +public enum RainfallNoiseLayer implements IBOPAreaTransformer0 +{ + SMALL_ZONES(0.16D), + MEDIUM_ZONES(0.06D), + LARGE_ZONES(0.01D); + + private final double scale; + + private long seed; + private double xOffset; + private double zOffset; + + RainfallNoiseLayer(double scale) + { + this.scale = scale; + } + + @Override + public int applyPixel(IBOPContextExtended context, int x, int z) + { + long seed = context.getWorldSeed(); + + // If the seed has changed, re-initialize offsets + if (this.seed != seed) { + Random random = new Random(seed - 123); + this.xOffset = (random.nextDouble() - 0.5) * 8192; + this.zOffset = (random.nextDouble() - 0.5) * 8192; + this.seed = seed; + } + + double noiseVal = SimplexNoise.noise((x + this.xOffset) * this.scale, (z + this.zOffset) * this.scale); + + // boundaries were determined empirically by analyzing statistically output from the SimplexNoise function, and splitting into 12 equally likely groups + if (noiseVal < -0.637D) return 0; + else if (noiseVal < -0.575D) return 1; + else if (noiseVal < -0.465D) return 2; + else if (noiseVal < -0.295D) return 3; + else if (noiseVal < -0.148D) return 4; + else if (noiseVal < -0.034D) return 5; + else if (noiseVal < 0.132D) return 6; + else if (noiseVal < 0.246D) return 7; + else if (noiseVal < 0.400D) return 8; + else if (noiseVal < 0.551D) return 9; + else if (noiseVal < 0.634D) return 10; + else return 11; + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/RainfallRandomLayer.java b/src/main/java/biomesoplenty/common/world/layer/RainfallRandomLayer.java new file mode 100644 index 0000000000..a2eebf3fac --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/RainfallRandomLayer.java @@ -0,0 +1,23 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.common.world.layer.traits.IBOPAreaTransformer0; +import biomesoplenty.common.world.layer.traits.IBOPContextExtended; + +public enum RainfallRandomLayer implements IBOPAreaTransformer0 +{ + INSTANCE; + + @Override + public int applyPixel(IBOPContextExtended context, int x, int z) + { + // Choose a random heat value + return context.nextRandom(12); + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/SubBiomeLayer.java b/src/main/java/biomesoplenty/common/world/layer/SubBiomeLayer.java new file mode 100644 index 0000000000..939938c99e --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/SubBiomeLayer.java @@ -0,0 +1,202 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.common.world.BOPLayerUtil; +import biomesoplenty.init.ModBiomes; +import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2IntMap; +import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; +import net.minecraft.util.Util; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.layer.LayerUtil; +import net.minecraft.world.gen.layer.traits.IAreaTransformer2; +import net.minecraft.world.gen.layer.traits.IDimOffset1Transformer; + +import java.util.Iterator; +import java.util.List; + +public enum SubBiomeLayer implements IAreaTransformer2, IDimOffset1Transformer +{ + INSTANCE; + + private static final int BIRCH_FOREST = BiomeUtil.getBiomeId(Biomes.BIRCH_FOREST); + private static final int BIRCH_FOREST_HILLS = BiomeUtil.getBiomeId(Biomes.BIRCH_FOREST_HILLS); + private static final int DESERT = BiomeUtil.getBiomeId(Biomes.DESERT); + private static final int DESERT_HILLS = BiomeUtil.getBiomeId(Biomes.DESERT_HILLS); + private static final int MOUNTAINS = BiomeUtil.getBiomeId(Biomes.MOUNTAINS); + private static final int WOODED_MOUNTAINS = BiomeUtil.getBiomeId(Biomes.WOODED_MOUNTAINS); + private static final int FOREST = BiomeUtil.getBiomeId(Biomes.FOREST); + private static final int WOODED_HILLS = BiomeUtil.getBiomeId(Biomes.WOODED_HILLS); + private static final int SNOWY_TUNDRA = BiomeUtil.getBiomeId(Biomes.SNOWY_TUNDRA); + private static final int SNOWY_MOUNTAINS = BiomeUtil.getBiomeId(Biomes.SNOWY_MOUNTAINS); + private static final int JUNGLE = BiomeUtil.getBiomeId(Biomes.JUNGLE); + private static final int JUNGLE_HILLS = BiomeUtil.getBiomeId(Biomes.JUNGLE_HILLS); + private static final int BAMBOO_JUNGLE = BiomeUtil.getBiomeId(Biomes.BAMBOO_JUNGLE); + private static final int BAMBOO_JUNGLE_HILLS = BiomeUtil.getBiomeId(Biomes.BAMBOO_JUNGLE_HILLS); + private static final int BADLANDS = BiomeUtil.getBiomeId(Biomes.BADLANDS); + private static final int WOODED_BADLANDS_PLATEAU = BiomeUtil.getBiomeId(Biomes.WOODED_BADLANDS_PLATEAU); + private static final int PLAINS = BiomeUtil.getBiomeId(Biomes.PLAINS); + private static final int GIANT_TREE_TAIGA = BiomeUtil.getBiomeId(Biomes.GIANT_TREE_TAIGA); + private static final int GIANT_TREE_TAIGA_HILLS = BiomeUtil.getBiomeId(Biomes.GIANT_TREE_TAIGA_HILLS); + private static final int DARK_FOREST = BiomeUtil.getBiomeId(Biomes.DARK_FOREST); + private static final int SAVANNA = BiomeUtil.getBiomeId(Biomes.SAVANNA); + private static final int SAVANA_PLATEAU = BiomeUtil.getBiomeId(Biomes.SAVANNA_PLATEAU); + private static final int TAIGA = BiomeUtil.getBiomeId(Biomes.TAIGA); + private static final int SNOWY_TAIGA = BiomeUtil.getBiomeId(Biomes.SNOWY_TAIGA); + private static final int SNOWY_TAIGA_HILLS = BiomeUtil.getBiomeId(Biomes.SNOWY_TAIGA_HILLS); + private static final int TAIGA_HILLS = BiomeUtil.getBiomeId(Biomes.TAIGA_HILLS); + + private static final Int2IntMap MUTATIONS = Util.make(new Int2IntOpenHashMap(), (map) -> { + map.put(1, 129); + map.put(2, 130); + map.put(3, 131); + map.put(4, 132); + map.put(5, 133); + map.put(6, 134); + map.put(12, 140); + map.put(21, 149); + map.put(23, 151); + map.put(27, 155); + map.put(28, 156); + map.put(29, 157); + map.put(30, 158); + map.put(32, 160); + map.put(33, 161); + map.put(34, 162); + map.put(35, 163); + map.put(36, 164); + map.put(37, 165); + map.put(38, 166); + map.put(39, 167); + }); + + @Override + public int applyPixel(INoiseRandom context, IArea biomeArea, IArea riverAndSubBiomesInitArea, int x, int z) + { + int biomeId = biomeArea.get(this.getParentX(x + 1), this.getParentY(z + 1)); + int initVal = riverAndSubBiomesInitArea.get(this.getParentX(x + 1), this.getParentY(z + 1)); + + int subBiomeType = (initVal - 2) % 29; + boolean tryRareHillsBiome = subBiomeType == 0; + boolean tryRareBiome = subBiomeType == 1; + + Biome mutatedBiome; + if (!BOPLayerUtil.isShallowOcean(biomeId) && initVal >= 2 && tryRareBiome) + { + return MUTATIONS.getOrDefault(biomeId, biomeId); + } + + if (context.nextRandom(3) == 0 || tryRareHillsBiome) + { + int mutatedBiomeId = this.getCommonSubBiomeId(context, biomeId); + + if (mutatedBiomeId != biomeId) + return mutatedBiomeId; + + mutatedBiomeId = this.getRareSubBiomeId(context, biomeId); + + if (subBiomeType == 0 && mutatedBiomeId != biomeId) + { + mutatedBiomeId = MUTATIONS.getOrDefault(mutatedBiomeId, biomeId); + } + + if (mutatedBiomeId != biomeId) + { + int surroundingSimilarCount = 0; + if (LayerUtil.isSame(biomeArea.get(x + 1, z + 0), biomeId)) + ++surroundingSimilarCount; + if (LayerUtil.isSame(biomeArea.get(x + 2, z + 1), biomeId)) + ++surroundingSimilarCount; + if (LayerUtil.isSame(biomeArea.get(x + 0, z + 1), biomeId)) + ++surroundingSimilarCount; + if (LayerUtil.isSame(biomeArea.get(x + 1, z + 2), biomeId)) + ++surroundingSimilarCount; + + if (surroundingSimilarCount >= 3) + return mutatedBiomeId; + } + } + + return biomeId; + } + + public int getCommonSubBiomeId(INoiseRandom context, int originalBiomeId) + { + float rarity = (float)context.nextRandom(100) / 100.0f; + List weightedBiomeEntryList = Lists.newArrayList(); + int selectedBiomeId = originalBiomeId; + int totalWeight = 0; + + // Find suitable candidates + for (ModBiomes.WeightedSubBiome entry : ModBiomes.subBiomes.get(originalBiomeId)) + { + if (entry.rarity >= rarity) + { + weightedBiomeEntryList.add(new BOPClimates.WeightedBiomeEntry(entry.weight, entry.biome)); + totalWeight += entry.weight; + } + } + + if (totalWeight <= 0) + return selectedBiomeId; + + int weight = context.nextRandom(totalWeight); + Iterator iterator = weightedBiomeEntryList.iterator(); + BOPClimates.WeightedBiomeEntry item; + do + { + item = iterator.next(); + weight -= item.weight; + } + while (weight >= 0); + + selectedBiomeId = BiomeUtil.getBiomeId(item.biome); + return selectedBiomeId; + } + + public int getRareSubBiomeId(INoiseRandom context, int originalBiomeId) + { + int mutatedBiomeId = originalBiomeId; + if (originalBiomeId == DESERT) mutatedBiomeId = DESERT_HILLS; + else if (originalBiomeId == FOREST) mutatedBiomeId = WOODED_HILLS; + else if (originalBiomeId == BIRCH_FOREST) mutatedBiomeId = BIRCH_FOREST_HILLS; + else if (originalBiomeId == DARK_FOREST) mutatedBiomeId = PLAINS; + else if (originalBiomeId == TAIGA) mutatedBiomeId = TAIGA_HILLS; + else if (originalBiomeId == GIANT_TREE_TAIGA) mutatedBiomeId = GIANT_TREE_TAIGA_HILLS; + else if (originalBiomeId == SNOWY_TAIGA) mutatedBiomeId = SNOWY_TAIGA_HILLS; + //Use BOP orchard instead of vanilla forest + //else if (originalBiomeId == PLAINS) mutatedBiomeId = context.random(3) == 0 ? WOODED_HILLS : FOREST; + else if (originalBiomeId == PLAINS && BiomeUtil.exists(BOPBiomes.orchard)) mutatedBiomeId = BiomeUtil.getBiomeId(BOPBiomes.orchard); + ////////// + else if (originalBiomeId == SNOWY_TUNDRA) mutatedBiomeId = SNOWY_MOUNTAINS; + else if (originalBiomeId == JUNGLE) mutatedBiomeId = JUNGLE_HILLS; + else if (originalBiomeId == BAMBOO_JUNGLE) mutatedBiomeId = BAMBOO_JUNGLE_HILLS; + else if (originalBiomeId == BOPLayerUtil.OCEAN) mutatedBiomeId = BOPLayerUtil.DEEP_OCEAN; + else if (originalBiomeId == BOPLayerUtil.LUKEWARM_OCEAN) mutatedBiomeId = BOPLayerUtil.DEEP_LUKEWARM_OCEAN; + else if (originalBiomeId == BOPLayerUtil.COLD_OCEAN) mutatedBiomeId = BOPLayerUtil.DEEP_COLD_OCEAN; + else if (originalBiomeId == BOPLayerUtil.FROZEN_OCEAN) mutatedBiomeId = BOPLayerUtil.DEEP_FROZEN_OCEAN; + else if (originalBiomeId == MOUNTAINS) mutatedBiomeId = WOODED_MOUNTAINS; + else if (originalBiomeId == SAVANNA) mutatedBiomeId = SAVANA_PLATEAU; + else if (LayerUtil.isSame(originalBiomeId, WOODED_BADLANDS_PLATEAU)) mutatedBiomeId = BADLANDS; + /*else if ((originalBiomeId == BOPLayerUtil.DEEP_OCEAN || originalBiomeId == BOPLayerUtil.DEEP_LUKEWARM_OCEAN || originalBiomeId == BOPLayerUtil.DEEP_COLD_OCEAN || originalBiomeId == BOPLayerUtil.DEEP_FROZEN_OCEAN) && context.random(3) == 0) + { + mutatedBiomeId = context.random(2) == 0 ? PLAINS : FOREST; + }*/ + + return mutatedBiomeId; + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/TemperatureLatitudeLayer.java b/src/main/java/biomesoplenty/common/world/layer/TemperatureLatitudeLayer.java new file mode 100644 index 0000000000..2ae4c3cffd --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/TemperatureLatitudeLayer.java @@ -0,0 +1,31 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.common.world.layer.traits.IBOPAreaTransformer0; +import biomesoplenty.common.world.layer.traits.IBOPContextExtended; +import net.minecraft.util.math.MathHelper; + +public enum TemperatureLatitudeLayer implements IBOPAreaTransformer0 +{ + INSTANCE; + + private static final double HALF_PERIOD = 16.0D; + private static final double PERIOD = HALF_PERIOD * 2.0D; + private static final double OFFSET_VARIATION = HALF_PERIOD / 10.0D; + private static final double AMPLITUDE = 8.9999D / HALF_PERIOD; + + @Override + public int applyPixel(IBOPContextExtended context, int x, int z) + { + int offset = (int) (context.getWorldSeed() % ((int) (PERIOD * 2))); + + double yOffset = z + offset + ((context.nextRandom(1001) - 500) * OFFSET_VARIATION / 500.0D); + return MathHelper.floor(AMPLITUDE * Math.abs((Math.abs(yOffset % PERIOD) - HALF_PERIOD))); + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/TemperatureNoiseLayer.java b/src/main/java/biomesoplenty/common/world/layer/TemperatureNoiseLayer.java new file mode 100644 index 0000000000..8d3eb22e2f --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/TemperatureNoiseLayer.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import java.util.Random; + +import biomesoplenty.common.world.SimplexNoise; +import biomesoplenty.common.world.layer.traits.IBOPAreaTransformer0; +import biomesoplenty.common.world.layer.traits.IBOPContextExtended; + +public enum TemperatureNoiseLayer implements IBOPAreaTransformer0 +{ + SMALL_ZONES(0.16D), + MEDIUM_ZONES(0.06D), + LARGE_ZONES(0.01D); + + private final double scale; + + private long seed; + private double xOffset; + private double zOffset; + + TemperatureNoiseLayer(double scale) + { + this.scale = scale; + } + + @Override + public int applyPixel(IBOPContextExtended context, int x, int z) + { + long seed = context.getWorldSeed(); + + // If the seed has changed, re-initialize offsets + if (this.seed != seed) { + Random random = new Random(seed + 123); + this.xOffset = (random.nextDouble() - 0.5) * 8192; + this.zOffset = (random.nextDouble() - 0.5) * 8192; + this.seed = seed; + } + + double noiseVal = SimplexNoise.noise((x + this.xOffset) * this.scale, (z + this.zOffset) * this.scale); + + // boundaries were determined empirically by analyzing statistically output from the SimplexNoise function, and splitting into 9 equally likely groups + if (noiseVal < -0.619D) return 0; + else if (noiseVal < -0.503D) return 1; + else if (noiseVal < -0.293D) return 2; + else if (noiseVal < -0.120D) return 3; + else if (noiseVal < 0.085D) return 4; + else if (noiseVal < 0.252D) return 5; + else if (noiseVal < 0.467D) return 6; + else if (noiseVal < 0.619D) return 7; + else return 8; + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/TemperatureRandomLayer.java b/src/main/java/biomesoplenty/common/world/layer/TemperatureRandomLayer.java new file mode 100644 index 0000000000..5f40315cab --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/TemperatureRandomLayer.java @@ -0,0 +1,22 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.common.world.layer.traits.IBOPAreaTransformer0; +import biomesoplenty.common.world.layer.traits.IBOPContextExtended; + +public enum TemperatureRandomLayer implements IBOPAreaTransformer0 +{ + INSTANCE; + + @Override + public int applyPixel(IBOPContextExtended context, int x, int z) + { + return context.nextRandom(9); + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/traits/IAreaTransformer3.java b/src/main/java/biomesoplenty/common/world/layer/traits/IAreaTransformer3.java new file mode 100644 index 0000000000..c7743069e8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/traits/IAreaTransformer3.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer.traits; + +import net.minecraft.world.gen.IExtendedNoiseRandom; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.area.IAreaFactory; +import net.minecraft.world.gen.layer.traits.IDimTransformer; + +public interface IAreaTransformer3 extends IDimTransformer +{ + default IAreaFactory run(IExtendedNoiseRandom context, IAreaFactory areaFactory1, IAreaFactory areaFactory2, IAreaFactory areaFactory3) + { + return () -> + { + R area1 = areaFactory1.make(); + R area2 = areaFactory2.make(); + R area3 = areaFactory3.make(); + + return context.createResult + ((x, z) -> { + context.initRandom((long)x, (long)z); + return this.applyPixel(context, area1, area2, area3, x, z); + }); + }; + } + + int applyPixel(INoiseRandom context, IArea area1, IArea area2, IArea area3, int x, int z); +} diff --git a/src/main/java/biomesoplenty/common/world/layer/traits/IBOPAreaTransformer0.java b/src/main/java/biomesoplenty/common/world/layer/traits/IBOPAreaTransformer0.java new file mode 100644 index 0000000000..f229848ad9 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/traits/IBOPAreaTransformer0.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer.traits; + +import net.minecraft.world.gen.IExtendedNoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.area.IAreaFactory; + +/*** + * An area transformer that takes 0 existing AreaDimensions. Classes implementing + * this interface are not required to implement any further Transformer interfaces. + */ +public interface IBOPAreaTransformer0 +{ + default IAreaFactory run(IExtendedNoiseRandom context) + { + if (!(context instanceof IBOPContextExtended)) + throw new IllegalArgumentException("Context must be an IBOPContextExtended"); + + IBOPContextExtended bopContext = (IBOPContextExtended)context; + + // Create a new IAreaFactory + return () -> + // Return a new IArea, with the below IPixelTransformer + context.createResult((x, z) -> + { + context.initRandom((long)(x), (long)(z)); + return this.applyPixel(bopContext, x, z); + }); + } + + int applyPixel(IBOPContextExtended context, int x, int z); +} diff --git a/src/main/java/biomesoplenty/common/world/layer/traits/IBOPContextExtended.java b/src/main/java/biomesoplenty/common/world/layer/traits/IBOPContextExtended.java new file mode 100644 index 0000000000..74fde9ec08 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/traits/IBOPContextExtended.java @@ -0,0 +1,19 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer.traits; + +import net.minecraft.world.gen.IExtendedNoiseRandom; +import net.minecraft.world.gen.area.IArea; + +/*** + * Provides extra information beyond that used by Mojang. + */ +public interface IBOPContextExtended extends IExtendedNoiseRandom +{ + long getWorldSeed(); +} diff --git a/src/main/java/biomesoplenty/common/world/layer/traits/LazyAreaLayerContextBOP.java b/src/main/java/biomesoplenty/common/world/layer/traits/LazyAreaLayerContextBOP.java new file mode 100644 index 0000000000..7798164b23 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/traits/LazyAreaLayerContextBOP.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer.traits; + +import net.minecraft.world.gen.LazyAreaLayerContext; +import net.minecraft.world.gen.area.LazyArea; + +public class LazyAreaLayerContextBOP extends LazyAreaLayerContext implements IBOPContextExtended +{ + private long worldSeed; + + public LazyAreaLayerContextBOP(int maxCacheSize, long seed, long seedModifier) + { + super(maxCacheSize, seed, seedModifier); + this.worldSeed = seed; + } + + @Override + public long getWorldSeed() + { + return this.worldSeed; + } +} diff --git a/src/main/java/biomesoplenty/core/BiomesOPlenty.java b/src/main/java/biomesoplenty/core/BiomesOPlenty.java new file mode 100644 index 0000000000..7c6f9e69c7 --- /dev/null +++ b/src/main/java/biomesoplenty/core/BiomesOPlenty.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ + +package biomesoplenty.core; + +import biomesoplenty.client.BOPClassicPack; +import biomesoplenty.client.renderer.BoatRendererBOP; +import biomesoplenty.init.*; +import net.minecraft.client.Minecraft; +import net.minecraft.resources.ResourcePackInfo; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.fml.ModList; +import net.minecraftforge.fml.client.registry.RenderingRegistry; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.event.lifecycle.FMLLoadCompleteEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +@Mod(value = BiomesOPlenty.MOD_ID) +public class BiomesOPlenty +{ + public static final String MOD_ID = "biomesoplenty"; + + public static BiomesOPlenty instance; + public static CommonProxy proxy = DistExecutor.runForDist(() -> ClientProxy::new, () -> CommonProxy::new); + + public static Logger logger = LogManager.getLogger(MOD_ID); + + public BiomesOPlenty() + { + instance = this; + + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonSetup); + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientSetup); + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::loadComplete); + + ModBiomes.setup(); + ModConfig.setup(); + } + + private void commonSetup(final FMLCommonSetupEvent event) + { + event.enqueueWork(() -> + { + ModVanillaCompat.setup(); + }); + } + + private void clientSetup(final FMLClientSetupEvent event) + { + RenderingRegistry.registerEntityRenderingHandler(ModEntities.boat, BoatRendererBOP::new); + } + + private void loadComplete(final FMLLoadCompleteEvent event) // PostRegistrationEven + { + proxy.init(); + ModCompatibility.setup(); + } +} diff --git a/src/main/java/biomesoplenty/core/ClientProxy.java b/src/main/java/biomesoplenty/core/ClientProxy.java new file mode 100644 index 0000000000..d0ee51fb09 --- /dev/null +++ b/src/main/java/biomesoplenty/core/ClientProxy.java @@ -0,0 +1,81 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.core; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.client.BOPClassicPack; +import net.minecraft.block.BlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.color.BlockColors; +import net.minecraft.client.renderer.color.ItemColors; +import net.minecraft.item.BlockItem; +import net.minecraft.resources.ResourcePackInfo; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.FoliageColors; +import net.minecraft.world.GrassColors; +import net.minecraft.world.IBlockDisplayReader; +import net.minecraft.world.biome.BiomeColors; +import net.minecraftforge.fml.ModList; + +import java.awt.*; +import java.util.Calendar; + +public class ClientProxy extends CommonProxy +{ + public ClientProxy() + { + + } + + @Override + public void init() + { + //addClassicPack(); + + BlockColors blockColors = Minecraft.getInstance().getBlockColors(); + ItemColors itemColors = Minecraft.getInstance().getItemColors(); + + //Grass Coloring + blockColors.register((state, world, pos, tintIndex) -> + world != null && pos != null ? BiomeColors.getAverageGrassColor(world, pos) : GrassColors.get(0.5D, 1.0D), + BOPBlocks.sprout, BOPBlocks.clover, BOPBlocks.huge_clover_petal, BOPBlocks.watergrass, BOPBlocks.potted_sprout, BOPBlocks.potted_clover); + + //Foliage Coloring + blockColors.register((state, world, pos, tintIndex) -> + world != null && pos != null ? BiomeColors.getAverageFoliageColor(world, pos) : FoliageColors.getDefaultColor(), + BOPBlocks.bush, BOPBlocks.flowering_oak_leaves, BOPBlocks.mahogany_leaves, BOPBlocks.palm_leaves, + BOPBlocks.willow_leaves, BOPBlocks.willow_vine); + + //Rainbow Birch Leaf Coloring + blockColors.register((state, world, pos, tintIndex) -> + world != null && pos != null ? getRainbowBirchColor(world, pos) : FoliageColors.getDefaultColor(), + BOPBlocks.rainbow_birch_leaves); + + //Item Coloring + itemColors.register((stack, tintIndex) -> { + BlockState BlockState = ((BlockItem)stack.getItem()).getBlock().defaultBlockState(); + return blockColors.getColor(BlockState, null, null, tintIndex); }, + BOPBlocks.sprout, BOPBlocks.bush, BOPBlocks.clover, BOPBlocks.huge_clover_petal, BOPBlocks.flowering_oak_leaves, + BOPBlocks.mahogany_leaves, BOPBlocks.palm_leaves, BOPBlocks.willow_leaves, BOPBlocks.willow_vine); + } + + public static void addClassicPack() + { + if (Minecraft.getInstance() == null) { return; } + Minecraft.getInstance().getResourcePackRepository().addPackFinder((consumer, iFactory) -> consumer.accept(ResourcePackInfo.create(new ResourceLocation(BiomesOPlenty.MOD_ID, "classic_textures").toString(), false, () -> new BOPClassicPack(ModList.get().getModFileById(BiomesOPlenty.MOD_ID).getFile()), iFactory, ResourcePackInfo.Priority.TOP, iTextComponent -> iTextComponent))); + } + + public static int getRainbowBirchColor(IBlockDisplayReader world, BlockPos pos) + { + Color foliage = Color.getHSBColor((((float)pos.getX() + MathHelper.sin(((float)pos.getZ() + (float)pos.getX()) / 35) * 35) % 150) / 150, 0.6F, 1.0F); + + return foliage.getRGB(); + } +} diff --git a/src/main/java/biomesoplenty/core/CommonProxy.java b/src/main/java/biomesoplenty/core/CommonProxy.java new file mode 100644 index 0000000000..3b8ca7279b --- /dev/null +++ b/src/main/java/biomesoplenty/core/CommonProxy.java @@ -0,0 +1,23 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.core; + +import biomesoplenty.api.particle.BOPParticleTypes; +import net.minecraft.world.World; + +public class CommonProxy +{ + public CommonProxy() + { + + } + + public void init() {} + + public void spawnParticle(BOPParticleTypes type, World parWorld, double x, double y, double z, Object... info) {} +} diff --git a/src/main/java/biomesoplenty/init/ModBiomes.java b/src/main/java/biomesoplenty/init/ModBiomes.java new file mode 100644 index 0000000000..a7496dde46 --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModBiomes.java @@ -0,0 +1,568 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.init; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeMetadata; +import biomesoplenty.common.biome.BiomeRegistry; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.biome.nether.CrystallineChasmBiome; +import biomesoplenty.common.biome.nether.UndergrowthBiome; +import biomesoplenty.common.biome.nether.VisceralHeapBiome; +import biomesoplenty.common.biome.nether.WitheredAbyssBiome; +import biomesoplenty.common.biome.overworld.*; +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.common.world.BOPBiomeProvider; +import biomesoplenty.common.world.BOPNetherBiomeProvider; +import biomesoplenty.common.world.BOPWorldType; +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import net.minecraft.entity.villager.VillagerType; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.BiomeColors; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.level.ColorResolver; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.common.BiomeDictionary.Type; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.loading.FMLEnvironment; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.GameData; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.Logger; + +import java.util.List; +import java.util.Map; + +import static biomesoplenty.api.biome.BOPBiomes.*; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class ModBiomes +{ + public static BOPWorldType bopWorldType = new BOPWorldType(); + + public static Multimap subBiomes = HashMultimap.create(); + public static List islandBiomeIds = Lists.newArrayList(); + public static Map, BiomeMetadata> biomeMetadata = Maps.newHashMap(); + + public static void setup() + { + if (FMLEnvironment.dist == Dist.CLIENT) + { + ColorResolver grassColorResolver = BiomeColors.GRASS_COLOR_RESOLVER; + ColorResolver foliageColorResolver = BiomeColors.FOLIAGE_COLOR_RESOLVER; + ColorResolver waterColorResolver = BiomeColors.WATER_COLOR_RESOLVER; + + BiomeColors.GRASS_COLOR_RESOLVER = (biome, posX, posZ) -> + { + RegistryKey key = BiomeUtil.getClientKey(biome); + BiomeMetadata meta = BiomeUtil.getMetadata(key); + + if (meta != null && meta.getGrassColorFunction() != null) + { + return meta.getGrassColorFunction().apply(posX, posZ); + } + + return grassColorResolver.getColor(biome, posX, posZ); + }; + + BiomeColors.FOLIAGE_COLOR_RESOLVER = (biome, posX, posZ) -> + { + RegistryKey key = BiomeUtil.getClientKey(biome); + BiomeMetadata meta = BiomeUtil.getMetadata(key); + + if (meta != null && meta.getFoliageColorFunction() != null) + { + return meta.getFoliageColorFunction().apply(posX, posZ); + } + + return foliageColorResolver.getColor(biome, posX, posZ); + }; + + BiomeColors.WATER_COLOR_RESOLVER = (biome, posX, posZ) -> + { + RegistryKey key = BiomeUtil.getClientKey(biome); + BiomeMetadata meta = BiomeUtil.getMetadata(key); + + if (meta != null && meta.getWaterColorFunction() != null) + { + return meta.getWaterColorFunction().apply(posX, posZ); + } + + return waterColorResolver.getColor(biome, posX, posZ); + }; + } + + // Obtain the game data logger and disable it temporarily + Logger gameDataLogger = (Logger)LogManager.getLogger(GameData.class); + Level oldLevel = gameDataLogger.getLevel(); + gameDataLogger.setLevel(Level.OFF); + + // Register our world type + // We intentionally use the minecraft namespace so we continue using "biomesoplenty" in server.properties + // This is markedly better than the alternative of biomesoplenty:biomesoplenty. + // We do this with GameData logging disabled to prevent people whining at us. + bopWorldType.setRegistryName(new ResourceLocation("biomesoplenty")); + ForgeRegistries.WORLD_TYPES.register(bopWorldType); + + // Re-enable the game data logger + gameDataLogger.setLevel(oldLevel); + + // Register biome providers + Registry.register(Registry.BIOME_SOURCE, "biomesoplenty_overworld", BOPBiomeProvider.CODEC); + Registry.register(Registry.BIOME_SOURCE, "biomesoplenty_nether", BOPNetherBiomeProvider.CODEC); + } + + @SubscribeEvent + public static void registerBiomes(RegistryEvent.Register event) + { + //Technical Biomes (Need to be registered before main biomes that use them) + registerTechnicalBiome(new GravelBeachBiome(), "gravel_beach"); + registerTechnicalBiome(new TropicBeachBiome(), "tropic_beach"); + registerTechnicalBiome(new AlpsFoothillsBiome(), "alps_foothills"); + registerTechnicalBiome(new RedwoodForestEdgeBiome(), "redwood_forest_edge"); + registerTechnicalBiome(new VolcanicPlainsBiome(), "volcanic_plains"); + registerTechnicalBiome(new OrchardBiome(), "orchard"); + + BiomeRegistry.configureTechnicalBiomes(); + BiomeRegistry.finalizeRegistrations(BiomeRegistry.RegistrationType.TECHNICAL_BIOME); + + // Both a standard biome and a technical biome + registerBiome(new BayouMangroveBiome(), "bayou_mangrove"); + + //Overworld Biomes + registerBiome(new AlpsBiome(), "alps"); + registerBiome(new BambooBlossomGroveBiome(), "bamboo_blossom_grove"); + registerBiome(new BayouBiome(), "bayou"); + registerBiome(new BurntForestBiome(), "burnt_forest"); + registerBiome(new CherryBlossomGroveBiome(), "cherry_blossom_grove"); + registerBiome(new ColdDesertBiome(), "cold_desert"); + registerBiome(new ConiferousForestBiome(), "coniferous_forest"); + registerBiome(new ConiferousLakesBiome(), "coniferous_lakes"); + registerBiome(new DeadForestBiome(), "dead_forest"); + registerBiome(new DeepBayouBiome(), "deep_bayou"); + registerBiome(new DenseMarshBiome(), "dense_marsh"); + registerBiome(new DenseWoodlandBiome(), "dense_woodland"); + registerBiome(new DrylandBiome(), "dryland"); + registerBiome(new DryBoneyardBiome(), "dry_boneyard"); + registerBiome(new FirClearingBiome(), "fir_clearing"); + registerBiome(new FlowerMeadowBiome(), "flower_meadow"); + registerBiome(new FungalFieldBiome(), "fungal_field"); + registerBiome(new FungalJungleBiome(), "fungal_jungle"); + registerBiome(new GoldenPrairieBiome(), "golden_prairie"); + registerBiome(new GrasslandBiome(), "grassland"); + registerBiome(new GrasslandCloverPatchBiome(), "grassland_clover_patch"); + registerBiome(new GroveBiome(), "grove"); + registerBiome(new GroveClearingBiome(), "grove_clearing"); + registerBiome(new GroveLakesBiome(), "grove_lakes"); + registerBiome(new HighlandBiome(), "highland"); + registerBiome(new HighlandCragBiome(), "highland_crag"); + registerBiome(new HighlandMoorBiome(), "highland_moor"); + registerBiome(new JadeCliffsBiome(), "jade_cliffs"); + registerBiome(new LavenderFieldBiome(), "lavender_field"); + registerBiome(new LavenderForestBiome(), "lavender_forest"); + registerBiome(new LushDesertBiome(), "lush_desert"); + registerBiome(new LushSavannaBiome(), "lush_savanna"); + registerBiome(new MarshBiome(), "marsh"); + registerBiome(new MeadowBiome(), "meadow"); + registerBiome(new MeadowForestBiome(), "meadow_forest"); + registerBiome(new MuskegBiome(), "muskeg"); + registerBiome(new MysticGroveBiome(), "mystic_grove"); + registerBiome(new MysticPlainsBiome(), "mystic_plains"); + registerBiome(new OminousWoodsBiome(), "ominous_woods"); + registerBiome(new OminousMireBiome(), "ominous_mire"); + registerBiome(new OriginValleyBiome(), "origin_valley"); + registerBiome(new PrairieBiome(), "prairie"); + registerBiome(new RainbowHillsBiome(), "rainbow_hills"); + registerBiome(new RainforestBiome(), "rainforest"); + registerBiome(new RainforestCliffsBiome(), "rainforest_cliffs"); + registerBiome(new RainforestFloodplainBiome(), "rainforest_floodplain"); + registerBiome(new RedwoodForestBiome(), "redwood_forest"); + registerBiome(new RedwoodHillsBiome(), "redwood_hills"); + registerBiome(new ScrublandBiome(), "scrubland"); + registerBiome(new SeasonalForestBiome(), "seasonal_forest"); + registerBiome(new SeasonalOrchardBiome(), "seasonal_orchard"); + registerBiome(new SeasonalPumpkinPatchBiome(), "seasonal_pumpkin_patch"); + registerBiome(new ShroomyWetlandBiome(), "shroomy_wetland"); + registerBiome(new ShrublandBiome(), "shrubland"); + registerBiome(new ShrublandHillsBiome(), "shrubland_hills"); + registerBiome(new SnowyConiferousForestBiome(), "snowy_coniferous_forest"); + registerBiome(new SnowyMapleForestBiome(), "snowy_maple_forest"); + registerBiome(new SnowyFirClearingBiome(), "snowy_fir_clearing"); + registerBiome(new TallDeadForestBiome(), "tall_dead_forest"); + registerBiome(new TropicsBiome(), "tropics"); + registerBiome(new TundraBiome(), "tundra"); + registerBiome(new TundraBasinBiome(), "tundra_basin"); + registerBiome(new TundraBogBiome(), "tundra_bog"); + registerBiome(new VolcanoBiome(), "volcano"); + registerBiome(new WastelandBiome(), "wasteland"); + registerBiome(new WetlandBiome(), "wetland"); + registerBiome(new WetlandForestBiome(), "wetland_forest"); + registerBiome(new WoodedScrublandBiome(), "wooded_scrubland"); + registerBiome(new WoodlandBiome(), "woodland"); + + //Nether Biomes + registerBiome(new CrystallineChasmBiome(), "crystalline_chasm"); + registerBiome(new UndergrowthBiome(), "undergrowth"); + registerBiome(new VisceralHeapBiome(), "visceral_heap"); + registerBiome(new WitheredAbyssBiome(), "withered_abyss"); + + BiomeRegistry.configureStandardBiomes(); + BiomeRegistry.finalizeRegistrations(BiomeRegistry.RegistrationType.STANDARD_BIOME); + + //Sub/Island Biomes (Note: Rarity supports two decimal places) + registerSubBiome(bayou, deep_bayou, 1.0F, 100); + registerSubBiome(bayou, bayou_mangrove, 1.0F, 100); + + registerSubBiome(cherry_blossom_grove, bamboo_blossom_grove, 0.8F, 100); + + registerSubBiome(coniferous_forest, fir_clearing, 0.75F, 100); + registerSubBiome(coniferous_forest, coniferous_lakes, 1.0F, 100); + + registerSubBiome(dead_forest, tall_dead_forest, 0.75F, 100); + registerSubBiome(dead_forest, burnt_forest, 0.6F, 100); + + registerSubBiome(dryland, dry_boneyard, 0.75F, 100); + + registerSubBiome(fungal_jungle, fungal_field, 0.9F, 100); + + registerSubBiome(grassland, grassland_clover_patch, 1.0F, 100); + + registerSubBiome(grove, grove_clearing, 1.0F, 100); + registerSubBiome(grove, grove_lakes, 1.0F, 100); + + registerSubBiome(highland, highland_crag, 1.25F, 100); + registerSubBiome(highland, highland_moor, 0.75F, 100); + + registerSubBiome(lavender_field, lavender_forest, 0.6F, 100); + + registerSubBiome(lush_desert, lush_savanna, 0.65F, 100); + + registerSubBiome(marsh, dense_marsh, 1.0F, 100); + + registerSubBiome(meadow, flower_meadow, 1.0F, 100); + registerSubBiome(meadow, meadow_forest, 1.0F, 100); + + registerSubBiome(mystic_grove, mystic_plains, 0.75F, 100); + + registerSubBiome(ominous_woods, ominous_mire, 0.75F, 100); + + registerSubBiome(prairie, golden_prairie, 1.0F, 100); + + registerSubBiome(rainforest, rainforest_cliffs, 2.0F, 100); + registerSubBiome(rainforest, rainforest_floodplain, 2.0F, 100); + + registerSubBiome(redwood_forest, redwood_hills, 0.75F, 100); + + registerSubBiome(scrubland, wooded_scrubland, 1.0F, 100); + + registerSubBiome(seasonal_forest, seasonal_orchard, 1.0F, 100); + registerSubBiome(seasonal_forest, seasonal_pumpkin_patch, 1.0F, 100); + + registerSubBiome(shrubland, shrubland_hills, 0.75F, 100); + + registerSubBiome(snowy_coniferous_forest, snowy_fir_clearing, 0.75F, 100); + registerSubBiome(snowy_coniferous_forest, snowy_maple_forest, 1.25F, 100); + + registerSubBiome(tundra, tundra_basin, 1.5F, 100); + registerSubBiome(tundra, tundra_bog, 2.0F, 100); + + registerSubBiome(wetland, wetland_forest, 1.5F, 100); + registerSubBiome(wetland, shroomy_wetland, 1.5F, 100); + + registerSubBiome(woodland, dense_woodland, 0.9F, 100); + + BiomeRegistry.configureSubBiomes(); + BiomeRegistry.finalizeRegistrations(BiomeRegistry.RegistrationType.SUB_BIOME); + + registerIslandBiome(origin_valley, BOPClimates.COOL_TEMPERATE, 50); + registerIslandBiome(origin_valley, BOPClimates.DRY_TEMPERATE, 50); + registerIslandBiome(origin_valley, BOPClimates.WET_TEMPERATE, 75); + + registerIslandBiome(volcano, BOPClimates.WARM_TEMPERATE, 75); + registerIslandBiome(volcano, BOPClimates.MEDITERRANEAN, 75); + registerIslandBiome(volcano, BOPClimates.SAVANNA, 50); + + registerIslandBiome(rainbow_hills, BOPClimates.WET_TEMPERATE, 25); + registerIslandBiome(rainbow_hills, BOPClimates.WARM_TEMPERATE, 25); + registerIslandBiome(rainbow_hills, BOPClimates.MEDITERRANEAN, 25); + + registerIslandBiome(tropics, BOPClimates.SUBTROPICAL, 75); + registerIslandBiome(tropics, BOPClimates.TROPICAL, 50); + registerIslandBiome(tropics, BOPClimates.HOT_DESERT, 50); + + BiomeRegistry.configureIslandBiomes(); + BiomeRegistry.finalizeRegistrations(BiomeRegistry.RegistrationType.ISLAND_BIOME); + + // Set up vanilla biomes + registerVanillaBiome(Biomes.SNOWY_TUNDRA, BOPClimates.ICE_CAP, 10); + registerVanillaBiome(Biomes.FROZEN_OCEAN, BOPClimates.ICE_CAP, 3); + registerVanillaBiome(Biomes.MOUNTAINS, BOPClimates.TUNDRA, 10); + registerVanillaBiome(Biomes.SNOWY_TAIGA, BOPClimates.TUNDRA, 7); + registerVanillaBiome(Biomes.TAIGA, BOPClimates.WET_BOREAL, 10); + registerVanillaBiome(Biomes.GIANT_TREE_TAIGA, BOPClimates.DRY_BOREAL, 5); + registerVanillaBiome(Biomes.DARK_FOREST, BOPClimates.WET_TEMPERATE, 7); + registerVanillaBiome(Biomes.BIRCH_FOREST, BOPClimates.DRY_TEMPERATE, 5); + registerVanillaBiome(Biomes.FOREST, BOPClimates.COOL_TEMPERATE, 10); + registerVanillaBiome(Biomes.PLAINS, BOPClimates.WARM_TEMPERATE, 10); + registerVanillaBiome(Biomes.SWAMP, BOPClimates.SUBTROPICAL, 7); + registerVanillaBiome(Biomes.LUKEWARM_OCEAN, BOPClimates.SUBTROPICAL, 3); + registerVanillaBiome(Biomes.JUNGLE, BOPClimates.TROPICAL, 10); + registerVanillaBiome(Biomes.SAVANNA, BOPClimates.SAVANNA, 10); + registerVanillaBiome(Biomes.DESERT, BOPClimates.HOT_DESERT, 15); + registerVanillaBiome(Biomes.BADLANDS_PLATEAU, BOPClimates.HOT_DESERT, 10); + registerVanillaBiome(Biomes.WOODED_BADLANDS_PLATEAU, BOPClimates.HOT_DESERT, 3); + + registerVanillaBiome(Biomes.BASALT_DELTAS, BOPClimates.NETHER, 10); + registerVanillaBiome(Biomes.CRIMSON_FOREST, BOPClimates.NETHER, 10); + registerVanillaBiome(Biomes.NETHER_WASTES, BOPClimates.NETHER, 10); + registerVanillaBiome(Biomes.SOUL_SAND_VALLEY, BOPClimates.NETHER, 10); + registerVanillaBiome(Biomes.WARPED_FOREST, BOPClimates.NETHER, 10); + + BiomeRegistry.configureVanillaBiomes(); + BiomeRegistry.finalizeRegistrations(BiomeRegistry.RegistrationType.VANILLA_BIOME); + + registerBiomeDictionaryTags(); + registerVillagerTypes(); + } + + private static void registerBiomeDictionaryTags() + { + //Overworld Biomes + registerBiomeToDictionary(alps, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.CONIFEROUS, Type.MOUNTAIN, Type.SNOWY); + registerBiomeToDictionary(alps_foothills, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.CONIFEROUS, Type.FOREST, Type.MOUNTAIN, Type.SNOWY); + registerBiomeToDictionary(bamboo_blossom_grove, Type.OVERWORLD, Type.WET, Type.LUSH, Type.RARE, Type.FOREST); + registerBiomeToDictionary(bayou, Type.OVERWORLD, Type.HOT, Type.WET, Type.SWAMP); + registerBiomeToDictionary(bayou_mangrove, Type.OVERWORLD, Type.HOT, Type.WET, Type.SWAMP); + registerBiomeToDictionary(burnt_forest, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.DRY, Type.DEAD, Type.RARE, Type.FOREST); + registerBiomeToDictionary(cherry_blossom_grove, Type.OVERWORLD, Type.WET, Type.LUSH, Type.RARE, Type.FOREST); + registerBiomeToDictionary(cold_desert, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.SNOWY, Type.DRY); + registerBiomeToDictionary(coniferous_forest, Type.OVERWORLD, Type.DENSE, Type.CONIFEROUS, Type.FOREST); + registerBiomeToDictionary(coniferous_lakes, Type.OVERWORLD, Type.SPARSE, Type.CONIFEROUS, Type.FOREST); + registerBiomeToDictionary(dead_forest, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.DEAD, Type.RARE, Type.FOREST); + registerBiomeToDictionary(deep_bayou, Type.OVERWORLD, Type.HOT, Type.DENSE, Type.WET, Type.SWAMP); + registerBiomeToDictionary(dense_marsh, Type.OVERWORLD, Type.DENSE, Type.WET, Type.SWAMP); + registerBiomeToDictionary(dense_woodland, Type.OVERWORLD, Type.DENSE, Type.FOREST); + registerBiomeToDictionary(dryland, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.DRY, Type.SAVANNA, Type.SANDY); + registerBiomeToDictionary(dry_boneyard, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.DRY, Type.SAVANNA, Type.DEAD, Type.SANDY, Type.WASTELAND); + registerBiomeToDictionary(fir_clearing, Type.OVERWORLD, Type.SPARSE, Type.CONIFEROUS, Type.FOREST); + registerBiomeToDictionary(flower_meadow, Type.OVERWORLD, Type.SPARSE, Type.CONIFEROUS, Type.LUSH, Type.PLAINS); + registerBiomeToDictionary(fungal_field, Type.OVERWORLD, Type.HOT, Type.WET, Type.JUNGLE, Type.LUSH, Type.MUSHROOM, Type.RARE, Type.PLAINS); + registerBiomeToDictionary(fungal_jungle, Type.OVERWORLD, Type.HOT, Type.WET, Type.JUNGLE, Type.LUSH, Type.MUSHROOM, Type.RARE); + registerBiomeToDictionary(golden_prairie, Type.OVERWORLD, Type.DRY, Type.PLAINS); + registerBiomeToDictionary(gravel_beach, Type.OVERWORLD, Type.SPARSE, Type.BEACH); + registerBiomeToDictionary(grassland, Type.OVERWORLD, Type.SPARSE, Type.PLAINS, Type.WET); + registerBiomeToDictionary(grassland_clover_patch, Type.OVERWORLD, Type.DENSE, Type.PLAINS, Type.WET); + registerBiomeToDictionary(grove, Type.OVERWORLD, Type.FOREST, Type.HILLS); + registerBiomeToDictionary(grove_clearing, Type.OVERWORLD, Type.SPARSE, Type.PLAINS); + registerBiomeToDictionary(grove_lakes, Type.OVERWORLD, Type.SPARSE); + registerBiomeToDictionary(highland, Type.OVERWORLD, Type.SPARSE, Type.MOUNTAIN, Type.PLAINS); + registerBiomeToDictionary(highland_crag, Type.OVERWORLD, Type.SPARSE, Type.MOUNTAIN, Type.WASTELAND); + registerBiomeToDictionary(highland_moor, Type.OVERWORLD, Type.SPARSE, Type.WET, Type.MOUNTAIN, Type.SWAMP); + registerBiomeToDictionary(jade_cliffs, Type.OVERWORLD, Type.CONIFEROUS, Type.MAGICAL, Type.RARE, Type.FOREST, Type.MOUNTAIN); + registerBiomeToDictionary(lavender_field, Type.OVERWORLD, Type.LUSH, Type.PLAINS); + registerBiomeToDictionary(lavender_forest, Type.OVERWORLD, Type.DENSE, Type.LUSH, Type.FOREST); + registerBiomeToDictionary(lush_desert, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.SAVANNA, Type.LUSH, Type.RARE, Type.SANDY); + registerBiomeToDictionary(lush_savanna, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.SAVANNA, Type.LUSH, Type.RARE, Type.PLAINS); + registerBiomeToDictionary(marsh, Type.OVERWORLD, Type.SPARSE, Type.WET, Type.SWAMP); + registerBiomeToDictionary(meadow, Type.OVERWORLD, Type.WET, Type.CONIFEROUS, Type.FOREST); + registerBiomeToDictionary(meadow_forest, Type.OVERWORLD, Type.WET, Type.CONIFEROUS, Type.FOREST); + registerBiomeToDictionary(muskeg, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.WET, Type.DEAD, Type.RARE, Type.SWAMP, Type.SNOWY); + registerBiomeToDictionary(mystic_grove, Type.OVERWORLD, Type.WET, Type.LUSH, Type.MAGICAL, Type.RARE, Type.FOREST); + registerBiomeToDictionary(mystic_plains, Type.OVERWORLD, Type.SPARSE, Type.WET, Type.LUSH, Type.MAGICAL, Type.RARE, Type.PLAINS); + registerBiomeToDictionary(ominous_mire, Type.OVERWORLD, Type.COLD, Type.WET, Type.CONIFEROUS, Type.SPOOKY, Type.RARE, Type.FOREST, Type.SWAMP); + registerBiomeToDictionary(ominous_woods, Type.OVERWORLD, Type.COLD, Type.WET, Type.CONIFEROUS, Type.SPOOKY, Type.RARE, Type.FOREST); + registerBiomeToDictionary(orchard, Type.OVERWORLD, Type.SPARSE, Type.LUSH, Type.FOREST, Type.PLAINS); + registerBiomeToDictionary(origin_valley, Type.OVERWORLD, Type.RARE); + registerBiomeToDictionary(prairie, Type.OVERWORLD, Type.SPARSE, Type.DRY, Type.PLAINS); + registerBiomeToDictionary(rainbow_hills, Type.OVERWORLD, Type.DENSE, Type.WET, Type.LUSH, Type.MAGICAL, Type.FOREST, Type.HILLS); + registerBiomeToDictionary(rainforest, Type.OVERWORLD, Type.HOT, Type.DENSE, Type.WET, Type.JUNGLE, Type.LUSH, Type.FOREST); + registerBiomeToDictionary(rainforest_cliffs, Type.OVERWORLD, Type.HOT, Type.DENSE, Type.WET, Type.JUNGLE, Type.LUSH, Type.PLATEAU); + registerBiomeToDictionary(rainforest_floodplain, Type.OVERWORLD, Type.HOT, Type.WET, Type.JUNGLE, Type.LUSH, Type.SWAMP); + registerBiomeToDictionary(redwood_forest, Type.OVERWORLD, Type.DENSE, Type.FOREST); + registerBiomeToDictionary(redwood_forest_edge, Type.OVERWORLD, Type.FOREST); + registerBiomeToDictionary(redwood_hills, Type.OVERWORLD, Type.DENSE, Type.FOREST, Type.HILLS); + registerBiomeToDictionary(scrubland, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.DRY, Type.SAVANNA); + registerBiomeToDictionary(seasonal_forest, Type.OVERWORLD, Type.FOREST); + registerBiomeToDictionary(seasonal_orchard, Type.OVERWORLD, Type.FOREST); + registerBiomeToDictionary(seasonal_pumpkin_patch, Type.OVERWORLD, Type.SPARSE, Type.FOREST); + registerBiomeToDictionary(shroomy_wetland, Type.OVERWORLD, Type.WET, Type.FOREST, Type.SWAMP, Type.MUSHROOM); + registerBiomeToDictionary(shrubland, Type.OVERWORLD, Type.SPARSE, Type.PLAINS); + registerBiomeToDictionary(shrubland_hills, Type.OVERWORLD, Type.PLAINS, Type.HILLS); + registerBiomeToDictionary(snowy_coniferous_forest, Type.OVERWORLD, Type.COLD, Type.CONIFEROUS, Type.FOREST, Type.SNOWY); + registerBiomeToDictionary(snowy_fir_clearing, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.CONIFEROUS, Type.FOREST, Type.SNOWY); + registerBiomeToDictionary(snowy_maple_forest, Type.OVERWORLD, Type.COLD, Type.DENSE, Type.CONIFEROUS, Type.FOREST, Type.SNOWY); + registerBiomeToDictionary(tall_dead_forest, Type.OVERWORLD, Type.COLD, Type.DEAD, Type.RARE, Type.FOREST); + registerBiomeToDictionary(tropic_beach, Type.OVERWORLD, Type.HOT, Type.WET, Type.JUNGLE, Type.LUSH, Type.RARE, Type.BEACH, Type.SANDY); + registerBiomeToDictionary(tropics, Type.OVERWORLD, Type.HOT, Type.WET, Type.JUNGLE, Type.LUSH, Type.RARE); + registerBiomeToDictionary(tundra, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.DEAD, Type.PLAINS); + registerBiomeToDictionary(tundra_basin, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.DRY, Type.DEAD, Type.WASTELAND); + registerBiomeToDictionary(tundra_bog, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.WET, Type.SWAMP); + registerBiomeToDictionary(volcanic_plains, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.RARE, Type.BEACH, Type.WASTELAND); + registerBiomeToDictionary(volcano, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.DRY, Type.DEAD, Type.RARE, Type.MOUNTAIN, Type.WASTELAND); + registerBiomeToDictionary(wasteland, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.DRY, Type.SAVANNA, Type.DEAD, Type.RARE, Type.WASTELAND); + registerBiomeToDictionary(wetland, Type.OVERWORLD, Type.WET, Type.FOREST, Type.SWAMP); + registerBiomeToDictionary(wetland_forest, Type.OVERWORLD, Type.WET, Type.DENSE, Type.FOREST, Type.SWAMP); + registerBiomeToDictionary(wooded_scrubland, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.SAVANNA); + registerBiomeToDictionary(woodland, Type.OVERWORLD, Type.FOREST); + + //Nether Biomes + registerBiomeToDictionary(crystalline_chasm, Type.NETHER, Type.HOT, Type.DRY, Type.MAGICAL); + registerBiomeToDictionary(undergrowth, Type.NETHER, Type.HOT, Type.DRY, Type.FOREST); + registerBiomeToDictionary(visceral_heap, Type.NETHER, Type.HOT, Type.DRY); + registerBiomeToDictionary(withered_abyss, Type.NETHER, Type.HOT, Type.DRY, Type.VOID); + } + + private static void registerVillagerTypes() + { + registerVillagerType(alps, VillagerType.SNOW); + registerVillagerType(alps_foothills, VillagerType.SNOW); + registerVillagerType(bamboo_blossom_grove, VillagerType.PLAINS); + registerVillagerType(bayou, VillagerType.SWAMP); + registerVillagerType(bayou_mangrove, VillagerType.SWAMP); + registerVillagerType(burnt_forest, VillagerType.TAIGA); + registerVillagerType(cherry_blossom_grove, VillagerType.PLAINS); + registerVillagerType(cold_desert, VillagerType.SNOW); + registerVillagerType(coniferous_forest, VillagerType.TAIGA); + registerVillagerType(coniferous_lakes, VillagerType.TAIGA); + registerVillagerType(dead_forest, VillagerType.TAIGA); + registerVillagerType(deep_bayou, VillagerType.SWAMP); + registerVillagerType(dense_marsh, VillagerType.SWAMP); + registerVillagerType(dense_woodland, VillagerType.PLAINS); + registerVillagerType(dryland, VillagerType.PLAINS); + registerVillagerType(dry_boneyard, VillagerType.PLAINS); + registerVillagerType(fir_clearing, VillagerType.TAIGA); + registerVillagerType(flower_meadow, VillagerType.TAIGA); + registerVillagerType(fungal_field, VillagerType.JUNGLE); + registerVillagerType(fungal_jungle, VillagerType.JUNGLE); + registerVillagerType(golden_prairie, VillagerType.PLAINS); + registerVillagerType(grassland, VillagerType.PLAINS); + registerVillagerType(grassland_clover_patch, VillagerType.PLAINS); + registerVillagerType(gravel_beach, VillagerType.PLAINS); + registerVillagerType(grove, VillagerType.PLAINS); + registerVillagerType(grove_clearing, VillagerType.PLAINS); + registerVillagerType(grove_lakes, VillagerType.PLAINS); + registerVillagerType(highland, VillagerType.PLAINS); + registerVillagerType(highland_crag, VillagerType.PLAINS); + registerVillagerType(highland_moor, VillagerType.PLAINS); + registerVillagerType(jade_cliffs, VillagerType.PLAINS); + registerVillagerType(lavender_field, VillagerType.PLAINS); + registerVillagerType(lavender_forest, VillagerType.PLAINS); + registerVillagerType(lush_desert, VillagerType.SAVANNA); + registerVillagerType(lush_savanna, VillagerType.SAVANNA); + registerVillagerType(marsh, VillagerType.SWAMP); + registerVillagerType(meadow, VillagerType.TAIGA); + registerVillagerType(meadow_forest, VillagerType.TAIGA); + registerVillagerType(muskeg, VillagerType.SNOW); + registerVillagerType(mystic_grove, VillagerType.PLAINS); + registerVillagerType(mystic_plains, VillagerType.PLAINS); + registerVillagerType(ominous_mire, VillagerType.SWAMP); + registerVillagerType(ominous_woods, VillagerType.SWAMP); + registerVillagerType(orchard, VillagerType.PLAINS); + registerVillagerType(origin_valley, VillagerType.PLAINS); + registerVillagerType(prairie, VillagerType.PLAINS); + registerVillagerType(rainbow_hills, VillagerType.PLAINS); + registerVillagerType(rainforest, VillagerType.JUNGLE); + registerVillagerType(rainforest_cliffs, VillagerType.JUNGLE); + registerVillagerType(rainforest_floodplain, VillagerType.JUNGLE); + registerVillagerType(redwood_forest, VillagerType.PLAINS); + registerVillagerType(redwood_forest_edge, VillagerType.PLAINS); + registerVillagerType(redwood_hills, VillagerType.PLAINS); + registerVillagerType(scrubland, VillagerType.SAVANNA); + registerVillagerType(seasonal_forest, VillagerType.PLAINS); + registerVillagerType(seasonal_orchard, VillagerType.PLAINS); + registerVillagerType(seasonal_pumpkin_patch, VillagerType.PLAINS); + registerVillagerType(shroomy_wetland, VillagerType.SWAMP); + registerVillagerType(shrubland, VillagerType.PLAINS); + registerVillagerType(shrubland_hills, VillagerType.PLAINS); + registerVillagerType(snowy_coniferous_forest, VillagerType.SNOW); + registerVillagerType(snowy_fir_clearing, VillagerType.SNOW); + registerVillagerType(snowy_maple_forest, VillagerType.SNOW); + registerVillagerType(tall_dead_forest, VillagerType.TAIGA); + registerVillagerType(tropic_beach, VillagerType.JUNGLE); + registerVillagerType(tropics, VillagerType.JUNGLE); + registerVillagerType(tundra, VillagerType.TAIGA); + registerVillagerType(tundra_basin, VillagerType.TAIGA); + registerVillagerType(tundra_bog, VillagerType.TAIGA); + registerVillagerType(volcanic_plains, VillagerType.PLAINS); + registerVillagerType(volcano, VillagerType.PLAINS); + registerVillagerType(wasteland, VillagerType.DESERT); + registerVillagerType(wetland, VillagerType.SWAMP); + registerVillagerType(wetland_forest, VillagerType.SWAMP); + registerVillagerType(wooded_scrubland, VillagerType.SAVANNA); + registerVillagerType(woodland, VillagerType.PLAINS); + } + + private static void registerBiomeToDictionary(RegistryKey key, Type...type) + { + if (BiomeUtil.exists(key)) + { + BiomeDictionary.addTypes(key, type); + } + } + + private static void registerVillagerType(RegistryKey key, VillagerType type) + { + if (BiomeUtil.exists(key)) + { + VillagerType.BY_BIOME.put(key, type); + } + } + + /* + * Biome registration helpers + */ + + public static void registerBiome(BiomeTemplate biome, String name) + { + BiomeRegistry.deferStandardRegistration(biome, name); + } + + public static void registerTechnicalBiome(BiomeTemplate biome, String name) + { + BiomeRegistry.deferTechnicalBiomeRegistration(biome, name); + } + + public static void registerSubBiome(RegistryKey parent, RegistryKey child, float rarity, int weight) + { + BiomeRegistry.deferSubBiomeRegistration(parent, child, weight, rarity); + } + + public static void registerIslandBiome(RegistryKey key, BOPClimates climate, int weight) + { + BiomeRegistry.deferIslandBiomeRegistration(key, climate, weight); + } + + private static void registerVanillaBiome(RegistryKey key, BOPClimates climate, int weight) + { + BiomeRegistry.deferVanillaBiomeRegistration(key, climate, weight); + } + + public static class WeightedSubBiome + { + public final RegistryKey biome; + public final float rarity; + public final int weight; + + public WeightedSubBiome(RegistryKey biome, float rarity, int weight) + { + this.biome = biome; + this.rarity = rarity; + this.weight = weight; + } + } +} diff --git a/src/main/java/biomesoplenty/init/ModBlocks.java b/src/main/java/biomesoplenty/init/ModBlocks.java new file mode 100644 index 0000000000..c819d468b9 --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModBlocks.java @@ -0,0 +1,524 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.init; + +import biomesoplenty.common.block.*; +import biomesoplenty.common.block.trees.*; +import biomesoplenty.common.util.inventory.ItemGroupBOP; +import net.minecraft.block.*; +import net.minecraft.block.material.Material; +import net.minecraft.block.material.MaterialColor; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.RenderTypeLookup; +import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; +import net.minecraft.potion.Effects; +import net.minecraft.util.SoundEvents; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.common.ToolType; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.loading.FMLEnvironment; +import net.minecraftforge.registries.ForgeRegistries; + +import static biomesoplenty.api.block.BOPBlocks.*; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class ModBlocks +{ + @SubscribeEvent + public static void registerBlocks(RegistryEvent.Register event) + { + //Terrain + white_sand = registerBlock(new SandBlockBOP(0xF3F1E4, AbstractBlock.Properties.of(Material.SAND, MaterialColor.QUARTZ).strength(0.5F).sound(SoundType.SAND).harvestLevel(0).harvestTool(ToolType.SHOVEL)), "white_sand"); + white_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.QUARTZ).strength(0.8F)), "white_sandstone"); + white_sandstone_stairs = registerBlock(new StairsBlock(white_sandstone.defaultBlockState(), Block.Properties.copy(white_sandstone)), "white_sandstone_stairs"); + white_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(white_sandstone)), "white_sandstone_slab"); + white_sandstone_wall = registerBlock(new WallBlock(Block.Properties.copy(white_sandstone)),"white_sandstone_wall"); + smooth_white_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.QUARTZ).strength(2.0F, 6.0F)), "smooth_white_sandstone"); + smooth_white_sandstone_stairs = registerBlock(new StairsBlock(white_sandstone.defaultBlockState(), Block.Properties.copy(smooth_white_sandstone)), "smooth_white_sandstone_stairs"); + smooth_white_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(smooth_white_sandstone)), "smooth_white_sandstone_slab"); + cut_white_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.QUARTZ).strength(0.8F)), "cut_white_sandstone"); + cut_white_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(cut_white_sandstone)), "cut_white_sandstone_slab"); + chiseled_white_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.QUARTZ).strength(0.8F)), "chiseled_white_sandstone"); + + orange_sand = registerBlock(new SandBlockBOP(0xCC9A61, AbstractBlock.Properties.of(Material.SAND, MaterialColor.COLOR_ORANGE).strength(0.5F).sound(SoundType.SAND).harvestLevel(0).harvestTool(ToolType.SHOVEL)), "orange_sand"); + orange_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_ORANGE).strength(0.8F)), "orange_sandstone"); + orange_sandstone_stairs = registerBlock(new StairsBlock(orange_sandstone.defaultBlockState(), Block.Properties.copy(orange_sandstone)), "orange_sandstone_stairs"); + orange_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(orange_sandstone)), "orange_sandstone_slab"); + orange_sandstone_wall = registerBlock(new WallBlock(Block.Properties.copy(orange_sandstone)),"orange_sandstone_wall"); + smooth_orange_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_ORANGE).strength(2.0F, 6.0F)), "smooth_orange_sandstone"); + smooth_orange_sandstone_stairs = registerBlock(new StairsBlock(orange_sandstone.defaultBlockState(), Block.Properties.copy(smooth_orange_sandstone)), "smooth_orange_sandstone_stairs"); + smooth_orange_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(smooth_orange_sandstone)), "smooth_orange_sandstone_slab"); + cut_orange_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_ORANGE).strength(0.8F)), "cut_orange_sandstone"); + cut_orange_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(cut_orange_sandstone)), "cut_orange_sandstone_slab"); + chiseled_orange_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_ORANGE).strength(0.8F)), "chiseled_orange_sandstone"); + + black_sand = registerBlock(new SandBlockBOP(0x2D2C2F, AbstractBlock.Properties.of(Material.SAND, MaterialColor.COLOR_BLACK).strength(0.5F).sound(SoundType.SAND).harvestLevel(0).harvestTool(ToolType.SHOVEL)), "black_sand"); + black_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_BLACK).strength(0.8F)), "black_sandstone"); + black_sandstone_stairs = registerBlock(new StairsBlock(black_sandstone.defaultBlockState(), Block.Properties.copy(black_sandstone)), "black_sandstone_stairs"); + black_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(black_sandstone)), "black_sandstone_slab"); + black_sandstone_wall = registerBlock(new WallBlock(Block.Properties.copy(black_sandstone)),"black_sandstone_wall"); + smooth_black_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_BLACK).strength(2.0F, 6.0F)), "smooth_black_sandstone"); + smooth_black_sandstone_stairs = registerBlock(new StairsBlock(black_sandstone.defaultBlockState(), Block.Properties.copy(smooth_black_sandstone)), "smooth_black_sandstone_stairs"); + smooth_black_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(smooth_black_sandstone)), "smooth_black_sandstone_slab"); + cut_black_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_BLACK).strength(0.8F)), "cut_black_sandstone"); + cut_black_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(cut_black_sandstone)), "cut_black_sandstone_slab"); + chiseled_black_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_BLACK).strength(0.8F)), "chiseled_black_sandstone"); + + mud = registerBlock(new MudBlock(AbstractBlock.Properties.of(Material.DIRT, MaterialColor.TERRACOTTA_BROWN).strength(0.6F).harvestLevel(0).harvestTool(ToolType.SHOVEL).sound(new SoundType(1.0F, 0.5F, SoundEvents.SLIME_BLOCK_BREAK, SoundEvents.SLIME_BLOCK_STEP, SoundEvents.SLIME_BLOCK_PLACE, SoundEvents.SLIME_BLOCK_HIT, SoundEvents.SLIME_BLOCK_FALL))), "mud"); + mud_bricks = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.TERRACOTTA_BROWN).strength(1.0F)), "mud_bricks"); + mud_brick_stairs = registerBlock(new StairsBlock(mud_bricks.defaultBlockState(), Block.Properties.copy(mud_bricks)), "mud_brick_stairs"); + mud_brick_slab = registerBlock(new SlabBlock(Block.Properties.copy(mud_bricks)), "mud_brick_slab"); + mud_brick_wall = registerBlock(new WallBlock(Block.Properties.copy(mud_bricks)),"mud_brick_wall"); + + origin_grass_block = registerBlock(new GrassBlock(AbstractBlock.Properties.of(Material.GRASS).randomTicks().strength(0.6F).sound(SoundType.GRASS).harvestTool(ToolType.SHOVEL)), "origin_grass_block"); + dried_salt = registerBlock(new DriedSaltBlock(AbstractBlock.Properties.of(Material.STONE, MaterialColor.WOOD).strength(1.0F).harvestLevel(0).harvestTool(ToolType.PICKAXE).sound(new SoundType(1.0F, 0.5F, SoundEvents.GRAVEL_BREAK, SoundEvents.GRAVEL_STEP, SoundEvents.GRAVEL_PLACE, SoundEvents.GRAVEL_HIT, SoundEvents.GRAVEL_FALL))), "dried_salt"); + flesh = registerBlock(new FleshBlock(AbstractBlock.Properties.of(Material.SPONGE, MaterialColor.TERRACOTTA_RED).strength(0.4F).harvestLevel(0).harvestTool(ToolType.AXE).sound(new SoundType(1.0F, 0.5F, SoundEvents.CORAL_BLOCK_BREAK, SoundEvents.CORAL_BLOCK_STEP, SoundEvents.CORAL_BLOCK_PLACE, SoundEvents.CORAL_BLOCK_HIT, SoundEvents.CORAL_BLOCK_FALL))), "flesh"); + + nether_crystal_block = registerBlock(new Block(AbstractBlock.Properties.of(Material.GLASS, MaterialColor.CRIMSON_STEM).strength(0.4F).harvestLevel(0).harvestTool(ToolType.PICKAXE).sound(new SoundType(1.0F, 0.75F, SoundEvents.GLASS_BREAK, SoundEvents.GLASS_STEP, SoundEvents.GLASS_PLACE, SoundEvents.GLASS_HIT, SoundEvents.GLASS_FALL)).lightLevel((state) -> 10)), "nether_crystal_block"); + nether_crystal = registerBlock(new NetherCrystalBlock(AbstractBlock.Properties.of(Material.GLASS, MaterialColor.CRIMSON_STEM).noCollission().strength(0.3F).harvestLevel(0).harvestTool(ToolType.PICKAXE).sound(new SoundType(1.0F, 0.75F, SoundEvents.GLASS_BREAK, SoundEvents.GLASS_STEP, SoundEvents.GLASS_PLACE, SoundEvents.GLASS_HIT, SoundEvents.GLASS_FALL)).lightLevel((state) -> 8)), "nether_crystal"); + + toadstool_block = registerBlock(new HugeMushroomBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_ORANGE).strength(0.2F).sound(SoundType.WOOD)), "toadstool_block"); + glowshroom_block = registerBlock(new HugeMushroomBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.DIAMOND).strength(0.2F).sound(SoundType.WOOD).lightLevel((state) -> 10)), "glowshroom_block"); + + //Trees + origin_sapling = registerBlock(new SaplingBlockBOP(new OriginTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "origin_sapling"); + origin_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.EMERALD).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "origin_leaves"); + flowering_oak_sapling = registerBlock(new SaplingBlockBOP(new FloweringOakTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "flowering_oak_sapling"); + flowering_oak_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "flowering_oak_leaves"); + rainbow_birch_sapling = registerBlock(new SaplingBlockBOP(new RainbowBirchTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "rainbow_birch_sapling"); + rainbow_birch_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "rainbow_birch_leaves"); + yellow_autumn_sapling = registerBlock(new SaplingBlockBOP(new YellowAutumnTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "yellow_autumn_sapling"); + yellow_autumn_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.TERRACOTTA_YELLOW).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "yellow_autumn_leaves"); + orange_autumn_sapling = registerBlock(new SaplingBlockBOP(new OrangeAutumnTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "orange_autumn_sapling"); + orange_autumn_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.TERRACOTTA_ORANGE).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "orange_autumn_leaves"); + maple_sapling = registerBlock(new SaplingBlockBOP(new MapleTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "maple_sapling"); + maple_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.COLOR_RED).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "maple_leaves"); + + fir_sapling = registerBlock(new SaplingBlockBOP(new FirTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "fir_sapling"); + fir_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "fir_leaves"); + fir_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_WHITE, MaterialColor.TERRACOTTA_LIGHT_GRAY), "fir_log"); + fir_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(2.0F).sound(SoundType.WOOD)), "fir_wood"); + stripped_fir_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_WHITE, MaterialColor.TERRACOTTA_WHITE), "stripped_fir_log"); + stripped_fir_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(2.0F).sound(SoundType.WOOD)), "stripped_fir_wood"); + fir_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "fir_planks"); + fir_stairs = registerBlock(new StairsBlock(fir_planks.defaultBlockState(), Block.Properties.copy(fir_planks)), "fir_stairs"); + fir_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "fir_slab"); + fir_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, fir_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "fir_fence"); + fir_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, fir_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "fir_fence_gate"); + fir_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, fir_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "fir_door"); + fir_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "fir_trapdoor"); + fir_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, fir_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "fir_pressure_plate"); + fir_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "fir_button"); + + redwood_sapling = registerBlock(new SaplingBlockBOP(new RedwoodTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "redwood_sapling"); + redwood_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "redwood_leaves"); + redwood_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_ORANGE, MaterialColor.TERRACOTTA_ORANGE), "redwood_log"); + redwood_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_ORANGE).strength(2.0F).sound(SoundType.WOOD)), "redwood_wood"); + stripped_redwood_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_ORANGE, MaterialColor.TERRACOTTA_ORANGE), "stripped_redwood_log"); + stripped_redwood_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_ORANGE).strength(2.0F).sound(SoundType.WOOD)), "stripped_redwood_wood"); + redwood_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_ORANGE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "redwood_planks"); + redwood_stairs = registerBlock(new StairsBlock(redwood_planks.defaultBlockState(), Block.Properties.copy(redwood_planks)), "redwood_stairs"); + redwood_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_ORANGE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "redwood_slab"); + redwood_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, redwood_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "redwood_fence"); + redwood_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, redwood_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "redwood_fence_gate"); + redwood_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, redwood_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "redwood_door"); + redwood_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_ORANGE).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "redwood_trapdoor"); + redwood_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, redwood_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "redwood_pressure_plate"); + redwood_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "redwood_button"); + + white_cherry_sapling = registerBlock(new SaplingBlockBOP(new WhiteCherryTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "white_cherry_sapling"); + white_cherry_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.SNOW).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "white_cherry_leaves"); + pink_cherry_sapling = registerBlock(new SaplingBlockBOP(new PinkCherryTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "pink_cherry_sapling"); + pink_cherry_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.COLOR_PINK).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "pink_cherry_leaves"); + cherry_log = registerBlock(Blocks.log(MaterialColor.COLOR_RED, MaterialColor.TERRACOTTA_RED), "cherry_log"); + cherry_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_RED).strength(2.0F).sound(SoundType.WOOD)), "cherry_wood"); + stripped_cherry_log = registerBlock(Blocks.log(MaterialColor.COLOR_RED, MaterialColor.COLOR_RED), "stripped_cherry_log"); + stripped_cherry_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_RED).strength(2.0F).sound(SoundType.WOOD)), "stripped_cherry_wood"); + cherry_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_RED).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "cherry_planks"); + cherry_stairs = registerBlock(new StairsBlock(cherry_planks.defaultBlockState(), Block.Properties.copy(cherry_planks)), "cherry_stairs"); + cherry_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_RED).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "cherry_slab"); + cherry_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, cherry_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "cherry_fence"); + cherry_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, cherry_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "cherry_fence_gate"); + cherry_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, cherry_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "cherry_door"); + cherry_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_RED).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "cherry_trapdoor"); + cherry_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, cherry_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "cherry_pressure_plate"); + cherry_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "cherry_button"); + + mahogany_sapling = registerBlock(new SaplingBlockBOP(new MahoganyTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "mahogany_sapling"); + mahogany_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "mahogany_leaves"); + mahogany_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_PINK, MaterialColor.DIRT), "mahogany_log"); + mahogany_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_PINK).strength(2.0F).sound(SoundType.WOOD)), "mahogany_wood"); + stripped_mahogany_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_PINK, MaterialColor.TERRACOTTA_PINK), "stripped_mahogany_log"); + stripped_mahogany_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_PINK).strength(2.0F).sound(SoundType.WOOD)), "stripped_mahogany_wood"); + mahogany_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_PINK).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "mahogany_planks"); + mahogany_stairs = registerBlock(new StairsBlock(mahogany_planks.defaultBlockState(), Block.Properties.copy(mahogany_planks)), "mahogany_stairs"); + mahogany_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_PINK).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "mahogany_slab"); + mahogany_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, mahogany_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "mahogany_fence"); + mahogany_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, mahogany_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "mahogany_fence_gate"); + mahogany_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, mahogany_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "mahogany_door"); + mahogany_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_PINK).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "mahogany_trapdoor"); + mahogany_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, mahogany_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "mahogany_pressure_plate"); + mahogany_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "mahogany_button"); + + jacaranda_sapling = registerBlock(new SaplingBlockBOP(new JacarandaTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "jacaranda_sapling"); + jacaranda_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.COLOR_PURPLE).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "jacaranda_leaves"); + jacaranda_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_WHITE, MaterialColor.TERRACOTTA_LIGHT_GRAY), "jacaranda_log"); + jacaranda_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(2.0F).sound(SoundType.WOOD)), "jacaranda_wood"); + stripped_jacaranda_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_WHITE, MaterialColor.TERRACOTTA_WHITE), "stripped_jacaranda_log"); + stripped_jacaranda_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(2.0F).sound(SoundType.WOOD)), "stripped_jacaranda_wood"); + jacaranda_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "jacaranda_planks"); + jacaranda_stairs = registerBlock(new StairsBlock(jacaranda_planks.defaultBlockState(), Block.Properties.copy(jacaranda_planks)), "jacaranda_stairs"); + jacaranda_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "jacaranda_slab"); + jacaranda_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, jacaranda_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "jacaranda_fence"); + jacaranda_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, jacaranda_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "jacaranda_fence_gate"); + jacaranda_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, jacaranda_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "jacaranda_door"); + jacaranda_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "jacaranda_trapdoor"); + jacaranda_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, jacaranda_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "jacaranda_pressure_plate"); + jacaranda_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "jacaranda_button"); + + palm_sapling = registerBlock(new SaplingBlockBOP(new PalmTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "palm_sapling"); + palm_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "palm_leaves"); + palm_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_YELLOW, MaterialColor.PODZOL), "palm_log"); + palm_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_YELLOW).strength(2.0F).sound(SoundType.WOOD)), "palm_wood"); + stripped_palm_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_YELLOW, MaterialColor.TERRACOTTA_YELLOW), "stripped_palm_log"); + stripped_palm_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_YELLOW).strength(2.0F).sound(SoundType.WOOD)), "stripped_palm_wood"); + palm_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_YELLOW).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "palm_planks"); + palm_stairs = registerBlock(new StairsBlock(palm_planks.defaultBlockState(), Block.Properties.copy(palm_planks)), "palm_stairs"); + palm_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_YELLOW).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "palm_slab"); + palm_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, palm_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "palm_fence"); + palm_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, palm_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "palm_fence_gate"); + palm_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, palm_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "palm_door"); + palm_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_YELLOW).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "palm_trapdoor"); + palm_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, palm_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "palm_pressure_plate"); + palm_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "palm_button"); + + willow_sapling = registerBlock(new SaplingBlockBOP(new WillowTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "willow_sapling"); + willow_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "willow_leaves"); + willow_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_LIGHT_GREEN, MaterialColor.TERRACOTTA_LIGHT_GREEN), "willow_log"); + willow_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_LIGHT_GREEN).strength(2.0F).sound(SoundType.WOOD)), "willow_wood"); + stripped_willow_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_LIGHT_GREEN, MaterialColor.TERRACOTTA_LIGHT_GREEN), "stripped_willow_log"); + stripped_willow_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_LIGHT_GREEN).strength(2.0F).sound(SoundType.WOOD)), "stripped_willow_wood"); + willow_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_LIGHT_GREEN).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "willow_planks"); + willow_stairs = registerBlock(new StairsBlock(willow_planks.defaultBlockState(), Block.Properties.copy(willow_planks)), "willow_stairs"); + willow_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_LIGHT_GREEN).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "willow_slab"); + willow_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, willow_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "willow_fence"); + willow_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, willow_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "willow_fence_gate"); + willow_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, willow_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "willow_door"); + willow_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_LIGHT_GREEN).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "willow_trapdoor"); + willow_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, willow_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "willow_pressure_plate"); + willow_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "willow_button"); + + dead_sapling = registerBlock(new SaplingBlockBOP(new DeadTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "dead_sapling"); + dead_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.WOOD).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "dead_leaves"); + dead_log = registerBlock(Blocks.log(MaterialColor.STONE, MaterialColor.COLOR_GRAY), "dead_log"); + dead_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.STONE).strength(2.0F).sound(SoundType.WOOD)), "dead_wood"); + stripped_dead_log = registerBlock(Blocks.log(MaterialColor.STONE, MaterialColor.STONE), "stripped_dead_log"); + stripped_dead_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.STONE).strength(2.0F).sound(SoundType.WOOD)), "stripped_dead_wood"); + dead_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.STONE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "dead_planks"); + dead_stairs = registerBlock(new StairsBlock(dead_planks.defaultBlockState(), Block.Properties.copy(dead_planks)), "dead_stairs"); + dead_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.STONE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "dead_slab"); + dead_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, dead_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "dead_fence"); + dead_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, dead_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "dead_fence_gate"); + dead_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, dead_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "dead_door"); + dead_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.STONE).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "dead_trapdoor"); + dead_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, dead_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "dead_pressure_plate"); + dead_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "dead_button"); + + magic_sapling = registerBlock(new SaplingBlockBOP(new MagicTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "magic_sapling"); + magic_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.COLOR_CYAN).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "magic_leaves"); + magic_log = registerBlock(Blocks.log(MaterialColor.COLOR_BLUE, MaterialColor.TERRACOTTA_LIGHT_BLUE), "magic_log"); + magic_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_BLUE).strength(2.0F).sound(SoundType.WOOD)), "magic_wood"); + stripped_magic_log = registerBlock(Blocks.log(MaterialColor.COLOR_BLUE, MaterialColor.COLOR_BLUE), "stripped_magic_log"); + stripped_magic_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_BLUE).strength(2.0F).sound(SoundType.WOOD)), "stripped_magic_wood"); + magic_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_BLUE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "magic_planks"); + magic_stairs = registerBlock(new StairsBlock(magic_planks.defaultBlockState(), Block.Properties.copy(magic_planks)), "magic_stairs"); + magic_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_BLUE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "magic_slab"); + magic_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, magic_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "magic_fence"); + magic_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, magic_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "magic_fence_gate"); + magic_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, magic_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "magic_door"); + magic_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_BLUE).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "magic_trapdoor"); + magic_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, magic_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "magic_pressure_plate"); + magic_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "magic_button"); + + umbran_sapling = registerBlock(new SaplingBlockBOP(new UmbranTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "umbran_sapling"); + umbran_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.TERRACOTTA_BLUE).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "umbran_leaves"); + umbran_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_BLUE, MaterialColor.TERRACOTTA_BLUE), "umbran_log"); + umbran_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_BLUE).strength(2.0F).sound(SoundType.WOOD)), "umbran_wood"); + stripped_umbran_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_BLUE, MaterialColor.TERRACOTTA_BLUE), "stripped_umbran_log"); + stripped_umbran_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_BLUE).strength(2.0F).sound(SoundType.WOOD)), "stripped_umbran_wood"); + umbran_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_BLUE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "umbran_planks"); + umbran_stairs = registerBlock(new StairsBlock(umbran_planks.defaultBlockState(), Block.Properties.copy(umbran_planks)), "umbran_stairs"); + umbran_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_BLUE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "umbran_slab"); + umbran_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, umbran_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "umbran_fence"); + umbran_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, umbran_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "umbran_fence_gate"); + umbran_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, umbran_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "umbran_door"); + umbran_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_BLUE).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "umbran_trapdoor"); + umbran_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, umbran_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "umbran_pressure_plate"); + umbran_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "umbran_button"); + + hellbark_sapling = registerBlock(new SaplingBlockBOP(new HellbarkTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "hellbark_sapling"); + hellbark_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.TERRACOTTA_PURPLE).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "hellbark_leaves"); + hellbark_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_GRAY, MaterialColor.COLOR_LIGHT_GRAY), "hellbark_log"); + hellbark_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_GRAY).strength(2.0F).sound(SoundType.WOOD)), "hellbark_wood"); + stripped_hellbark_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_GRAY, MaterialColor.TERRACOTTA_GRAY), "stripped_hellbark_log"); + stripped_hellbark_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_GRAY).strength(2.0F).sound(SoundType.WOOD)), "stripped_hellbark_wood"); + hellbark_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_GRAY).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "hellbark_planks"); + hellbark_stairs = registerBlock(new StairsBlock(hellbark_planks.defaultBlockState(), Block.Properties.copy(hellbark_planks)), "hellbark_stairs"); + hellbark_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_GRAY).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "hellbark_slab"); + hellbark_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, hellbark_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "hellbark_fence"); + hellbark_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, hellbark_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "hellbark_fence_gate"); + hellbark_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, hellbark_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "hellbark_door"); + hellbark_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_GRAY).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "hellbark_trapdoor"); + hellbark_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, hellbark_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "hellbark_pressure_plate"); + hellbark_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "hellbark_button"); + + //Flowers + rose = registerBlock(new FlowerBlockBOP(Effects.MOVEMENT_SPEED, 7, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "rose"); + violet = registerBlock(new FlowerBlockBOP(Effects.CONFUSION, 10, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "violet"); + lavender = registerBlock(new FlowerBlockBOP(Effects.HEALTH_BOOST, 5, AbstractBlock.Properties.of(Material.PLANT, MaterialColor.COLOR_MAGENTA).noCollission().instabreak().sound(SoundType.GRASS)), "lavender"); + wildflower = registerBlock(new FlowerBlockBOP(Effects.HUNGER, 10, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "wildflower"); + orange_cosmos = registerBlock(new FlowerBlockBOP(Effects.ABSORPTION, 7, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "orange_cosmos"); + pink_daffodil = registerBlock(new FlowerBlockBOP(Effects.INVISIBILITY, 7, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "pink_daffodil"); + pink_hibiscus = registerBlock(new FlowerBlockBOP(Effects.REGENERATION, 5, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "pink_hibiscus"); + glowflower = registerBlock(new FlowerBlockBOP(Effects.GLOWING, 10, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS).lightLevel((state) -> 9)), "glowflower"); + wilted_lily = registerBlock(new FlowerBlockBOP(Effects.UNLUCK, 5, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "wilted_lily"); + burning_blossom = registerBlock(new FlowerBlockBOP(Effects.FIRE_RESISTANCE, 7, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS).lightLevel((state) -> 7)), "burning_blossom"); + + //Tall Flowers + blue_hydrangea = registerBlock(new TallFlowerBlockBOP(AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "blue_hydrangea"); + goldenrod = registerBlock(new TallFlowerBlockBOP(AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "goldenrod"); + + //Vines + willow_vine = registerBlock(new VineBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).randomTicks().noCollission().strength(0.2F).sound(SoundType.GRASS)), "willow_vine"); + spanish_moss = registerBlock(new SpanishMossBottomBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).randomTicks().noCollission().instabreak().sound(SoundType.GRASS)), "spanish_moss"); + spanish_moss_plant = registerBlockNoGroup(new SpanishMossBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "spanish_moss_plant"); + + //Plants + sprout = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "sprout"); + bush = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "bush"); + clover = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "clover"); + huge_clover_petal = registerBlock(new HugeCloverPetalBlock(AbstractBlock.Properties.of(Material.PLANT).strength(0.2F).sound(SoundType.GRASS)), "huge_clover_petal"); + dune_grass = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT, MaterialColor.TERRACOTTA_LIGHT_GREEN).noCollission().instabreak().sound(SoundType.GRASS)), "dune_grass"); + desert_grass = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT, MaterialColor.TERRACOTTA_ORANGE).noCollission().instabreak().sound(SoundType.GRASS)), "desert_grass"); + dead_grass = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT, MaterialColor.WOOD).noCollission().instabreak().sound(SoundType.GRASS)), "dead_grass"); + + //Tall Plants + cattail = registerBlock(new DoubleWatersidePlantBlock(AbstractBlock.Properties.of(Material.PLANT, MaterialColor.DIRT).noCollission().instabreak().sound(SoundType.GRASS)), "cattail"); + barley = registerBlock(new DoublePlantBlockBOP(AbstractBlock.Properties.of(Material.PLANT, MaterialColor.TERRACOTTA_YELLOW).noCollission().instabreak().sound(SoundType.GRASS)), "barley"); + reed = registerBlock(new DoubleWaterPlantBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_WATER_PLANT, MaterialColor.DIRT).noCollission().instabreak().sound(SoundType.GRASS)), "reed"); + watergrass = registerBlock(new DoubleWaterPlantBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_WATER_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "watergrass"); + mangrove_root = registerBlock(new DoubleWaterPlantBlock(AbstractBlock.Properties.of(Material.WATER_PLANT, MaterialColor.TERRACOTTA_WHITE).noCollission().strength(1.0F, 1.5F).sound(SoundType.WOOD)), "mangrove_root"); + + dead_branch = registerBlock(new DeadBranchBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_GRAY).noCollission().instabreak().sound(SoundType.WOOD)), "dead_branch"); + bramble = registerBlock(new BrambleBlock(AbstractBlock.Properties.of(Material.PLANT, MaterialColor.NETHER).strength(0.4F).harvestLevel(0).harvestTool(ToolType.AXE).sound(SoundType.WOOD)), "bramble"); + toadstool = registerBlock(new MushroomBlockBOP(AbstractBlock.Properties.of(Material.PLANT, MaterialColor.COLOR_ORANGE).noCollission().instabreak().sound(SoundType.GRASS)), "toadstool"); + glowshroom = registerBlock(new MushroomBlockBOP(AbstractBlock.Properties.of(Material.PLANT, MaterialColor.DIAMOND).noCollission().instabreak().sound(SoundType.GRASS).lightLevel((state) -> 6)), "glowshroom"); + + //Potted Plants + potted_origin_sapling = registerBlockNoGroup(new FlowerPotBlock(origin_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_origin_sapling"); + potted_flowering_oak_sapling = registerBlockNoGroup(new FlowerPotBlock(flowering_oak_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_flowering_oak_sapling"); + potted_rainbow_birch_sapling = registerBlockNoGroup(new FlowerPotBlock(rainbow_birch_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_rainbow_birch_sapling"); + potted_yellow_autumn_sapling = registerBlockNoGroup(new FlowerPotBlock(yellow_autumn_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_yellow_autumn_sapling"); + potted_orange_autumn_sapling = registerBlockNoGroup(new FlowerPotBlock(orange_autumn_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_orange_autumn_sapling"); + potted_maple_sapling = registerBlockNoGroup(new FlowerPotBlock(maple_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_maple_sapling"); + potted_fir_sapling = registerBlockNoGroup(new FlowerPotBlock(fir_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_fir_sapling"); + potted_redwood_sapling = registerBlockNoGroup(new FlowerPotBlock(redwood_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_redwood_sapling"); + potted_white_cherry_sapling = registerBlockNoGroup(new FlowerPotBlock(white_cherry_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_white_cherry_sapling"); + potted_pink_cherry_sapling = registerBlockNoGroup(new FlowerPotBlock(pink_cherry_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_pink_cherry_sapling"); + potted_mahogany_sapling = registerBlockNoGroup(new FlowerPotBlock(mahogany_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_mahogany_sapling"); + potted_jacaranda_sapling = registerBlockNoGroup(new FlowerPotBlock(jacaranda_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_jacaranda_sapling"); + potted_palm_sapling = registerBlockNoGroup(new FlowerPotBlock(palm_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_palm_sapling"); + potted_willow_sapling = registerBlockNoGroup(new FlowerPotBlock(willow_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_willow_sapling"); + potted_dead_sapling = registerBlockNoGroup(new FlowerPotBlock(dead_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_dead_sapling"); + potted_magic_sapling = registerBlockNoGroup(new FlowerPotBlock(magic_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_magic_sapling"); + potted_umbran_sapling = registerBlockNoGroup(new FlowerPotBlock(umbran_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_umbran_sapling"); + potted_hellbark_sapling = registerBlockNoGroup(new FlowerPotBlock(hellbark_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_hellbark_sapling"); + potted_rose = registerBlockNoGroup(new FlowerPotBlock(rose, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_rose"); + potted_violet = registerBlockNoGroup(new FlowerPotBlock(violet, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_violet"); + potted_lavender = registerBlockNoGroup(new FlowerPotBlock(lavender, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_lavender"); + potted_wildflower = registerBlockNoGroup(new FlowerPotBlock(wildflower, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_wildflower"); + potted_orange_cosmos = registerBlockNoGroup(new FlowerPotBlock(orange_cosmos, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_orange_cosmos"); + potted_pink_daffodil = registerBlockNoGroup(new FlowerPotBlock(pink_daffodil, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_pink_daffodil"); + potted_pink_hibiscus = registerBlockNoGroup(new FlowerPotBlock(pink_hibiscus, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_pink_hibiscus"); + potted_glowflower = registerBlockNoGroup(new FlowerPotBlock(glowflower, AbstractBlock.Properties.of(Material.DECORATION).instabreak().lightLevel((state) -> 9)), "potted_glowflower"); + potted_wilted_lily = registerBlockNoGroup(new FlowerPotBlock(wilted_lily, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_wilted_lily"); + potted_burning_blossom = registerBlockNoGroup(new FlowerPotBlock(burning_blossom, AbstractBlock.Properties.of(Material.DECORATION).instabreak().lightLevel((state) -> 7)), "potted_burning_blossom"); + potted_sprout = registerBlockNoGroup(new FlowerPotBlock(sprout, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_sprout"); + potted_clover = registerBlockNoGroup(new FlowerPotBlock(clover, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_clover"); + potted_toadstool = registerBlockNoGroup(new FlowerPotBlock(toadstool, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_toadstool"); + potted_glowshroom = registerBlockNoGroup(new FlowerPotBlock(glowshroom, AbstractBlock.Properties.of(Material.DECORATION).instabreak().lightLevel((state) -> 6)), "potted_glowshroom"); + + if (FMLEnvironment.dist == Dist.CLIENT) + { + RenderType transparentRenderType = RenderType.cutoutMipped(); + RenderType cutoutRenderType = RenderType.cutout(); + RenderType translucentRenderType = RenderType.translucent(); + + RenderTypeLookup.setRenderLayer(origin_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(flowering_oak_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(rainbow_birch_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(yellow_autumn_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(orange_autumn_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(maple_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(fir_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(redwood_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(white_cherry_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(pink_cherry_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(mahogany_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(jacaranda_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(palm_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(willow_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(dead_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(magic_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(umbran_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(hellbark_leaves, transparentRenderType); + + RenderTypeLookup.setRenderLayer(nether_crystal, cutoutRenderType); + RenderTypeLookup.setRenderLayer(origin_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(flowering_oak_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(rainbow_birch_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(yellow_autumn_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(orange_autumn_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(maple_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(fir_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(redwood_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(white_cherry_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(pink_cherry_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(mahogany_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(jacaranda_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(palm_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(willow_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(dead_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(magic_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(umbran_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(hellbark_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(rose, cutoutRenderType); + RenderTypeLookup.setRenderLayer(violet, cutoutRenderType); + RenderTypeLookup.setRenderLayer(lavender, cutoutRenderType); + RenderTypeLookup.setRenderLayer(wildflower, cutoutRenderType); + RenderTypeLookup.setRenderLayer(orange_cosmos, cutoutRenderType); + RenderTypeLookup.setRenderLayer(pink_daffodil, cutoutRenderType); + RenderTypeLookup.setRenderLayer(pink_hibiscus, cutoutRenderType); + RenderTypeLookup.setRenderLayer(glowflower, cutoutRenderType); + RenderTypeLookup.setRenderLayer(wilted_lily, cutoutRenderType); + RenderTypeLookup.setRenderLayer(burning_blossom, cutoutRenderType); + RenderTypeLookup.setRenderLayer(blue_hydrangea, cutoutRenderType); + RenderTypeLookup.setRenderLayer(goldenrod, cutoutRenderType); + RenderTypeLookup.setRenderLayer(willow_vine, cutoutRenderType); + RenderTypeLookup.setRenderLayer(spanish_moss, cutoutRenderType); + RenderTypeLookup.setRenderLayer(spanish_moss_plant, cutoutRenderType); + RenderTypeLookup.setRenderLayer(sprout, cutoutRenderType); + RenderTypeLookup.setRenderLayer(bush, cutoutRenderType); + RenderTypeLookup.setRenderLayer(clover, cutoutRenderType); + RenderTypeLookup.setRenderLayer(huge_clover_petal, cutoutRenderType); + RenderTypeLookup.setRenderLayer(dune_grass, cutoutRenderType); + RenderTypeLookup.setRenderLayer(desert_grass, cutoutRenderType); + RenderTypeLookup.setRenderLayer(dead_grass, cutoutRenderType); + RenderTypeLookup.setRenderLayer(cattail, cutoutRenderType); + RenderTypeLookup.setRenderLayer(barley, cutoutRenderType); + RenderTypeLookup.setRenderLayer(reed, cutoutRenderType); + RenderTypeLookup.setRenderLayer(watergrass, cutoutRenderType); + RenderTypeLookup.setRenderLayer(mangrove_root, cutoutRenderType); + RenderTypeLookup.setRenderLayer(dead_branch, cutoutRenderType); + RenderTypeLookup.setRenderLayer(bramble, cutoutRenderType); + RenderTypeLookup.setRenderLayer(toadstool, cutoutRenderType); + RenderTypeLookup.setRenderLayer(glowshroom, cutoutRenderType); + + RenderTypeLookup.setRenderLayer(potted_origin_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_flowering_oak_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_rainbow_birch_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_yellow_autumn_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_orange_autumn_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_maple_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_fir_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_redwood_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_white_cherry_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_pink_cherry_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_mahogany_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_jacaranda_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_palm_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_willow_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_dead_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_magic_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_umbran_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_hellbark_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_rose, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_violet, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_lavender, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_wildflower, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_orange_cosmos, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_pink_daffodil, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_pink_hibiscus, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_glowflower, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_wilted_lily, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_burning_blossom, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_sprout, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_clover, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_toadstool, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_glowshroom, cutoutRenderType); + + RenderTypeLookup.setRenderLayer(fir_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(redwood_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(cherry_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(mahogany_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(jacaranda_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(palm_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(willow_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(dead_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(magic_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(umbran_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(hellbark_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(fir_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(redwood_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(cherry_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(mahogany_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(jacaranda_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(palm_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(willow_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(dead_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(magic_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(umbran_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(hellbark_trapdoor, cutoutRenderType); + } + } + + public static Block registerBlock(Block block, String name) + { + BlockItem itemBlock = new BlockItem(block, new Item.Properties().tab(ItemGroupBOP.instance)); + block.setRegistryName(name); + itemBlock.setRegistryName(name); + ForgeRegistries.BLOCKS.register(block); + ForgeRegistries.ITEMS.register(itemBlock); + return block; + } + + public static Block registerBlockNoGroup(Block block, String name) + { + BlockItem itemBlock = new BlockItem(block, new Item.Properties().tab(null)); + block.setRegistryName(name); + itemBlock.setRegistryName(name); + ForgeRegistries.BLOCKS.register(block); + ForgeRegistries.ITEMS.register(itemBlock); + return block; + } + + public static Block registerBlock(Block block, BlockItem itemBlock, String name) { + block.setRegistryName(name); + ForgeRegistries.BLOCKS.register(block); + + if (itemBlock != null) { + itemBlock.setRegistryName(name); + ForgeRegistries.ITEMS.register(itemBlock); + } + + return block; + } +} diff --git a/src/main/java/biomesoplenty/init/ModCompatibility.java b/src/main/java/biomesoplenty/init/ModCompatibility.java new file mode 100644 index 0000000000..94d8d09478 --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModCompatibility.java @@ -0,0 +1,71 @@ +/******************************************************************************* + * Copyright 2014-2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.init; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.core.BiomesOPlenty; +import com.google.common.collect.Lists; +import net.minecraft.util.RegistryKey; +import net.minecraft.world.biome.Biome; +import net.minecraftforge.common.BiomeManager; +import net.minecraftforge.fml.common.ObfuscationReflectionHelper; + +import java.util.List; +import java.util.stream.Collectors; + +public class ModCompatibility +{ + public static void setup() + { + copyModBiomeWeights(); + } + + private static void copyModBiomeWeights() + { + for (BiomeManager.BiomeType type : BiomeManager.BiomeType.values()) + { + // Removes vanilla entries by checking if the biome namespace is not "minecraft" + // If a mod makes their biome with minecraft namespace, they need a bug report as that's a big no-no. + List moddedBiomesInType = BiomeManager.getBiomes(type).stream() + .filter(biomeEntry -> !biomeEntry.getKey().location().getNamespace().equals("minecraft")) + .collect(Collectors.toList()); + + // calls remapBiomeToBoP on each modded biome and its weight. + moddedBiomesInType.stream().forEach(biomeEntry -> remapBiomeToBoP(biomeEntry.getKey(), type, biomeEntry.weight)); + } + } + + // TODO: Make this more accurate, possibly analyze heights, temps, rainfall and/or biome dictionary tags + private static void remapBiomeToBoP(RegistryKey biome, BiomeManager.BiomeType type, int weight) + { + /* If any of our climates already have the biome (from a mod using our api), then skip this biome */ + for (BOPClimates climate : BOPClimates.values()) + { + List entries = Lists.newArrayList(); + entries.addAll(climate.getLandBiomes()); + entries.addAll(climate.getIslandBiomes()); + + for (BOPClimates.WeightedBiomeEntry entry : entries) + { + if (entry.biome == biome) + { + return; + } + } + } + + + for (BOPClimates climate : BOPClimates.values()) + { + if (climate.biomeType == type) + { + climate.addBiome(weight, biome); + } + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/init/ModConfig.java b/src/main/java/biomesoplenty/init/ModConfig.java new file mode 100644 index 0000000000..910c5a3faa --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModConfig.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.init; + +import biomesoplenty.common.world.BOPOverworldGenSettings; +import biomesoplenty.core.BiomesOPlenty; +import net.minecraftforge.common.ForgeConfigSpec; +import net.minecraftforge.fml.ModLoadingContext; +import net.minecraftforge.fml.loading.FMLPaths; + +import java.io.IOException; +import java.nio.file.FileAlreadyExistsException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +public class ModConfig +{ + public static class ClientConfig + { + public static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + public static final ForgeConfigSpec SPEC; + + public static final ForgeConfigSpec.BooleanValue useWorldType; + + static + { + BUILDER.comment("Client-related options."); + BUILDER.push("gui"); + useWorldType = BUILDER.comment("Select the Biomes O' Plenty world type by default.").define("use_world_type", true); + BUILDER.pop(); + + SPEC = BUILDER.build(); + } + } + + + public static class GenerationConfig + { + public static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + public static final ForgeConfigSpec SPEC; + + public static final ForgeConfigSpec.EnumValue biomeSize; + public static final ForgeConfigSpec.EnumValue riverSize; + public static final ForgeConfigSpec.EnumValue temperatureVariationScheme; + public static final ForgeConfigSpec.EnumValue rainfallVariationScheme; + public static final ForgeConfigSpec.BooleanValue enhanceVanillaBiomes; + public static final ForgeConfigSpec.BooleanValue useBopNether; + + static + { + BUILDER.comment("World generation related options."); + BUILDER.push("overworld"); + biomeSize = BUILDER.comment("The size of generated biomes.").defineEnum("biome_size", BOPOverworldGenSettings.BiomeSize.MEDIUM); + riverSize = BUILDER.comment("The size of generated rivers.").defineEnum("river_size", BOPOverworldGenSettings.RiverSize.MEDIUM); + temperatureVariationScheme = BUILDER.comment("Type of temperature zones to use during biome placement.").defineEnum("temperature_variation_scheme", BOPOverworldGenSettings.TemperatureVariationScheme.MEDIUM_ZONES); + rainfallVariationScheme = BUILDER.comment("Type of rainfall zones to use during biome placement.").defineEnum("rainfall_variation_scheme", BOPOverworldGenSettings.RainfallVariationScheme.MEDIUM_ZONES); + enhanceVanillaBiomes = BUILDER.comment("Enhance vanilla biomes by adding additional decoration.").define("enhance_vanilla_biomes", true); + useBopNether = BUILDER.comment("Enable nether generation from Biomes O' Plenty.").define("use_bop_nether", true); + BUILDER.pop(); + + SPEC = BUILDER.build(); + } + } + + public static void setup() + { + Path configPath = FMLPaths.CONFIGDIR.get(); + Path bopConfigPath = Paths.get(configPath.toAbsolutePath().toString(), "biomesoplenty"); + + // Create the config folder + try + { + Files.createDirectory(bopConfigPath); + } + catch (FileAlreadyExistsException e) + { + // Do nothing + } + catch (IOException e) + { + BiomesOPlenty.logger.error("Failed to create biomesoplenty config directory", e); + } + + ModLoadingContext.get().registerConfig(net.minecraftforge.fml.config.ModConfig.Type.COMMON, GenerationConfig.SPEC, "biomesoplenty/generation.toml"); + ModLoadingContext.get().registerConfig(net.minecraftforge.fml.config.ModConfig.Type.CLIENT, ClientConfig.SPEC, "biomesoplenty/client.toml"); + } +} diff --git a/src/main/java/biomesoplenty/init/ModEntities.java b/src/main/java/biomesoplenty/init/ModEntities.java new file mode 100644 index 0000000000..337f8edd5e --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModEntities.java @@ -0,0 +1,26 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.init; + +import biomesoplenty.common.entity.item.BoatEntityBOP; +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class ModEntities { + public static final EntityType boat = EntityType.Builder.of(BoatEntityBOP::new, EntityClassification.MISC).sized(1.375f, 0.5625f).setCustomClientFactory(BoatEntityBOP::new).clientTrackingRange(10).build(BiomesOPlenty.MOD_ID + ":boat"); + + @SubscribeEvent + public static void registerEntities(final RegistryEvent.Register> event) { + event.getRegistry().register(boat.setRegistryName("boat")); + } +} diff --git a/src/main/java/biomesoplenty/init/ModItems.java b/src/main/java/biomesoplenty/init/ModItems.java new file mode 100644 index 0000000000..8e877c993c --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModItems.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.init; + +import biomesoplenty.common.entity.item.BoatEntityBOP; +import biomesoplenty.common.item.BoatItemBOP; +import biomesoplenty.common.item.MusicDiscItemBOP; +import biomesoplenty.common.util.inventory.ItemGroupBOP; +import net.minecraft.item.Item; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.registries.ForgeRegistries; + +import static biomesoplenty.api.item.BOPItems.*; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class ModItems +{ + + @SubscribeEvent + public static void registerItems(RegistryEvent.Register event) + { + mud_ball = registerItem(new Item(new Item.Properties().tab(ItemGroupBOP.instance)), "mud_ball"); + mud_brick = registerItem(new Item(new Item.Properties().tab(ItemGroupBOP.instance)), "mud_brick"); + + music_disc_wanderer = registerItem(new MusicDiscItemBOP("music_disc.wanderer"), "music_disc_wanderer"); + + fir_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.FIR), "fir_boat"); + redwood_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.REDWOOD), "redwood_boat"); + cherry_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.CHERRY), "cherry_boat"); + mahogany_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.MAHOGANY), "mahogany_boat"); + jacaranda_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.JACARANDA), "jacaranda_boat"); + palm_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.PALM), "palm_boat"); + willow_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.WILLOW), "willow_boat"); + dead_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.DEAD), "dead_boat"); + magic_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.MAGIC), "magic_boat"); + umbran_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.UMBRAN), "umbran_boat"); + hellbark_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.HELLBARK), "hellbark_boat"); + + bop_icon = registerItem(new Item(new Item.Properties()), "bop_icon"); + } + + public static Item registerItem(Item item, String name) + { + item.setRegistryName(name); + ForgeRegistries.ITEMS.register(item); + return item; + } +} diff --git a/src/main/java/biomesoplenty/init/ModPaintings.java b/src/main/java/biomesoplenty/init/ModPaintings.java new file mode 100644 index 0000000000..d10ce125f2 --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModPaintings.java @@ -0,0 +1,34 @@ +package biomesoplenty.init; + +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.entity.item.PaintingType; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.registries.ForgeRegistries; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class ModPaintings +{ + public static final PaintingType FIRST_WORLD = new PaintingType(32, 32); + public static final PaintingType NETHER_WASP = new PaintingType(32, 32); + public static final PaintingType PROMISED_LAND = new PaintingType(64, 32); + public static final PaintingType COAST = new PaintingType(64, 64); + + @SubscribeEvent + public static void registerPaintingTypes(RegistryEvent.Register event) + { + registerPaintingType(FIRST_WORLD, "first_world"); + registerPaintingType(NETHER_WASP, "nether_wasp"); + registerPaintingType(PROMISED_LAND, "promised_land"); + registerPaintingType(COAST, "coast"); + } + + public static PaintingType registerPaintingType(PaintingType entry, String name) + { + entry.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, name)); + ForgeRegistries.PAINTING_TYPES.register(entry); + return entry; + } +} diff --git a/src/main/java/biomesoplenty/init/ModSounds.java b/src/main/java/biomesoplenty/init/ModSounds.java new file mode 100644 index 0000000000..b311bda639 --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModSounds.java @@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.init; + +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.SoundEvent; +import net.minecraft.util.SoundEvents; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.registries.ForgeRegistries; + +import static biomesoplenty.api.sound.BOPSounds.*; + + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class ModSounds +{ + @SubscribeEvent + public static void registerSounds(RegistryEvent.Register event) + { + music_disc_wanderer = registerSound("music_disc.wanderer"); + } + + private static SoundEvent registerSound(String soundName) + { + ResourceLocation location = new ResourceLocation(BiomesOPlenty.MOD_ID, soundName); + SoundEvent event = new SoundEvent(location); + event.setRegistryName(location); + ForgeRegistries.SOUND_EVENTS.register(event); + return event; + } +} diff --git a/src/main/java/biomesoplenty/init/ModVanillaCompat.java b/src/main/java/biomesoplenty/init/ModVanillaCompat.java new file mode 100644 index 0000000000..908e2f2840 --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModVanillaCompat.java @@ -0,0 +1,275 @@ +package biomesoplenty.init; + +import biomesoplenty.api.block.BOPBlocks; +import com.google.common.collect.Maps; +import net.minecraft.block.*; +import net.minecraft.item.AxeItem; +import net.minecraft.item.HoeItem; +import net.minecraft.item.ShovelItem; +import net.minecraft.util.IItemProvider; + +public class ModVanillaCompat +{ + public static void setup() + { + //Flammability + registerFlammable(BOPBlocks.origin_leaves, 30, 60); + registerFlammable(BOPBlocks.flowering_oak_leaves, 30, 60); + registerFlammable(BOPBlocks.yellow_autumn_leaves, 30, 60); + registerFlammable(BOPBlocks.orange_autumn_leaves, 30, 60); + registerFlammable(BOPBlocks.maple_leaves, 30, 60); + registerFlammable(BOPBlocks.fir_leaves, 30, 60); + registerFlammable(BOPBlocks.fir_log, 5, 5); + registerFlammable(BOPBlocks.fir_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_fir_log, 5, 5); + registerFlammable(BOPBlocks.stripped_fir_wood, 5, 5); + registerFlammable(BOPBlocks.fir_planks, 5, 20); + registerFlammable(BOPBlocks.fir_slab, 5, 20); + registerFlammable(BOPBlocks.fir_stairs, 5, 20); + registerFlammable(BOPBlocks.fir_fence, 5, 20); + registerFlammable(BOPBlocks.fir_fence_gate, 5, 20); + registerFlammable(BOPBlocks.redwood_leaves, 30, 60); + registerFlammable(BOPBlocks.redwood_log, 5, 5); + registerFlammable(BOPBlocks.redwood_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_redwood_log, 5, 5); + registerFlammable(BOPBlocks.stripped_redwood_wood, 5, 5); + registerFlammable(BOPBlocks.redwood_planks, 5, 20); + registerFlammable(BOPBlocks.redwood_slab, 5, 20); + registerFlammable(BOPBlocks.redwood_stairs, 5, 20); + registerFlammable(BOPBlocks.redwood_fence, 5, 20); + registerFlammable(BOPBlocks.redwood_fence_gate, 5, 20); + registerFlammable(BOPBlocks.white_cherry_leaves, 30, 60); + registerFlammable(BOPBlocks.pink_cherry_leaves, 30, 60); + registerFlammable(BOPBlocks.cherry_log, 5, 5); + registerFlammable(BOPBlocks.cherry_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_cherry_log, 5, 5); + registerFlammable(BOPBlocks.stripped_cherry_wood, 5, 5); + registerFlammable(BOPBlocks.cherry_planks, 5, 20); + registerFlammable(BOPBlocks.cherry_slab, 5, 20); + registerFlammable(BOPBlocks.cherry_stairs, 5, 20); + registerFlammable(BOPBlocks.cherry_fence, 5, 20); + registerFlammable(BOPBlocks.cherry_fence_gate, 5, 20); + registerFlammable(BOPBlocks.mahogany_leaves, 30, 60); + registerFlammable(BOPBlocks.mahogany_log, 5, 5); + registerFlammable(BOPBlocks.mahogany_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_mahogany_log, 5, 5); + registerFlammable(BOPBlocks.stripped_mahogany_wood, 5, 5); + registerFlammable(BOPBlocks.mahogany_planks, 5, 20); + registerFlammable(BOPBlocks.mahogany_slab, 5, 20); + registerFlammable(BOPBlocks.mahogany_stairs, 5, 20); + registerFlammable(BOPBlocks.mahogany_fence, 5, 20); + registerFlammable(BOPBlocks.mahogany_fence_gate, 5, 20); + registerFlammable(BOPBlocks.jacaranda_leaves, 30, 60); + registerFlammable(BOPBlocks.jacaranda_log, 5, 5); + registerFlammable(BOPBlocks.jacaranda_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_jacaranda_log, 5, 5); + registerFlammable(BOPBlocks.stripped_jacaranda_wood, 5, 5); + registerFlammable(BOPBlocks.jacaranda_planks, 5, 20); + registerFlammable(BOPBlocks.jacaranda_slab, 5, 20); + registerFlammable(BOPBlocks.jacaranda_stairs, 5, 20); + registerFlammable(BOPBlocks.jacaranda_fence, 5, 20); + registerFlammable(BOPBlocks.jacaranda_fence_gate, 5, 20); + registerFlammable(BOPBlocks.palm_leaves, 30, 60); + registerFlammable(BOPBlocks.palm_log, 5, 5); + registerFlammable(BOPBlocks.palm_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_palm_log, 5, 5); + registerFlammable(BOPBlocks.stripped_palm_wood, 5, 5); + registerFlammable(BOPBlocks.palm_planks, 5, 20); + registerFlammable(BOPBlocks.palm_slab, 5, 20); + registerFlammable(BOPBlocks.palm_stairs, 5, 20); + registerFlammable(BOPBlocks.palm_fence, 5, 20); + registerFlammable(BOPBlocks.palm_fence_gate, 5, 20); + registerFlammable(BOPBlocks.willow_leaves, 30, 60); + registerFlammable(BOPBlocks.willow_log, 5, 5); + registerFlammable(BOPBlocks.willow_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_willow_log, 5, 5); + registerFlammable(BOPBlocks.stripped_willow_wood, 5, 5); + registerFlammable(BOPBlocks.willow_planks, 5, 20); + registerFlammable(BOPBlocks.willow_slab, 5, 20); + registerFlammable(BOPBlocks.willow_stairs, 5, 20); + registerFlammable(BOPBlocks.willow_fence, 5, 20); + registerFlammable(BOPBlocks.willow_fence_gate, 5, 20); + registerFlammable(BOPBlocks.dead_leaves, 30, 60); + registerFlammable(BOPBlocks.dead_log, 5, 5); + registerFlammable(BOPBlocks.dead_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_dead_log, 5, 5); + registerFlammable(BOPBlocks.stripped_dead_wood, 5, 5); + registerFlammable(BOPBlocks.dead_planks, 5, 20); + registerFlammable(BOPBlocks.dead_slab, 5, 20); + registerFlammable(BOPBlocks.dead_stairs, 5, 20); + registerFlammable(BOPBlocks.dead_fence, 5, 20); + registerFlammable(BOPBlocks.dead_fence_gate, 5, 20); + registerFlammable(BOPBlocks.magic_leaves, 30, 60); + registerFlammable(BOPBlocks.magic_log, 5, 5); + registerFlammable(BOPBlocks.magic_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_magic_log, 5, 5); + registerFlammable(BOPBlocks.stripped_magic_wood, 5, 5); + registerFlammable(BOPBlocks.magic_planks, 5, 20); + registerFlammable(BOPBlocks.magic_slab, 5, 20); + registerFlammable(BOPBlocks.magic_stairs, 5, 20); + registerFlammable(BOPBlocks.magic_fence, 5, 20); + registerFlammable(BOPBlocks.magic_fence_gate, 5, 20); + registerFlammable(BOPBlocks.umbran_leaves, 30, 60); + registerFlammable(BOPBlocks.umbran_log, 5, 5); + registerFlammable(BOPBlocks.umbran_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_umbran_log, 5, 5); + registerFlammable(BOPBlocks.stripped_umbran_wood, 5, 5); + registerFlammable(BOPBlocks.umbran_planks, 5, 20); + registerFlammable(BOPBlocks.umbran_slab, 5, 20); + registerFlammable(BOPBlocks.umbran_stairs, 5, 20); + registerFlammable(BOPBlocks.umbran_fence, 5, 20); + registerFlammable(BOPBlocks.umbran_fence_gate, 5, 20); + registerFlammable(BOPBlocks.rose, 60, 100); + registerFlammable(BOPBlocks.violet, 60, 100); + registerFlammable(BOPBlocks.lavender, 60, 100); + registerFlammable(BOPBlocks.wildflower, 60, 100); + registerFlammable(BOPBlocks.pink_daffodil, 60, 100); + registerFlammable(BOPBlocks.pink_hibiscus, 60, 100); + registerFlammable(BOPBlocks.glowflower, 60, 100); + registerFlammable(BOPBlocks.wilted_lily, 60, 100); + registerFlammable(BOPBlocks.blue_hydrangea, 60, 100); + registerFlammable(BOPBlocks.goldenrod, 60, 100); + registerFlammable(BOPBlocks.willow_vine, 15, 100); + registerFlammable(BOPBlocks.spanish_moss, 60, 100); + registerFlammable(BOPBlocks.spanish_moss_plant, 60, 100); + registerFlammable(BOPBlocks.sprout, 60, 100); + registerFlammable(BOPBlocks.bush, 60, 100); + registerFlammable(BOPBlocks.clover, 60, 100); + registerFlammable(BOPBlocks.huge_clover_petal, 60, 100); + registerFlammable(BOPBlocks.dune_grass, 60, 100); + registerFlammable(BOPBlocks.desert_grass, 60, 100); + registerFlammable(BOPBlocks.dead_grass, 60, 100); + registerFlammable(BOPBlocks.dead_branch, 60, 100); + registerFlammable(BOPBlocks.barley, 60, 100); + + //Log Stripping + registerStrippable(BOPBlocks.fir_log, BOPBlocks.stripped_fir_log); + registerStrippable(BOPBlocks.fir_wood, BOPBlocks.stripped_fir_wood); + registerStrippable(BOPBlocks.redwood_log, BOPBlocks.stripped_redwood_log); + registerStrippable(BOPBlocks.redwood_wood, BOPBlocks.stripped_redwood_wood); + registerStrippable(BOPBlocks.cherry_log, BOPBlocks.stripped_cherry_log); + registerStrippable(BOPBlocks.cherry_wood, BOPBlocks.stripped_cherry_wood); + registerStrippable(BOPBlocks.mahogany_log, BOPBlocks.stripped_mahogany_log); + registerStrippable(BOPBlocks.mahogany_wood, BOPBlocks.stripped_mahogany_wood); + registerStrippable(BOPBlocks.jacaranda_log, BOPBlocks.stripped_jacaranda_log); + registerStrippable(BOPBlocks.jacaranda_wood, BOPBlocks.stripped_jacaranda_wood); + registerStrippable(BOPBlocks.palm_log, BOPBlocks.stripped_palm_log); + registerStrippable(BOPBlocks.palm_wood, BOPBlocks.stripped_palm_wood); + registerStrippable(BOPBlocks.willow_log, BOPBlocks.stripped_willow_log); + registerStrippable(BOPBlocks.willow_wood, BOPBlocks.stripped_willow_wood); + registerStrippable(BOPBlocks.dead_log, BOPBlocks.stripped_dead_log); + registerStrippable(BOPBlocks.dead_wood, BOPBlocks.stripped_dead_wood); + registerStrippable(BOPBlocks.magic_log, BOPBlocks.stripped_magic_log); + registerStrippable(BOPBlocks.magic_wood, BOPBlocks.stripped_magic_wood); + registerStrippable(BOPBlocks.umbran_log, BOPBlocks.stripped_umbran_log); + registerStrippable(BOPBlocks.umbran_wood, BOPBlocks.stripped_umbran_wood); + registerStrippable(BOPBlocks.hellbark_log, BOPBlocks.stripped_hellbark_log); + registerStrippable(BOPBlocks.hellbark_wood, BOPBlocks.stripped_hellbark_wood); + + //Tilling and Flattening + registerTillable(BOPBlocks.origin_grass_block, Blocks.FARMLAND.defaultBlockState()); + registerFlattenable(BOPBlocks.origin_grass_block, Blocks.GRASS_PATH.defaultBlockState()); + + //Compostable Blocks + registerCompostable(0.85F, BOPBlocks.glowshroom_block); + registerCompostable(0.85F, BOPBlocks.toadstool_block); + + registerCompostable(0.3F, BOPBlocks.origin_sapling); + registerCompostable(0.3F, BOPBlocks.origin_leaves); + registerCompostable(0.3F, BOPBlocks.flowering_oak_sapling); + registerCompostable(0.3F, BOPBlocks.flowering_oak_leaves); + registerCompostable(0.3F, BOPBlocks.yellow_autumn_sapling); + registerCompostable(0.3F, BOPBlocks.yellow_autumn_leaves); + registerCompostable(0.3F, BOPBlocks.orange_autumn_sapling); + registerCompostable(0.3F, BOPBlocks.orange_autumn_leaves); + registerCompostable(0.3F, BOPBlocks.maple_sapling); + registerCompostable(0.3F, BOPBlocks.maple_leaves); + registerCompostable(0.3F, BOPBlocks.fir_sapling); + registerCompostable(0.3F, BOPBlocks.fir_leaves); + registerCompostable(0.3F, BOPBlocks.redwood_sapling); + registerCompostable(0.3F, BOPBlocks.redwood_leaves); + registerCompostable(0.3F, BOPBlocks.white_cherry_sapling); + registerCompostable(0.3F, BOPBlocks.white_cherry_leaves); + registerCompostable(0.3F, BOPBlocks.pink_cherry_sapling); + registerCompostable(0.3F, BOPBlocks.pink_cherry_leaves); + registerCompostable(0.3F, BOPBlocks.mahogany_sapling); + registerCompostable(0.3F, BOPBlocks.mahogany_leaves); + registerCompostable(0.3F, BOPBlocks.jacaranda_sapling); + registerCompostable(0.3F, BOPBlocks.jacaranda_leaves); + registerCompostable(0.3F, BOPBlocks.palm_sapling); + registerCompostable(0.3F, BOPBlocks.palm_leaves); + registerCompostable(0.3F, BOPBlocks.willow_sapling); + registerCompostable(0.3F, BOPBlocks.willow_leaves); + registerCompostable(0.3F, BOPBlocks.dead_sapling); + registerCompostable(0.3F, BOPBlocks.dead_leaves); + registerCompostable(0.3F, BOPBlocks.magic_sapling); + registerCompostable(0.3F, BOPBlocks.magic_leaves); + registerCompostable(0.3F, BOPBlocks.umbran_sapling); + registerCompostable(0.3F, BOPBlocks.umbran_leaves); + registerCompostable(0.3F, BOPBlocks.hellbark_sapling); + registerCompostable(0.3F, BOPBlocks.hellbark_leaves); + + registerCompostable(0.65F, BOPBlocks.rose); + registerCompostable(0.65F, BOPBlocks.violet); + registerCompostable(0.65F, BOPBlocks.lavender); + registerCompostable(0.65F, BOPBlocks.wildflower); + registerCompostable(0.65F, BOPBlocks.orange_cosmos); + registerCompostable(0.65F, BOPBlocks.pink_daffodil); + registerCompostable(0.65F, BOPBlocks.pink_hibiscus); + registerCompostable(0.65F, BOPBlocks.glowflower); + registerCompostable(0.65F, BOPBlocks.wilted_lily); + registerCompostable(0.65F, BOPBlocks.burning_blossom); + + registerCompostable(0.65F, BOPBlocks.blue_hydrangea); + registerCompostable(0.65F, BOPBlocks.goldenrod); + + registerCompostable(0.5F, BOPBlocks.willow_vine); + registerCompostable(0.5F, BOPBlocks.spanish_moss); + registerCompostable(0.5F, BOPBlocks.spanish_moss_plant); + + registerCompostable(0.5F, BOPBlocks.sprout); + registerCompostable(0.5F, BOPBlocks.bush); + registerCompostable(0.5F, BOPBlocks.clover); + registerCompostable(0.5F, BOPBlocks.huge_clover_petal); + registerCompostable(0.5F, BOPBlocks.dune_grass); + registerCompostable(0.5F, BOPBlocks.desert_grass); + registerCompostable(0.5F, BOPBlocks.dead_grass); + + registerCompostable(0.5F, BOPBlocks.cattail); + registerCompostable(0.5F, BOPBlocks.barley); + registerCompostable(0.5F, BOPBlocks.reed); + registerCompostable(0.5F, BOPBlocks.watergrass); + registerCompostable(0.5F, BOPBlocks.mangrove_root); + + registerCompostable(0.3F, BOPBlocks.dead_branch); + registerCompostable(0.3F, BOPBlocks.bramble); + + registerCompostable(0.65F, BOPBlocks.toadstool); + registerCompostable(0.65F, BOPBlocks.glowshroom); + } + + public static void registerStrippable(Block log, Block stripped_log) { + AxeItem.STRIPABLES = Maps.newHashMap(AxeItem.STRIPABLES); + AxeItem.STRIPABLES.put(log, stripped_log); + } + + public static void registerTillable(Block block, BlockState tilled_block) { + HoeItem.TILLABLES = Maps.newHashMap(HoeItem.TILLABLES); + HoeItem.TILLABLES.put(block, tilled_block); + } + + public static void registerFlattenable(Block block, BlockState flattened_block) { + ShovelItem.FLATTENABLES = Maps.newHashMap(ShovelItem.FLATTENABLES); + ShovelItem.FLATTENABLES.put(block, flattened_block); + } + + public static void registerCompostable(float chance, IItemProvider itemIn) { + ComposterBlock.COMPOSTABLES.put(itemIn.asItem(), chance); + } + + public static void registerFlammable(Block blockIn, int encouragement, int flammability) + { + FireBlock fireblock = (FireBlock)Blocks.FIRE; + fireblock.setFlammable(blockIn, encouragement, flammability); + } +} diff --git a/src/main/resources/LICENSE.txt b/src/main/resources/LICENSE.txt new file mode 100644 index 0000000000..f7ce0461a1 --- /dev/null +++ b/src/main/resources/LICENSE.txt @@ -0,0 +1,360 @@ +============================================================================= +INDEX +============================================================================= + +1. Biomes O’ Plenty License - Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License +2. Mixin License - The MIT License + +============================================================================= +1. BIOMES O’ PLENTY LICENSE +============================================================================= + +Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 +International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-NonCommercial-NoDerivatives 4.0 International Public +License ("Public License"). To the extent this Public License may be +interpreted as a contract, You are granted the Licensed Rights in +consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the +Licensor receives from making the Licensed Material available under +these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + c. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + d. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + e. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + f. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + g. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + h. NonCommercial means not primarily intended for or directed towards + commercial advantage or monetary compensation. For purposes of + this Public License, the exchange of the Licensed Material for + other material subject to Copyright and Similar Rights by digital + file-sharing or similar means is NonCommercial provided there is + no payment of monetary compensation in connection with the + exchange. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part, for NonCommercial purposes only; and + + b. produce and reproduce, but not Share, Adapted Material + for NonCommercial purposes only. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties, including when + the Licensed Material is used other than for NonCommercial + purposes. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material, You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + For the avoidance of doubt, You do not have permission under + this Public License to Share Adapted Material. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database for NonCommercial purposes + only and provided You do not Share Adapted Material; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + +============================================================================= +2. MIXIN LICENSE +============================================================================= + +The MIT License (MIT) + +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/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg new file mode 100644 index 0000000000..09e168833a --- /dev/null +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -0,0 +1,47 @@ +# 1.16 +public net.minecraft.block.FireBlock func_180686_a(Lnet/minecraft/block/Block;II)V #setFlammable +public net.minecraft.world.gen.feature.TreeFeature *() +public-f net.minecraft.client.gui.screen.BiomeGeneratorTypeScreens * +public net.minecraft.client.gui.screen.BiomeGeneratorTypeScreens (Ljava/lang/String;)V +public net.minecraft.block.Blocks *() +public net.minecraft.client.Minecraft$PackManager *() +public-f net.minecraft.entity.villager.VillagerType field_221180_h +public-f net.minecraft.world.biome.BiomeColors * + +# Set worldtype as default and skip the confirm backup screen +public-f net.minecraft.client.gui.screen.ConfirmBackupScreen * +public-f net.minecraft.client.gui.screen.WorldOptionsScreen * +public net.minecraft.client.gui.screen.WorldSelectionScreen * +public net.minecraft.client.gui.screen.WorldSelectionList$Entry * + +# server.properties world type hackery +public-f net.minecraft.server.dedicated.ServerProperties * +public-f net.minecraft.world.storage.ServerWorldInfo * +public net.minecraft.server.dedicated.PropertyManager * + +# Make various Block related things public +public net.minecraft.block.Block$Properties *() + +public net.minecraft.block.Block field_181083_K # materialColor + +public net.minecraft.block.StairsBlock (Lnet/minecraft/block/BlockState;Lnet/minecraft/block/Block$Properties;)V #StairsBlock +public net.minecraft.block.DoorBlock (Lnet/minecraft/block/Block$Properties;)V # DoorBlock +public net.minecraft.block.FarmlandBlock (Lnet/minecraft/block/Block$Properties;)V # FarmlandBlock +public net.minecraft.block.GrassPathBlock (Lnet/minecraft/block/Block$Properties;)V # GrassPathBlock +public net.minecraft.block.TrapDoorBlock (Lnet/minecraft/block/Block$Properties;)V # TrapDoorBlock +public net.minecraft.block.WoodButtonBlock (Lnet/minecraft/block/Block$Properties;)V # WoodButtonBlock +public net.minecraft.block.PressurePlateBlock (Lnet/minecraft/block/PressurePlateBlock$Sensitivity;Lnet/minecraft/block/Block$Properties;)V # PressurePlateBlock + +public-f net.minecraft.item.AxeItem field_203176_a # BLOCK_STRIPPING_MAP +public-f net.minecraft.item.HoeItem field_195973_b # TILLABLES +public-f net.minecraft.item.ShovelItem field_195955_e # FLATTENABLES + +public net.minecraft.entity.item.BoatEntity field_184466_d #DATA_ID_TYPE +public net.minecraft.entity.item.BoatEntity field_184469_aF #status +public net.minecraft.entity.item.BoatEntity field_184473_aH #lastYd + +public net.minecraft.world.gen.feature.WorldDecoratingHelper * + +#Directly reference the vanilla default nether and end generators to capture mixins from other mods +public net.minecraft.world.DimensionType func_242717_a(Lnet/minecraft/util/registry/Registry;Lnet/minecraft/util/registry/Registry;J)Lnet/minecraft/world/gen/ChunkGenerator; # getEndChunkGenerator +public net.minecraft.world.DimensionType func_242720_b(Lnet/minecraft/util/registry/Registry;Lnet/minecraft/util/registry/Registry;J)Lnet/minecraft/world/gen/ChunkGenerator; # getNetherChunkGenerator \ No newline at end of file diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml new file mode 100644 index 0000000000..427d92f8c9 --- /dev/null +++ b/src/main/resources/META-INF/mods.toml @@ -0,0 +1,22 @@ +modLoader="javafml" +license="Creative Commons Attribution-NonCommercial-NoDerivatives 4.0" +loaderVersion="[24,)" +issueTrackerURL="https://github.com/Glitchfiend/BiomesOPlenty/issues" +displayURL="https://minecraft.curseforge.com/projects/biomes-o-plenty" +logoFile="bop_logo.png" + +[[mods]] + modId="biomesoplenty" + version="${version}" + displayName="Biomes O' Plenty" + authors="Forstride, Adubbz" + description=''' + Adds over 50 new biomes, blocks, and more! + ''' + +[[dependencies.biomesoplenty]] + modId="forge" + mandatory=true + versionRange="[35.1.10,)" + ordering="NONE" + side="BOTH" diff --git a/src/main/resources/assets/biomesoplenty/blockstates/barley.json b/src/main/resources/assets/biomesoplenty/blockstates/barley.json new file mode 100644 index 0000000000..8dd521bb4f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/barley.json @@ -0,0 +1,6 @@ +{ + "variants": { + "half=lower": { "model": "biomesoplenty:block/barley_bottom" }, + "half=upper": { "model": "biomesoplenty:block/barley_top" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/black_sand.json b/src/main/resources/assets/biomesoplenty/blockstates/black_sand.json new file mode 100644 index 0000000000..43568bb7b0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/black_sand.json @@ -0,0 +1,10 @@ +{ + "variants": { + "": [ + { "model": "biomesoplenty:block/black_sand" }, + { "model": "biomesoplenty:block/black_sand", "y": 90 }, + { "model": "biomesoplenty:block/black_sand", "y": 180 }, + { "model": "biomesoplenty:block/black_sand", "y": 270 } + ] + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone.json new file mode 100644 index 0000000000..1e4a5c3763 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/black_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_slab.json new file mode 100644 index 0000000000..e06503f6a8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/black_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/black_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/black_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_stairs.json new file mode 100644 index 0000000000..d973d4451f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_wall.json b/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_wall.json new file mode 100644 index 0000000000..107f4a405f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/blue_hydrangea.json b/src/main/resources/assets/biomesoplenty/blockstates/blue_hydrangea.json new file mode 100644 index 0000000000..a110f60129 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/blue_hydrangea.json @@ -0,0 +1,6 @@ +{ + "variants": { + "half=lower": { "model": "biomesoplenty:block/blue_hydrangea_bottom" }, + "half=upper": { "model": "biomesoplenty:block/blue_hydrangea_top" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/bramble.json b/src/main/resources/assets/biomesoplenty/blockstates/bramble.json new file mode 100644 index 0000000000..cd69d8d68f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/bramble.json @@ -0,0 +1,23 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/bramble" }}, + { "when": { "north": true }, + "apply": { "model": "biomesoplenty:block/bramble_side" } + }, + { "when": { "east": true }, + "apply": { "model": "biomesoplenty:block/bramble_side", "y": 90, "uvlock": true } + }, + { "when": { "south": true }, + "apply": { "model": "biomesoplenty:block/bramble_side", "y": 180, "uvlock": true } + }, + { "when": { "west": true }, + "apply": { "model": "biomesoplenty:block/bramble_side", "y": 270, "uvlock": true } + }, + { "when": { "up": true }, + "apply": { "model": "biomesoplenty:block/bramble_side", "x": 270, "uvlock": true } + }, + { "when": { "down": true }, + "apply": { "model": "biomesoplenty:block/bramble_side", "x": 90, "uvlock": true } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/burning_blossom.json b/src/main/resources/assets/biomesoplenty/blockstates/burning_blossom.json new file mode 100644 index 0000000000..a00e4331bc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/burning_blossom.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/burning_blossom" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/bush.json b/src/main/resources/assets/biomesoplenty/blockstates/bush.json new file mode 100644 index 0000000000..82be7d48b9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/bush.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/bush" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cattail.json b/src/main/resources/assets/biomesoplenty/blockstates/cattail.json new file mode 100644 index 0000000000..153967ae6a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cattail.json @@ -0,0 +1,6 @@ +{ + "variants": { + "half=lower": { "model": "biomesoplenty:block/cattail_bottom" }, + "half=upper": { "model": "biomesoplenty:block/cattail_top" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_button.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_button.json new file mode 100644 index 0000000000..a7328e2b49 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/cherry_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/cherry_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/cherry_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/cherry_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/cherry_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/cherry_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/cherry_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/cherry_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/cherry_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/cherry_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/cherry_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/cherry_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_door.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_door.json new file mode 100644 index 0000000000..319efb01f7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/cherry_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/cherry_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/cherry_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/cherry_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/cherry_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/cherry_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/cherry_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/cherry_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/cherry_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/cherry_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/cherry_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/cherry_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/cherry_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/cherry_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/cherry_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/cherry_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/cherry_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/cherry_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/cherry_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/cherry_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/cherry_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/cherry_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/cherry_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/cherry_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/cherry_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/cherry_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/cherry_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/cherry_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/cherry_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/cherry_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/cherry_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/cherry_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_fence.json new file mode 100644 index 0000000000..2c760d8b37 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/cherry_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/cherry_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/cherry_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/cherry_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/cherry_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_fence_gate.json new file mode 100644 index 0000000000..865d88d130 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/cherry_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/cherry_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/cherry_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/cherry_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/cherry_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/cherry_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/cherry_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/cherry_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/cherry_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/cherry_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/cherry_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/cherry_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/cherry_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/cherry_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/cherry_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/cherry_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_log.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_log.json new file mode 100644 index 0000000000..d448753e89 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/cherry_log" }, + "axis=z": { "model": "biomesoplenty:block/cherry_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/cherry_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_planks.json new file mode 100644 index 0000000000..7977d63f69 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/cherry_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_pressure_plate.json new file mode 100644 index 0000000000..ed31c97a94 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/cherry_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/cherry_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_sign.json new file mode 100644 index 0000000000..157a397c5e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/cherry_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_slab.json new file mode 100644 index 0000000000..de45470b82 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/cherry_slab" }, + "type=top": { "model": "biomesoplenty:block/cherry_slab_top" }, + "type=double": { "model": "biomesoplenty:block/cherry_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_stairs.json new file mode 100644 index 0000000000..7131cae1ce --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/cherry_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/cherry_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/cherry_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/cherry_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/cherry_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/cherry_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/cherry_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/cherry_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/cherry_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/cherry_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/cherry_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/cherry_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/cherry_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/cherry_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/cherry_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/cherry_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/cherry_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/cherry_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/cherry_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/cherry_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/cherry_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/cherry_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/cherry_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/cherry_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/cherry_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/cherry_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/cherry_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/cherry_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/cherry_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/cherry_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/cherry_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/cherry_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/cherry_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/cherry_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/cherry_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/cherry_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/cherry_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/cherry_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/cherry_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/cherry_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_trapdoor.json new file mode 100644 index 0000000000..55f4b2b420 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/cherry_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/cherry_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/cherry_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/cherry_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/cherry_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/cherry_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/cherry_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/cherry_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/cherry_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/cherry_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/cherry_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/cherry_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/cherry_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/cherry_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/cherry_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/cherry_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_wall_sign.json new file mode 100644 index 0000000000..157a397c5e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/cherry_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_wood.json new file mode 100644 index 0000000000..b33dc1a95f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/cherry_wood" }, + "axis=z": { "model": "biomesoplenty:block/cherry_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/cherry_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/chiseled_black_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/chiseled_black_sandstone.json new file mode 100644 index 0000000000..b97ad7861b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/chiseled_black_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/chiseled_black_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/chiseled_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/chiseled_orange_sandstone.json new file mode 100644 index 0000000000..801d89909c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/chiseled_orange_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/chiseled_orange_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/chiseled_white_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/chiseled_white_sandstone.json new file mode 100644 index 0000000000..00a651ff8e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/chiseled_white_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/chiseled_white_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/clover.json b/src/main/resources/assets/biomesoplenty/blockstates/clover.json new file mode 100644 index 0000000000..52d7b0e7d6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/clover.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/clover" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cut_black_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/cut_black_sandstone.json new file mode 100644 index 0000000000..a50387c255 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cut_black_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/cut_black_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cut_black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/cut_black_sandstone_slab.json new file mode 100644 index 0000000000..16b8c58ed4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cut_black_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/cut_black_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/cut_black_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/cut_black_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cut_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/cut_orange_sandstone.json new file mode 100644 index 0000000000..a0a2985021 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cut_orange_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/cut_orange_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cut_orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/cut_orange_sandstone_slab.json new file mode 100644 index 0000000000..cee840dbd1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cut_orange_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/cut_orange_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/cut_orange_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/cut_orange_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cut_white_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/cut_white_sandstone.json new file mode 100644 index 0000000000..62cc06869e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cut_white_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/cut_white_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cut_white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/cut_white_sandstone_slab.json new file mode 100644 index 0000000000..d34b0e76c9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cut_white_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/cut_white_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/cut_white_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/cut_white_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_branch.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_branch.json new file mode 100644 index 0000000000..81260a02df --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_branch.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=east": { "model": "biomesoplenty:block/dead_branch", "y": 90 }, + "facing=south": { "model": "biomesoplenty:block/dead_branch", "y": 180 }, + "facing=west": { "model": "biomesoplenty:block/dead_branch", "y": 270 }, + "facing=north": { "model": "biomesoplenty:block/dead_branch", "y": 0 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_button.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_button.json new file mode 100644 index 0000000000..22a4cb525a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/dead_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/dead_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/dead_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/dead_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/dead_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/dead_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/dead_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/dead_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/dead_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/dead_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/dead_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/dead_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/dead_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_door.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_door.json new file mode 100644 index 0000000000..da2057cf44 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/dead_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/dead_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/dead_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/dead_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/dead_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/dead_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/dead_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/dead_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/dead_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/dead_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/dead_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/dead_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/dead_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/dead_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/dead_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/dead_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/dead_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/dead_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/dead_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/dead_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/dead_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/dead_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/dead_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/dead_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/dead_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/dead_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/dead_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/dead_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/dead_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/dead_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/dead_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/dead_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_fence.json new file mode 100644 index 0000000000..9a5ac82e02 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/dead_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/dead_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/dead_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/dead_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/dead_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_fence_gate.json new file mode 100644 index 0000000000..1a50c9a239 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/dead_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/dead_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/dead_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/dead_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/dead_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/dead_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/dead_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/dead_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/dead_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/dead_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/dead_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/dead_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/dead_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/dead_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/dead_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/dead_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_grass.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_grass.json new file mode 100644 index 0000000000..ea3de02874 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_grass.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/dead_grass" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_leaves.json new file mode 100644 index 0000000000..5b640196ff --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/dead_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_log.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_log.json new file mode 100644 index 0000000000..3d7f141b01 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/dead_log" }, + "axis=z": { "model": "biomesoplenty:block/dead_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/dead_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_planks.json new file mode 100644 index 0000000000..cd1a62e813 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/dead_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_pressure_plate.json new file mode 100644 index 0000000000..59ec1695fa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/dead_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/dead_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_sapling.json new file mode 100644 index 0000000000..008d275379 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/dead_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_sign.json new file mode 100644 index 0000000000..062099e557 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/dead_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_slab.json new file mode 100644 index 0000000000..ed4426278f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/dead_slab" }, + "type=top": { "model": "biomesoplenty:block/dead_slab_top" }, + "type=double": { "model": "biomesoplenty:block/dead_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_stairs.json new file mode 100644 index 0000000000..af35ecda4a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/dead_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/dead_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/dead_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/dead_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/dead_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/dead_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/dead_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/dead_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/dead_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/dead_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/dead_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/dead_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/dead_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/dead_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/dead_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/dead_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/dead_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/dead_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/dead_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/dead_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/dead_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/dead_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/dead_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/dead_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/dead_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/dead_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/dead_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/dead_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/dead_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/dead_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/dead_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/dead_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/dead_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/dead_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/dead_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/dead_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/dead_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/dead_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/dead_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/dead_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_trapdoor.json new file mode 100644 index 0000000000..cc90f4e239 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/dead_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/dead_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/dead_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/dead_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/dead_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/dead_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/dead_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/dead_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/dead_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/dead_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/dead_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/dead_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/dead_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/dead_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/dead_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/dead_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_wall_sign.json new file mode 100644 index 0000000000..062099e557 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/dead_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_wood.json new file mode 100644 index 0000000000..8003cd5a33 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/dead_wood" }, + "axis=z": { "model": "biomesoplenty:block/dead_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/dead_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/desert_grass.json b/src/main/resources/assets/biomesoplenty/blockstates/desert_grass.json new file mode 100644 index 0000000000..145e46a10d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/desert_grass.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/desert_grass" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dried_salt.json b/src/main/resources/assets/biomesoplenty/blockstates/dried_salt.json new file mode 100644 index 0000000000..80e7d24909 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dried_salt.json @@ -0,0 +1,10 @@ +{ + "variants": { + "": [ + { "model": "biomesoplenty:block/dried_salt" }, + { "model": "biomesoplenty:block/dried_salt", "y": 90 }, + { "model": "biomesoplenty:block/dried_salt", "y": 180 }, + { "model": "biomesoplenty:block/dried_salt", "y": 270 } + ] + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dune_grass.json b/src/main/resources/assets/biomesoplenty/blockstates/dune_grass.json new file mode 100644 index 0000000000..31e57c9b19 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dune_grass.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/dune_grass" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_button.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_button.json new file mode 100644 index 0000000000..758c2246e5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/fir_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/fir_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/fir_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/fir_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/fir_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/fir_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/fir_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/fir_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/fir_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/fir_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/fir_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/fir_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/fir_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_door.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_door.json new file mode 100644 index 0000000000..5d5d20c9ec --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/fir_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/fir_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/fir_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/fir_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/fir_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/fir_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/fir_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/fir_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/fir_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/fir_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/fir_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/fir_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/fir_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/fir_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/fir_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/fir_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/fir_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/fir_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/fir_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/fir_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/fir_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/fir_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/fir_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/fir_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/fir_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/fir_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/fir_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/fir_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/fir_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/fir_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/fir_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/fir_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_fence.json new file mode 100644 index 0000000000..751c9b88ef --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/fir_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/fir_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/fir_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/fir_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/fir_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_fence_gate.json new file mode 100644 index 0000000000..e369454527 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/fir_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/fir_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/fir_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/fir_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/fir_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/fir_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/fir_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/fir_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/fir_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/fir_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/fir_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/fir_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/fir_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/fir_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/fir_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/fir_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_leaves.json new file mode 100644 index 0000000000..c1e11c56d6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/fir_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_log.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_log.json new file mode 100644 index 0000000000..7cd806dfc9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/fir_log" }, + "axis=z": { "model": "biomesoplenty:block/fir_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/fir_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_planks.json new file mode 100644 index 0000000000..040aecb204 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/fir_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_pressure_plate.json new file mode 100644 index 0000000000..47e660e240 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/fir_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/fir_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_sapling.json new file mode 100644 index 0000000000..51ff59b698 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/fir_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_sign.json new file mode 100644 index 0000000000..dec8f86db6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/fir_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_slab.json new file mode 100644 index 0000000000..fe327c2bac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/fir_slab" }, + "type=top": { "model": "biomesoplenty:block/fir_slab_top" }, + "type=double": { "model": "biomesoplenty:block/fir_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_stairs.json new file mode 100644 index 0000000000..458ee0305f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/fir_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/fir_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/fir_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/fir_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/fir_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/fir_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/fir_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/fir_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/fir_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/fir_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/fir_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/fir_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/fir_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/fir_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/fir_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/fir_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/fir_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/fir_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/fir_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/fir_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/fir_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/fir_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/fir_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/fir_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/fir_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/fir_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/fir_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/fir_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/fir_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/fir_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/fir_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/fir_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/fir_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/fir_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/fir_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/fir_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/fir_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/fir_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/fir_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/fir_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_trapdoor.json new file mode 100644 index 0000000000..16bb712065 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/fir_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/fir_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/fir_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/fir_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/fir_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/fir_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/fir_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/fir_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/fir_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/fir_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/fir_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/fir_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/fir_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/fir_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/fir_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/fir_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_wall_sign.json new file mode 100644 index 0000000000..dec8f86db6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/fir_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_wood.json new file mode 100644 index 0000000000..ca0d8ddb25 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/fir_wood" }, + "axis=z": { "model": "biomesoplenty:block/fir_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/fir_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/flesh.json b/src/main/resources/assets/biomesoplenty/blockstates/flesh.json new file mode 100644 index 0000000000..d176b0d279 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/flesh.json @@ -0,0 +1,10 @@ +{ + "variants": { + "": [ + { "model": "biomesoplenty:block/flesh" }, + { "model": "biomesoplenty:block/flesh", "y": 90 }, + { "model": "biomesoplenty:block/flesh", "y": 180 }, + { "model": "biomesoplenty:block/flesh", "y": 270 } + ] + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/flowering_oak_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/flowering_oak_leaves.json new file mode 100644 index 0000000000..80c8c548f7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/flowering_oak_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/flowering_oak_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/flowering_oak_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/flowering_oak_sapling.json new file mode 100644 index 0000000000..a9714a9465 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/flowering_oak_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/flowering_oak_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/glowflower.json b/src/main/resources/assets/biomesoplenty/blockstates/glowflower.json new file mode 100644 index 0000000000..94249b04a1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/glowflower.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/glowflower" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/glowshroom.json b/src/main/resources/assets/biomesoplenty/blockstates/glowshroom.json new file mode 100644 index 0000000000..7313e17fc5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/glowshroom.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/glowshroom" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/glowshroom_block.json b/src/main/resources/assets/biomesoplenty/blockstates/glowshroom_block.json new file mode 100644 index 0000000000..d4f4d1abcb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/glowshroom_block.json @@ -0,0 +1,40 @@ +{ + "multipart": [ + { "when": { "north": true }, + "apply": { "model": "biomesoplenty:block/glowshroom_block" } + }, + { "when": { "east": true }, + "apply": { "model": "biomesoplenty:block/glowshroom_block", "y": 90, "uvlock": true } + }, + { "when": { "south": true }, + "apply": { "model": "biomesoplenty:block/glowshroom_block", "y": 180, "uvlock": true } + }, + { "when": { "west": true }, + "apply": { "model": "biomesoplenty:block/glowshroom_block", "y": 270, "uvlock": true } + }, + { "when": { "up": true }, + "apply": { "model": "biomesoplenty:block/glowshroom_block", "x": 270, "uvlock": true } + }, + { "when": { "down": true }, + "apply": { "model": "biomesoplenty:block/glowshroom_block", "x": 90, "uvlock": true } + }, + { "when": { "north": false }, + "apply": { "model": "block/mushroom_block_inside" } + }, + { "when": { "east": false }, + "apply": { "model": "block/mushroom_block_inside", "y": 90, "uvlock": false } + }, + { "when": { "south": false }, + "apply": { "model": "block/mushroom_block_inside", "y": 180, "uvlock": false } + }, + { "when": { "west": false }, + "apply": { "model": "block/mushroom_block_inside", "y": 270, "uvlock": false } + }, + { "when": { "up": false }, + "apply": { "model": "block/mushroom_block_inside", "x": 270, "uvlock": false } + }, + { "when": { "down": false }, + "apply": { "model": "block/mushroom_block_inside", "x": 90, "uvlock": false } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/goldenrod.json b/src/main/resources/assets/biomesoplenty/blockstates/goldenrod.json new file mode 100644 index 0000000000..fe142829a3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/goldenrod.json @@ -0,0 +1,6 @@ +{ + "variants": { + "half=lower": { "model": "biomesoplenty:block/goldenrod_bottom" }, + "half=upper": { "model": "biomesoplenty:block/goldenrod_top" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_button.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_button.json new file mode 100644 index 0000000000..a08ae7bda0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/hellbark_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/hellbark_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/hellbark_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/hellbark_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/hellbark_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/hellbark_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/hellbark_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/hellbark_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/hellbark_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/hellbark_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/hellbark_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/hellbark_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_door.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_door.json new file mode 100644 index 0000000000..3630bdf390 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/hellbark_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/hellbark_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/hellbark_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/hellbark_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/hellbark_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/hellbark_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/hellbark_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/hellbark_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/hellbark_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/hellbark_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/hellbark_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/hellbark_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/hellbark_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/hellbark_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/hellbark_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/hellbark_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/hellbark_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/hellbark_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/hellbark_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/hellbark_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/hellbark_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/hellbark_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/hellbark_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/hellbark_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/hellbark_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/hellbark_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/hellbark_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/hellbark_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/hellbark_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/hellbark_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/hellbark_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/hellbark_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_fence.json new file mode 100644 index 0000000000..7680bcb1be --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/hellbark_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/hellbark_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/hellbark_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/hellbark_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/hellbark_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_fence_gate.json new file mode 100644 index 0000000000..98ba9f2b7a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/hellbark_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/hellbark_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/hellbark_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/hellbark_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/hellbark_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/hellbark_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/hellbark_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/hellbark_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/hellbark_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/hellbark_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/hellbark_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/hellbark_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/hellbark_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/hellbark_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/hellbark_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/hellbark_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_leaves.json new file mode 100644 index 0000000000..28f3a5762c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/hellbark_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_log.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_log.json new file mode 100644 index 0000000000..671975c509 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/hellbark_log" }, + "axis=z": { "model": "biomesoplenty:block/hellbark_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/hellbark_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_planks.json new file mode 100644 index 0000000000..aec0544708 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/hellbark_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_pressure_plate.json new file mode 100644 index 0000000000..1f40f83ac6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/hellbark_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/hellbark_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_sapling.json new file mode 100644 index 0000000000..9a6b58725e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/hellbark_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_sign.json new file mode 100644 index 0000000000..42440b21ed --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/hellbark_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_slab.json new file mode 100644 index 0000000000..48becce6e8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/hellbark_slab" }, + "type=top": { "model": "biomesoplenty:block/hellbark_slab_top" }, + "type=double": { "model": "biomesoplenty:block/hellbark_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_stairs.json new file mode 100644 index 0000000000..42508bd224 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/hellbark_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/hellbark_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/hellbark_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/hellbark_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/hellbark_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/hellbark_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/hellbark_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/hellbark_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/hellbark_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/hellbark_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/hellbark_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/hellbark_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/hellbark_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/hellbark_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/hellbark_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/hellbark_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/hellbark_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/hellbark_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/hellbark_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/hellbark_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/hellbark_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/hellbark_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/hellbark_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/hellbark_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/hellbark_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/hellbark_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/hellbark_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/hellbark_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/hellbark_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/hellbark_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/hellbark_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/hellbark_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/hellbark_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/hellbark_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/hellbark_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/hellbark_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/hellbark_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/hellbark_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/hellbark_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/hellbark_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_trapdoor.json new file mode 100644 index 0000000000..b16041d400 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/hellbark_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/hellbark_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/hellbark_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/hellbark_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/hellbark_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/hellbark_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/hellbark_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/hellbark_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/hellbark_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/hellbark_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/hellbark_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/hellbark_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/hellbark_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/hellbark_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/hellbark_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/hellbark_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_wall_sign.json new file mode 100644 index 0000000000..42440b21ed --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/hellbark_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_wood.json new file mode 100644 index 0000000000..5c370bcd64 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/hellbark_wood" }, + "axis=z": { "model": "biomesoplenty:block/hellbark_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/hellbark_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/huge_clover_petal.json b/src/main/resources/assets/biomesoplenty/blockstates/huge_clover_petal.json new file mode 100644 index 0000000000..3644c69858 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/huge_clover_petal.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=east": { "model": "biomesoplenty:block/huge_clover_petal", "y": 90 }, + "facing=south": { "model": "biomesoplenty:block/huge_clover_petal", "y": 180 }, + "facing=west": { "model": "biomesoplenty:block/huge_clover_petal", "y": 270 }, + "facing=north": { "model": "biomesoplenty:block/huge_clover_petal", "y": 0 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_button.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_button.json new file mode 100644 index 0000000000..bf2832cfe3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/jacaranda_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_door.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_door.json new file mode 100644 index 0000000000..21c9dca9f0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/jacaranda_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/jacaranda_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/jacaranda_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/jacaranda_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/jacaranda_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/jacaranda_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/jacaranda_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/jacaranda_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/jacaranda_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/jacaranda_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/jacaranda_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/jacaranda_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/jacaranda_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/jacaranda_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/jacaranda_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/jacaranda_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/jacaranda_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/jacaranda_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/jacaranda_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/jacaranda_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/jacaranda_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/jacaranda_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/jacaranda_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/jacaranda_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/jacaranda_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/jacaranda_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/jacaranda_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/jacaranda_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/jacaranda_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/jacaranda_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/jacaranda_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/jacaranda_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_fence.json new file mode 100644 index 0000000000..55db5c133f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/jacaranda_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/jacaranda_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/jacaranda_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/jacaranda_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/jacaranda_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_fence_gate.json new file mode 100644 index 0000000000..0b815ae7e5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/jacaranda_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/jacaranda_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/jacaranda_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/jacaranda_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/jacaranda_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/jacaranda_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/jacaranda_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/jacaranda_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/jacaranda_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/jacaranda_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/jacaranda_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/jacaranda_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/jacaranda_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/jacaranda_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/jacaranda_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/jacaranda_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_leaves.json new file mode 100644 index 0000000000..07de8862e7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/jacaranda_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_log.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_log.json new file mode 100644 index 0000000000..6914cbe07f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/jacaranda_log" }, + "axis=z": { "model": "biomesoplenty:block/jacaranda_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/jacaranda_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_planks.json new file mode 100644 index 0000000000..22c115018f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/jacaranda_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_pressure_plate.json new file mode 100644 index 0000000000..93f38152e2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/jacaranda_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/jacaranda_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_sapling.json new file mode 100644 index 0000000000..d879cb51c6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/jacaranda_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_sign.json new file mode 100644 index 0000000000..50db79a845 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/jacaranda_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_slab.json new file mode 100644 index 0000000000..a19f12beff --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/jacaranda_slab" }, + "type=top": { "model": "biomesoplenty:block/jacaranda_slab_top" }, + "type=double": { "model": "biomesoplenty:block/jacaranda_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_stairs.json new file mode 100644 index 0000000000..b0d53827f3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/jacaranda_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/jacaranda_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/jacaranda_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/jacaranda_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/jacaranda_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/jacaranda_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/jacaranda_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/jacaranda_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/jacaranda_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/jacaranda_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/jacaranda_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/jacaranda_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_trapdoor.json new file mode 100644 index 0000000000..9d65915f66 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/jacaranda_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/jacaranda_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/jacaranda_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/jacaranda_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/jacaranda_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/jacaranda_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/jacaranda_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/jacaranda_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/jacaranda_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/jacaranda_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/jacaranda_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/jacaranda_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/jacaranda_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/jacaranda_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/jacaranda_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/jacaranda_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_wall_sign.json new file mode 100644 index 0000000000..50db79a845 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/jacaranda_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_wood.json new file mode 100644 index 0000000000..5e35c733b8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/jacaranda_wood" }, + "axis=z": { "model": "biomesoplenty:block/jacaranda_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/jacaranda_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/lavender.json b/src/main/resources/assets/biomesoplenty/blockstates/lavender.json new file mode 100644 index 0000000000..7b16d2d5c8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/lavender.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/lavender" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_button.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_button.json new file mode 100644 index 0000000000..d4426e2866 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/magic_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/magic_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/magic_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/magic_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/magic_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/magic_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/magic_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/magic_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/magic_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/magic_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/magic_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/magic_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/magic_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_door.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_door.json new file mode 100644 index 0000000000..05c90cd5be --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/magic_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/magic_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/magic_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/magic_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/magic_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/magic_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/magic_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/magic_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/magic_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/magic_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/magic_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/magic_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/magic_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/magic_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/magic_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/magic_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/magic_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/magic_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/magic_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/magic_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/magic_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/magic_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/magic_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/magic_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/magic_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/magic_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/magic_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/magic_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/magic_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/magic_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/magic_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/magic_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_fence.json new file mode 100644 index 0000000000..cf81515ac4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/magic_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/magic_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/magic_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/magic_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/magic_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_fence_gate.json new file mode 100644 index 0000000000..406df7acfb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/magic_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/magic_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/magic_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/magic_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/magic_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/magic_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/magic_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/magic_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/magic_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/magic_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/magic_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/magic_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/magic_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/magic_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/magic_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/magic_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_leaves.json new file mode 100644 index 0000000000..d5e16ab4c8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/magic_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_log.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_log.json new file mode 100644 index 0000000000..4ee213b514 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/magic_log" }, + "axis=z": { "model": "biomesoplenty:block/magic_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/magic_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_planks.json new file mode 100644 index 0000000000..14a4c7dac3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/magic_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_pressure_plate.json new file mode 100644 index 0000000000..44a8b66889 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/magic_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/magic_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_sapling.json new file mode 100644 index 0000000000..e14e01129d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/magic_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_sign.json new file mode 100644 index 0000000000..0831d520fa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/magic_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_slab.json new file mode 100644 index 0000000000..2e02be9fa0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/magic_slab" }, + "type=top": { "model": "biomesoplenty:block/magic_slab_top" }, + "type=double": { "model": "biomesoplenty:block/magic_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_stairs.json new file mode 100644 index 0000000000..6e12ecfaaa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/magic_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/magic_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/magic_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/magic_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/magic_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/magic_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/magic_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/magic_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/magic_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/magic_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/magic_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/magic_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/magic_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/magic_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/magic_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/magic_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/magic_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/magic_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/magic_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/magic_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/magic_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/magic_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/magic_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/magic_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/magic_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/magic_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/magic_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/magic_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/magic_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/magic_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/magic_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/magic_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/magic_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/magic_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/magic_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/magic_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/magic_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/magic_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/magic_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/magic_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_trapdoor.json new file mode 100644 index 0000000000..cc8be7dcb4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/magic_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/magic_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/magic_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/magic_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/magic_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/magic_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/magic_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/magic_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/magic_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/magic_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/magic_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/magic_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/magic_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/magic_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/magic_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/magic_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_wall_sign.json new file mode 100644 index 0000000000..0831d520fa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/magic_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_wood.json new file mode 100644 index 0000000000..8a71d36589 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/magic_wood" }, + "axis=z": { "model": "biomesoplenty:block/magic_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/magic_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_button.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_button.json new file mode 100644 index 0000000000..80d74ed1ca --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/mahogany_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/mahogany_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/mahogany_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/mahogany_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/mahogany_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/mahogany_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/mahogany_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/mahogany_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/mahogany_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/mahogany_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/mahogany_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/mahogany_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_door.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_door.json new file mode 100644 index 0000000000..858b60bfc8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/mahogany_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/mahogany_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/mahogany_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/mahogany_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/mahogany_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/mahogany_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/mahogany_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/mahogany_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/mahogany_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/mahogany_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/mahogany_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/mahogany_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/mahogany_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/mahogany_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/mahogany_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/mahogany_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/mahogany_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/mahogany_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/mahogany_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/mahogany_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/mahogany_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/mahogany_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/mahogany_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/mahogany_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/mahogany_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/mahogany_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/mahogany_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/mahogany_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/mahogany_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/mahogany_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/mahogany_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/mahogany_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_fence.json new file mode 100644 index 0000000000..717133d4c9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/mahogany_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/mahogany_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/mahogany_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/mahogany_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/mahogany_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_fence_gate.json new file mode 100644 index 0000000000..5d17135d44 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/mahogany_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/mahogany_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/mahogany_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/mahogany_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/mahogany_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/mahogany_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/mahogany_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/mahogany_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/mahogany_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/mahogany_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/mahogany_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/mahogany_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/mahogany_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/mahogany_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/mahogany_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/mahogany_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_leaves.json new file mode 100644 index 0000000000..a94bd14425 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/mahogany_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_log.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_log.json new file mode 100644 index 0000000000..30f3674b91 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/mahogany_log" }, + "axis=z": { "model": "biomesoplenty:block/mahogany_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/mahogany_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_planks.json new file mode 100644 index 0000000000..63ab99db3c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/mahogany_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_pressure_plate.json new file mode 100644 index 0000000000..28a97d707a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/mahogany_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/mahogany_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_sapling.json new file mode 100644 index 0000000000..6ae93a6c3c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/mahogany_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_sign.json new file mode 100644 index 0000000000..b2193dab71 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/mahogany_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_slab.json new file mode 100644 index 0000000000..ba4d651da0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/mahogany_slab" }, + "type=top": { "model": "biomesoplenty:block/mahogany_slab_top" }, + "type=double": { "model": "biomesoplenty:block/mahogany_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_stairs.json new file mode 100644 index 0000000000..1d0b25ea34 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/mahogany_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/mahogany_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/mahogany_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/mahogany_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/mahogany_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/mahogany_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/mahogany_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/mahogany_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/mahogany_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/mahogany_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/mahogany_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/mahogany_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/mahogany_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/mahogany_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/mahogany_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/mahogany_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/mahogany_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/mahogany_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/mahogany_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/mahogany_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/mahogany_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/mahogany_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/mahogany_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/mahogany_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/mahogany_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/mahogany_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/mahogany_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/mahogany_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/mahogany_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/mahogany_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/mahogany_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/mahogany_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/mahogany_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/mahogany_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/mahogany_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/mahogany_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/mahogany_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/mahogany_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/mahogany_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/mahogany_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_trapdoor.json new file mode 100644 index 0000000000..47571bdbe8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/mahogany_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/mahogany_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/mahogany_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/mahogany_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/mahogany_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/mahogany_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/mahogany_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/mahogany_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/mahogany_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/mahogany_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/mahogany_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/mahogany_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/mahogany_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/mahogany_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/mahogany_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/mahogany_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_wall_sign.json new file mode 100644 index 0000000000..b2193dab71 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/mahogany_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_wood.json new file mode 100644 index 0000000000..9f3c1147a1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/mahogany_wood" }, + "axis=z": { "model": "biomesoplenty:block/mahogany_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/mahogany_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mangrove_root.json b/src/main/resources/assets/biomesoplenty/blockstates/mangrove_root.json new file mode 100644 index 0000000000..76e54c67a0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mangrove_root.json @@ -0,0 +1,6 @@ +{ + "variants": { + "half=lower": { "model": "biomesoplenty:block/mangrove_root_bottom" }, + "half=upper": { "model": "biomesoplenty:block/mangrove_root_top" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/maple_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/maple_leaves.json new file mode 100644 index 0000000000..722805bb8c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/maple_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/maple_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/maple_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/maple_sapling.json new file mode 100644 index 0000000000..1442251b9f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/maple_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/maple_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mud.json b/src/main/resources/assets/biomesoplenty/blockstates/mud.json new file mode 100644 index 0000000000..399c00a677 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mud.json @@ -0,0 +1,10 @@ +{ + "variants": { + "": [ + { "model": "biomesoplenty:block/mud" }, + { "model": "biomesoplenty:block/mud", "y": 90 }, + { "model": "biomesoplenty:block/mud", "y": 180 }, + { "model": "biomesoplenty:block/mud", "y": 270 } + ] + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_slab.json new file mode 100644 index 0000000000..d9d514ad3a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/mud_brick_slab" }, + "type=top": { "model": "biomesoplenty:block/mud_brick_slab_top" }, + "type=double": { "model": "biomesoplenty:block/mud_bricks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_stairs.json new file mode 100644 index 0000000000..c062154fa3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/mud_brick_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/mud_brick_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/mud_brick_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/mud_brick_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/mud_brick_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/mud_brick_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/mud_brick_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/mud_brick_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/mud_brick_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/mud_brick_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/mud_brick_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/mud_brick_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_wall.json b/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_wall.json new file mode 100644 index 0000000000..388f521aac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mud_bricks.json b/src/main/resources/assets/biomesoplenty/blockstates/mud_bricks.json new file mode 100644 index 0000000000..186ca5e236 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mud_bricks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/mud_bricks" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/nether_crystal.json b/src/main/resources/assets/biomesoplenty/blockstates/nether_crystal.json new file mode 100644 index 0000000000..b6e4a5459f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/nether_crystal.json @@ -0,0 +1,51 @@ +{ + "variants": { + "face=ceiling,facing=east": { + "model": "biomesoplenty:block/nether_crystal", + "x": 180 + }, + "face=ceiling,facing=north": { + "model": "biomesoplenty:block/nether_crystal", + "x": 180 + }, + "face=ceiling,facing=south": { + "model": "biomesoplenty:block/nether_crystal", + "x": 180 + }, + "face=ceiling,facing=west": { + "model": "biomesoplenty:block/nether_crystal", + "x": 180 + }, + "face=floor,facing=east": { + "model": "biomesoplenty:block/nether_crystal" + }, + "face=floor,facing=north": { + "model": "biomesoplenty:block/nether_crystal" + }, + "face=floor,facing=south": { + "model": "biomesoplenty:block/nether_crystal" + }, + "face=floor,facing=west": { + "model": "biomesoplenty:block/nether_crystal" + }, + "face=wall,facing=east": { + "model": "biomesoplenty:block/nether_crystal", + "y": 90, + "x": 90 + }, + "face=wall,facing=north": { + "model": "biomesoplenty:block/nether_crystal", + "x": 90 + }, + "face=wall,facing=south": { + "model": "biomesoplenty:block/nether_crystal", + "y": 180, + "x": 90 + }, + "face=wall,facing=west": { + "model": "biomesoplenty:block/nether_crystal", + "y": 270, + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/nether_crystal_block.json b/src/main/resources/assets/biomesoplenty/blockstates/nether_crystal_block.json new file mode 100644 index 0000000000..0c51a02f9a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/nether_crystal_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "biomesoplenty:block/nether_crystal_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/orange_autumn_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/orange_autumn_leaves.json new file mode 100644 index 0000000000..dbd4780633 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/orange_autumn_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/orange_autumn_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/orange_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/orange_autumn_sapling.json new file mode 100644 index 0000000000..f3dd7e0264 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/orange_autumn_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/orange_autumn_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/orange_cosmos.json b/src/main/resources/assets/biomesoplenty/blockstates/orange_cosmos.json new file mode 100644 index 0000000000..5348d8b7b5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/orange_cosmos.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/orange_cosmos" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/orange_sand.json b/src/main/resources/assets/biomesoplenty/blockstates/orange_sand.json new file mode 100644 index 0000000000..9ceebac8b0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/orange_sand.json @@ -0,0 +1,10 @@ +{ + "variants": { + "": [ + { "model": "biomesoplenty:block/orange_sand" }, + { "model": "biomesoplenty:block/orange_sand", "y": 90 }, + { "model": "biomesoplenty:block/orange_sand", "y": 180 }, + { "model": "biomesoplenty:block/orange_sand", "y": 270 } + ] + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone.json new file mode 100644 index 0000000000..b3f70b723d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/orange_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_slab.json new file mode 100644 index 0000000000..8a49a2108a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/orange_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/orange_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/orange_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_stairs.json new file mode 100644 index 0000000000..02b4d280c9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/orange_sandstone_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/orange_sandstone_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/orange_sandstone_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/orange_sandstone_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/orange_sandstone_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/orange_sandstone_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/orange_sandstone_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/orange_sandstone_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_wall.json b/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_wall.json new file mode 100644 index 0000000000..dd96d6b94a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/origin_grass_block.json b/src/main/resources/assets/biomesoplenty/blockstates/origin_grass_block.json new file mode 100644 index 0000000000..72fe55468b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/origin_grass_block.json @@ -0,0 +1,24 @@ +{ + "variants": { + "snowy=false": [ + { + "model": "biomesoplenty:block/origin_grass_block" + }, + { + "model": "biomesoplenty:block/origin_grass_block", + "y": 90 + }, + { + "model": "biomesoplenty:block/origin_grass_block", + "y": 180 + }, + { + "model": "biomesoplenty:block/origin_grass_block", + "y": 270 + } + ], + "snowy=true": { + "model": "biomesoplenty:block/origin_grass_block_snow" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/origin_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/origin_leaves.json new file mode 100644 index 0000000000..d24a94ef4e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/origin_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/origin_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/origin_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/origin_sapling.json new file mode 100644 index 0000000000..aa807b2fa8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/origin_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/origin_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_button.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_button.json new file mode 100644 index 0000000000..e6f2e9210a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/palm_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/palm_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/palm_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/palm_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/palm_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/palm_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/palm_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/palm_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/palm_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/palm_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/palm_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/palm_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/palm_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_door.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_door.json new file mode 100644 index 0000000000..04e5848bd0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/palm_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/palm_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/palm_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/palm_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/palm_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/palm_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/palm_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/palm_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/palm_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/palm_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/palm_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/palm_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/palm_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/palm_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/palm_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/palm_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/palm_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/palm_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/palm_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/palm_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/palm_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/palm_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/palm_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/palm_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/palm_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/palm_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/palm_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/palm_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/palm_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/palm_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/palm_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/palm_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_fence.json new file mode 100644 index 0000000000..e494584eac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/palm_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/palm_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/palm_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/palm_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/palm_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_fence_gate.json new file mode 100644 index 0000000000..fc9d83c836 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/palm_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/palm_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/palm_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/palm_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/palm_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/palm_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/palm_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/palm_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/palm_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/palm_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/palm_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/palm_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/palm_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/palm_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/palm_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/palm_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_leaves.json new file mode 100644 index 0000000000..5a33fe6bc9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/palm_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_log.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_log.json new file mode 100644 index 0000000000..7f116d0048 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/palm_log" }, + "axis=z": { "model": "biomesoplenty:block/palm_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/palm_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_planks.json new file mode 100644 index 0000000000..1108a016be --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/palm_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_pressure_plate.json new file mode 100644 index 0000000000..9224170f7d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/palm_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/palm_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_sapling.json new file mode 100644 index 0000000000..6946ae5a50 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/palm_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_sign.json new file mode 100644 index 0000000000..baa75ed70f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/palm_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_slab.json new file mode 100644 index 0000000000..943726c559 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/palm_slab" }, + "type=top": { "model": "biomesoplenty:block/palm_slab_top" }, + "type=double": { "model": "biomesoplenty:block/palm_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_stairs.json new file mode 100644 index 0000000000..f6cd71bf2a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/palm_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/palm_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/palm_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/palm_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/palm_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/palm_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/palm_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/palm_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/palm_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/palm_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/palm_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/palm_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/palm_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/palm_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/palm_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/palm_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/palm_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/palm_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/palm_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/palm_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/palm_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/palm_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/palm_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/palm_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/palm_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/palm_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/palm_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/palm_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/palm_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/palm_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/palm_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/palm_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/palm_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/palm_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/palm_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/palm_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/palm_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/palm_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/palm_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/palm_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_trapdoor.json new file mode 100644 index 0000000000..8942f04a7f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/palm_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/palm_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/palm_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/palm_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/palm_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/palm_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/palm_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/palm_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/palm_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/palm_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/palm_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/palm_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/palm_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/palm_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/palm_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/palm_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_wall_sign.json new file mode 100644 index 0000000000..baa75ed70f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/palm_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_wood.json new file mode 100644 index 0000000000..e216ffc357 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/palm_wood" }, + "axis=z": { "model": "biomesoplenty:block/palm_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/palm_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/pink_cherry_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/pink_cherry_leaves.json new file mode 100644 index 0000000000..7d9b3b9186 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/pink_cherry_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/pink_cherry_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/pink_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/pink_cherry_sapling.json new file mode 100644 index 0000000000..51e3f0d2fa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/pink_cherry_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/pink_cherry_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/pink_daffodil.json b/src/main/resources/assets/biomesoplenty/blockstates/pink_daffodil.json new file mode 100644 index 0000000000..c6874f4928 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/pink_daffodil.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/pink_daffodil" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/pink_hibiscus.json b/src/main/resources/assets/biomesoplenty/blockstates/pink_hibiscus.json new file mode 100644 index 0000000000..d90554c187 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/pink_hibiscus.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/pink_hibiscus" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_burning_blossom.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_burning_blossom.json new file mode 100644 index 0000000000..ee027ba83c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_burning_blossom.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_burning_blossom" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_clover.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_clover.json new file mode 100644 index 0000000000..f15804218a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_clover.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_clover" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_dead_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_dead_sapling.json new file mode 100644 index 0000000000..49150c0258 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_dead_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_dead_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_fir_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_fir_sapling.json new file mode 100644 index 0000000000..bcdb642c0b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_fir_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_fir_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_flowering_oak_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_flowering_oak_sapling.json new file mode 100644 index 0000000000..fb391a1c7f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_flowering_oak_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_flowering_oak_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_glowflower.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_glowflower.json new file mode 100644 index 0000000000..cbd45bfda8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_glowflower.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_glowflower" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_glowshroom.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_glowshroom.json new file mode 100644 index 0000000000..662ec4f9fa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_glowshroom.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_glowshroom" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_hellbark_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_hellbark_sapling.json new file mode 100644 index 0000000000..038b6bcf4a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_hellbark_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_hellbark_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_jacaranda_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_jacaranda_sapling.json new file mode 100644 index 0000000000..4dd6fab187 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_jacaranda_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_jacaranda_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_lavender.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_lavender.json new file mode 100644 index 0000000000..ae0fba1361 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_lavender.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_lavender" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_magic_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_magic_sapling.json new file mode 100644 index 0000000000..e8db477b9a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_magic_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_magic_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_mahogany_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_mahogany_sapling.json new file mode 100644 index 0000000000..4b972a25c5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_mahogany_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_mahogany_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_maple_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_maple_sapling.json new file mode 100644 index 0000000000..13a29bf110 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_maple_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_maple_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_orange_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_orange_autumn_sapling.json new file mode 100644 index 0000000000..5686e51f56 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_orange_autumn_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_orange_autumn_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_orange_cosmos.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_orange_cosmos.json new file mode 100644 index 0000000000..fe71b52e71 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_orange_cosmos.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_orange_cosmos" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_origin_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_origin_sapling.json new file mode 100644 index 0000000000..67e3bba31b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_origin_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_origin_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_palm_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_palm_sapling.json new file mode 100644 index 0000000000..68e7031285 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_palm_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_palm_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_cherry_sapling.json new file mode 100644 index 0000000000..20af6d9de2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_cherry_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_pink_cherry_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_daffodil.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_daffodil.json new file mode 100644 index 0000000000..4b91acbd0d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_daffodil.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_pink_daffodil" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_hibiscus.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_hibiscus.json new file mode 100644 index 0000000000..7a9c446e90 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_hibiscus.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_pink_hibiscus" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_rainbow_birch_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_rainbow_birch_sapling.json new file mode 100644 index 0000000000..097076e631 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_rainbow_birch_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_rainbow_birch_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_redwood_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_redwood_sapling.json new file mode 100644 index 0000000000..3b2b0af7d6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_redwood_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_redwood_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_rose.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_rose.json new file mode 100644 index 0000000000..dc0cef0a4e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_rose.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_rose" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_sprout.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_sprout.json new file mode 100644 index 0000000000..d117bde2ce --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_sprout.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_sprout" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_toadstool.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_toadstool.json new file mode 100644 index 0000000000..f18c29f9e2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_toadstool.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_toadstool" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_umbran_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_umbran_sapling.json new file mode 100644 index 0000000000..a9d2c8dd3e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_umbran_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_umbran_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_violet.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_violet.json new file mode 100644 index 0000000000..bcaaeb435d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_violet.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_violet" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_white_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_white_cherry_sapling.json new file mode 100644 index 0000000000..c173823e56 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_white_cherry_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_white_cherry_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_wildflower.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_wildflower.json new file mode 100644 index 0000000000..f789d47c48 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_wildflower.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_wildflower" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_willow_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_willow_sapling.json new file mode 100644 index 0000000000..8c5a991389 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_willow_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_willow_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_wilted_lily.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_wilted_lily.json new file mode 100644 index 0000000000..078e91100b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_wilted_lily.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_wilted_lily" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_yellow_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_yellow_autumn_sapling.json new file mode 100644 index 0000000000..e06c6b8118 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_yellow_autumn_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_yellow_autumn_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/rainbow_birch_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/rainbow_birch_leaves.json new file mode 100644 index 0000000000..1e911644ea --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/rainbow_birch_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/rainbow_birch_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/rainbow_birch_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/rainbow_birch_sapling.json new file mode 100644 index 0000000000..174b99c61f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/rainbow_birch_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/rainbow_birch_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_button.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_button.json new file mode 100644 index 0000000000..1df1152b44 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/redwood_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/redwood_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/redwood_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/redwood_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/redwood_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/redwood_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/redwood_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/redwood_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/redwood_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/redwood_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/redwood_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/redwood_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_door.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_door.json new file mode 100644 index 0000000000..021e91c729 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/redwood_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/redwood_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/redwood_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/redwood_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/redwood_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/redwood_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/redwood_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/redwood_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/redwood_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/redwood_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/redwood_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/redwood_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/redwood_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/redwood_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/redwood_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/redwood_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/redwood_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/redwood_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/redwood_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/redwood_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/redwood_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/redwood_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/redwood_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/redwood_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/redwood_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/redwood_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/redwood_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/redwood_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/redwood_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/redwood_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/redwood_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/redwood_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_fence.json new file mode 100644 index 0000000000..35db2bee44 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/redwood_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/redwood_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/redwood_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/redwood_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/redwood_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_fence_gate.json new file mode 100644 index 0000000000..145a93fcef --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/redwood_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/redwood_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/redwood_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/redwood_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/redwood_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/redwood_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/redwood_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/redwood_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/redwood_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/redwood_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/redwood_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/redwood_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/redwood_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/redwood_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/redwood_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/redwood_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_leaves.json new file mode 100644 index 0000000000..b4a760134d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/redwood_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_log.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_log.json new file mode 100644 index 0000000000..46380c20ed --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/redwood_log" }, + "axis=z": { "model": "biomesoplenty:block/redwood_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/redwood_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_planks.json new file mode 100644 index 0000000000..00ceb74377 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/redwood_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_pressure_plate.json new file mode 100644 index 0000000000..c54d5b25be --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/redwood_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/redwood_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_sapling.json new file mode 100644 index 0000000000..b0eae9bae8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/redwood_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_sign.json new file mode 100644 index 0000000000..bbda929f29 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/redwood_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_slab.json new file mode 100644 index 0000000000..90ae82e534 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/redwood_slab" }, + "type=top": { "model": "biomesoplenty:block/redwood_slab_top" }, + "type=double": { "model": "biomesoplenty:block/redwood_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_stairs.json new file mode 100644 index 0000000000..773c99559a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/redwood_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/redwood_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/redwood_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/redwood_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/redwood_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/redwood_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/redwood_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/redwood_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/redwood_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/redwood_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/redwood_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/redwood_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/redwood_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/redwood_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/redwood_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/redwood_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/redwood_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/redwood_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/redwood_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/redwood_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/redwood_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/redwood_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/redwood_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/redwood_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/redwood_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/redwood_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/redwood_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/redwood_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/redwood_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/redwood_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/redwood_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/redwood_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/redwood_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/redwood_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/redwood_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/redwood_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/redwood_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/redwood_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/redwood_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/redwood_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_trapdoor.json new file mode 100644 index 0000000000..4cb2f9f4f6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/redwood_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/redwood_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/redwood_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/redwood_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/redwood_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/redwood_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/redwood_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/redwood_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/redwood_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/redwood_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/redwood_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/redwood_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/redwood_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/redwood_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/redwood_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/redwood_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_wall_sign.json new file mode 100644 index 0000000000..bbda929f29 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/redwood_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_wood.json new file mode 100644 index 0000000000..de81f7adc2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/redwood_wood" }, + "axis=z": { "model": "biomesoplenty:block/redwood_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/redwood_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/reed.json b/src/main/resources/assets/biomesoplenty/blockstates/reed.json new file mode 100644 index 0000000000..9e6536950b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/reed.json @@ -0,0 +1,6 @@ +{ + "variants": { + "half=lower": { "model": "biomesoplenty:block/reed_bottom" }, + "half=upper": { "model": "biomesoplenty:block/reed_top" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/rose.json b/src/main/resources/assets/biomesoplenty/blockstates/rose.json new file mode 100644 index 0000000000..587d16e97f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/rose.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/rose" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone.json new file mode 100644 index 0000000000..9459a04064 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/smooth_black_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone_slab.json new file mode 100644 index 0000000000..b5f0a218d2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/smooth_black_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/smooth_black_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/smooth_black_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone_stairs.json new file mode 100644 index 0000000000..8a318aace4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone.json new file mode 100644 index 0000000000..7d7e3e1205 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/smooth_orange_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone_slab.json new file mode 100644 index 0000000000..7c678b3012 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/smooth_orange_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/smooth_orange_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/smooth_orange_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone_stairs.json new file mode 100644 index 0000000000..59c1954af6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone.json new file mode 100644 index 0000000000..8696791da9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/smooth_white_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone_slab.json new file mode 100644 index 0000000000..9fd8dc5cb6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/smooth_white_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/smooth_white_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/smooth_white_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone_stairs.json new file mode 100644 index 0000000000..ad6b020e0c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss.json b/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss.json new file mode 100644 index 0000000000..ee5026219d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "biomesoplenty:block/spanish_moss" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss_plant.json b/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss_plant.json new file mode 100644 index 0000000000..eadd58bd65 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss_plant.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "biomesoplenty:block/spanish_moss_plant" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/sprout.json b/src/main/resources/assets/biomesoplenty/blockstates/sprout.json new file mode 100644 index 0000000000..3b6ab115ed --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/sprout.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/sprout" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_cherry_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_cherry_log.json new file mode 100644 index 0000000000..a9b35537b4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_cherry_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_cherry_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_cherry_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_cherry_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_cherry_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_cherry_wood.json new file mode 100644 index 0000000000..8d45870853 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_cherry_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_cherry_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_cherry_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_cherry_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_dead_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_dead_log.json new file mode 100644 index 0000000000..5fc39dcba9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_dead_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_dead_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_dead_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_dead_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_dead_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_dead_wood.json new file mode 100644 index 0000000000..8554f7ba05 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_dead_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_dead_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_dead_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_dead_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_fir_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_fir_log.json new file mode 100644 index 0000000000..d17393c4b1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_fir_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_fir_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_fir_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_fir_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_fir_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_fir_wood.json new file mode 100644 index 0000000000..c3abbf6448 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_fir_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_fir_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_fir_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_fir_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_hellbark_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_hellbark_log.json new file mode 100644 index 0000000000..6d8c670cef --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_hellbark_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_hellbark_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_hellbark_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_hellbark_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_hellbark_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_hellbark_wood.json new file mode 100644 index 0000000000..76159735cd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_hellbark_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_hellbark_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_hellbark_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_hellbark_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_jacaranda_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_jacaranda_log.json new file mode 100644 index 0000000000..9334d1252f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_jacaranda_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_jacaranda_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_jacaranda_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_jacaranda_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_jacaranda_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_jacaranda_wood.json new file mode 100644 index 0000000000..610050d9b1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_jacaranda_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_jacaranda_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_jacaranda_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_jacaranda_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_magic_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_magic_log.json new file mode 100644 index 0000000000..3de974aa02 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_magic_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_magic_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_magic_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_magic_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_magic_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_magic_wood.json new file mode 100644 index 0000000000..6b73cb137e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_magic_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_magic_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_magic_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_magic_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_mahogany_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_mahogany_log.json new file mode 100644 index 0000000000..806d871843 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_mahogany_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_mahogany_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_mahogany_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_mahogany_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_mahogany_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_mahogany_wood.json new file mode 100644 index 0000000000..2eae01f098 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_mahogany_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_mahogany_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_mahogany_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_mahogany_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_palm_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_palm_log.json new file mode 100644 index 0000000000..ad33a138b2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_palm_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_palm_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_palm_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_palm_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_palm_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_palm_wood.json new file mode 100644 index 0000000000..12b30292ac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_palm_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_palm_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_palm_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_palm_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_redwood_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_redwood_log.json new file mode 100644 index 0000000000..fd865a14a4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_redwood_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_redwood_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_redwood_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_redwood_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_redwood_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_redwood_wood.json new file mode 100644 index 0000000000..f6b714e861 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_redwood_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_redwood_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_redwood_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_redwood_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_umbran_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_umbran_log.json new file mode 100644 index 0000000000..a91d9c441c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_umbran_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_umbran_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_umbran_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_umbran_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_umbran_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_umbran_wood.json new file mode 100644 index 0000000000..4c7110ad23 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_umbran_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_umbran_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_umbran_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_umbran_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_willow_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_willow_log.json new file mode 100644 index 0000000000..03205f7832 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_willow_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_willow_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_willow_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_willow_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_willow_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_willow_wood.json new file mode 100644 index 0000000000..d9529471a2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_willow_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_willow_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_willow_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_willow_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/toadstool.json b/src/main/resources/assets/biomesoplenty/blockstates/toadstool.json new file mode 100644 index 0000000000..b556849f47 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/toadstool.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/toadstool" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/toadstool_block.json b/src/main/resources/assets/biomesoplenty/blockstates/toadstool_block.json new file mode 100644 index 0000000000..42b80f0a7e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/toadstool_block.json @@ -0,0 +1,40 @@ +{ + "multipart": [ + { "when": { "north": true }, + "apply": { "model": "biomesoplenty:block/toadstool_block" } + }, + { "when": { "east": true }, + "apply": { "model": "biomesoplenty:block/toadstool_block", "y": 90, "uvlock": true } + }, + { "when": { "south": true }, + "apply": { "model": "biomesoplenty:block/toadstool_block", "y": 180, "uvlock": true } + }, + { "when": { "west": true }, + "apply": { "model": "biomesoplenty:block/toadstool_block", "y": 270, "uvlock": true } + }, + { "when": { "up": true }, + "apply": { "model": "biomesoplenty:block/toadstool_block", "x": 270, "uvlock": true } + }, + { "when": { "down": true }, + "apply": { "model": "biomesoplenty:block/toadstool_block", "x": 90, "uvlock": true } + }, + { "when": { "north": false }, + "apply": { "model": "block/mushroom_block_inside" } + }, + { "when": { "east": false }, + "apply": { "model": "block/mushroom_block_inside", "y": 90, "uvlock": false } + }, + { "when": { "south": false }, + "apply": { "model": "block/mushroom_block_inside", "y": 180, "uvlock": false } + }, + { "when": { "west": false }, + "apply": { "model": "block/mushroom_block_inside", "y": 270, "uvlock": false } + }, + { "when": { "up": false }, + "apply": { "model": "block/mushroom_block_inside", "x": 270, "uvlock": false } + }, + { "when": { "down": false }, + "apply": { "model": "block/mushroom_block_inside", "x": 90, "uvlock": false } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_button.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_button.json new file mode 100644 index 0000000000..4b1d63dcab --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/umbran_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/umbran_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/umbran_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/umbran_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/umbran_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/umbran_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/umbran_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/umbran_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/umbran_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/umbran_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/umbran_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/umbran_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_door.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_door.json new file mode 100644 index 0000000000..e2022a0185 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/umbran_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/umbran_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/umbran_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/umbran_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/umbran_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/umbran_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/umbran_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/umbran_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/umbran_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/umbran_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/umbran_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/umbran_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/umbran_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/umbran_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/umbran_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/umbran_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/umbran_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/umbran_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/umbran_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/umbran_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/umbran_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/umbran_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/umbran_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/umbran_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/umbran_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/umbran_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/umbran_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/umbran_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/umbran_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/umbran_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/umbran_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/umbran_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_fence.json new file mode 100644 index 0000000000..e52ae3cbf2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/umbran_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/umbran_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/umbran_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/umbran_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/umbran_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_fence_gate.json new file mode 100644 index 0000000000..be1858e0a8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/umbran_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/umbran_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/umbran_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/umbran_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/umbran_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/umbran_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/umbran_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/umbran_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/umbran_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/umbran_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/umbran_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/umbran_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/umbran_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/umbran_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/umbran_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/umbran_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_leaves.json new file mode 100644 index 0000000000..48184d361b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/umbran_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_log.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_log.json new file mode 100644 index 0000000000..21708c335e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_log.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=y": [ + { "model": "biomesoplenty:block/umbran_log" }, + { "model": "biomesoplenty:block/umbran_log_holes" } + ], + "axis=z": [ + { "model": "biomesoplenty:block/umbran_log", "x": 90 }, + { "model": "biomesoplenty:block/umbran_log_holes", "x": 90 } + ], + "axis=x": [ + { "model": "biomesoplenty:block/umbran_log", "x": 90, "y": 90 }, + { "model": "biomesoplenty:block/umbran_log_holes", "x": 90, "y": 90 } + ] + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_planks.json new file mode 100644 index 0000000000..e04be96fb3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/umbran_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_pressure_plate.json new file mode 100644 index 0000000000..6736b629e0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/umbran_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/umbran_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_sapling.json new file mode 100644 index 0000000000..0b38a5ae60 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/umbran_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_sign.json new file mode 100644 index 0000000000..b4c0ff2b3e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/umbran_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_slab.json new file mode 100644 index 0000000000..0956fa6c50 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/umbran_slab" }, + "type=top": { "model": "biomesoplenty:block/umbran_slab_top" }, + "type=double": { "model": "biomesoplenty:block/umbran_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_stairs.json new file mode 100644 index 0000000000..46ca3e05c2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/umbran_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/umbran_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/umbran_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/umbran_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/umbran_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/umbran_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/umbran_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/umbran_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/umbran_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/umbran_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/umbran_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/umbran_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/umbran_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/umbran_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/umbran_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/umbran_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/umbran_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/umbran_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/umbran_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/umbran_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/umbran_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/umbran_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/umbran_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/umbran_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/umbran_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/umbran_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/umbran_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/umbran_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/umbran_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/umbran_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/umbran_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/umbran_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/umbran_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/umbran_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/umbran_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/umbran_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/umbran_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/umbran_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/umbran_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/umbran_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_trapdoor.json new file mode 100644 index 0000000000..aa46bffed8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/umbran_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/umbran_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/umbran_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/umbran_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/umbran_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/umbran_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/umbran_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/umbran_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/umbran_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/umbran_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/umbran_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/umbran_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/umbran_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/umbran_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/umbran_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/umbran_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_wall_sign.json new file mode 100644 index 0000000000..b4c0ff2b3e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/umbran_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_wood.json new file mode 100644 index 0000000000..93f78323e2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_wood.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=y": [ + { "model": "biomesoplenty:block/umbran_wood" }, + { "model": "biomesoplenty:block/umbran_wood_holes" } + ], + "axis=z": [ + { "model": "biomesoplenty:block/umbran_wood", "x": 90 }, + { "model": "biomesoplenty:block/umbran_wood_holes", "x": 90 } + ], + "axis=x": [ + { "model": "biomesoplenty:block/umbran_wood", "x": 90, "y": 90 }, + { "model": "biomesoplenty:block/umbran_wood_holes", "x": 90, "y": 90 } + ] + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/violet.json b/src/main/resources/assets/biomesoplenty/blockstates/violet.json new file mode 100644 index 0000000000..e7d83ae757 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/violet.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/violet" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/watergrass.json b/src/main/resources/assets/biomesoplenty/blockstates/watergrass.json new file mode 100644 index 0000000000..a9d55a78cc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/watergrass.json @@ -0,0 +1,6 @@ +{ + "variants": { + "half=lower": { "model": "biomesoplenty:block/watergrass_bottom" }, + "half=upper": { "model": "biomesoplenty:block/watergrass_top" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/white_cherry_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/white_cherry_leaves.json new file mode 100644 index 0000000000..4af35ebb81 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/white_cherry_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/white_cherry_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/white_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/white_cherry_sapling.json new file mode 100644 index 0000000000..178be90335 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/white_cherry_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/white_cherry_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/white_sand.json b/src/main/resources/assets/biomesoplenty/blockstates/white_sand.json new file mode 100644 index 0000000000..af7cbd4f35 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/white_sand.json @@ -0,0 +1,10 @@ +{ + "variants": { + "": [ + { "model": "biomesoplenty:block/white_sand" }, + { "model": "biomesoplenty:block/white_sand", "y": 90 }, + { "model": "biomesoplenty:block/white_sand", "y": 180 }, + { "model": "biomesoplenty:block/white_sand", "y": 270 } + ] + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone.json new file mode 100644 index 0000000000..0f0404843e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/white_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_slab.json new file mode 100644 index 0000000000..c1a01d4bcf --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/white_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/white_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/white_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_stairs.json new file mode 100644 index 0000000000..931c3e6990 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/white_sandstone_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/white_sandstone_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/white_sandstone_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/white_sandstone_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/white_sandstone_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/white_sandstone_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/white_sandstone_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/white_sandstone_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/white_sandstone_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/white_sandstone_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/white_sandstone_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/white_sandstone_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_wall.json b/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_wall.json new file mode 100644 index 0000000000..1a2cad9b40 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/wildflower.json b/src/main/resources/assets/biomesoplenty/blockstates/wildflower.json new file mode 100644 index 0000000000..9b180a882a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/wildflower.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/wildflower" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_button.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_button.json new file mode 100644 index 0000000000..b3283e1efc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/willow_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/willow_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/willow_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/willow_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/willow_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/willow_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/willow_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/willow_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/willow_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/willow_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/willow_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/willow_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/willow_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_door.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_door.json new file mode 100644 index 0000000000..eaefa391bf --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/willow_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/willow_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/willow_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/willow_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/willow_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/willow_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/willow_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/willow_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/willow_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/willow_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/willow_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/willow_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/willow_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/willow_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/willow_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/willow_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/willow_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/willow_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/willow_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/willow_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/willow_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/willow_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/willow_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/willow_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/willow_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/willow_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/willow_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/willow_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/willow_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/willow_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/willow_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/willow_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_fence.json new file mode 100644 index 0000000000..b033a280f2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/willow_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/willow_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/willow_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/willow_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/willow_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_fence_gate.json new file mode 100644 index 0000000000..4297217a2d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/willow_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/willow_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/willow_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/willow_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/willow_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/willow_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/willow_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/willow_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/willow_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/willow_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/willow_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/willow_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/willow_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/willow_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/willow_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/willow_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_leaves.json new file mode 100644 index 0000000000..13e730e3af --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/willow_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_log.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_log.json new file mode 100644 index 0000000000..3d59b10ece --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/willow_log" }, + "axis=z": { "model": "biomesoplenty:block/willow_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/willow_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_planks.json new file mode 100644 index 0000000000..03b6fb9c89 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/willow_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_pressure_plate.json new file mode 100644 index 0000000000..eb6ac34a03 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/willow_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/willow_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_sapling.json new file mode 100644 index 0000000000..885feb188d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/willow_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_sign.json new file mode 100644 index 0000000000..00d90a30a8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/willow_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_slab.json new file mode 100644 index 0000000000..5a81d4feb2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/willow_slab" }, + "type=top": { "model": "biomesoplenty:block/willow_slab_top" }, + "type=double": { "model": "biomesoplenty:block/willow_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_stairs.json new file mode 100644 index 0000000000..59e482b2f3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/willow_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/willow_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/willow_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/willow_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/willow_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/willow_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/willow_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/willow_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/willow_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/willow_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/willow_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/willow_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/willow_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/willow_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/willow_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/willow_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/willow_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/willow_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/willow_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/willow_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/willow_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/willow_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/willow_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/willow_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/willow_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/willow_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/willow_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/willow_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/willow_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/willow_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/willow_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/willow_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/willow_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/willow_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/willow_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/willow_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/willow_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/willow_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/willow_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/willow_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_trapdoor.json new file mode 100644 index 0000000000..360cf5d6e6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/willow_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/willow_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/willow_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/willow_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/willow_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/willow_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/willow_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/willow_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/willow_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/willow_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/willow_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/willow_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/willow_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/willow_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/willow_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/willow_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_vine.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_vine.json new file mode 100644 index 0000000000..00383e93d6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_vine.json @@ -0,0 +1,36 @@ +{ + "variants": { + "east=false,north=false,south=false,up=false,west=false": { "model": "biomesoplenty:block/willow_vine_1" }, + "east=false,north=false,south=true,up=false,west=false": { "model": "biomesoplenty:block/willow_vine_1" }, + "east=false,north=false,south=false,up=false,west=true": { "model": "biomesoplenty:block/willow_vine_1", "y": 90 }, + "east=false,north=true,south=false,up=false,west=false": { "model": "biomesoplenty:block/willow_vine_1", "y": 180 }, + "east=true,north=false,south=false,up=false,west=false": { "model": "biomesoplenty:block/willow_vine_1", "y": 270 }, + "east=true,north=true,south=false,up=false,west=false": { "model": "biomesoplenty:block/willow_vine_2" }, + "east=true,north=false,south=true,up=false,west=false": { "model": "biomesoplenty:block/willow_vine_2", "y": 90 }, + "east=false,north=false,south=true,up=false,west=true": { "model": "biomesoplenty:block/willow_vine_2", "y": 180 }, + "east=false,north=true,south=false,up=false,west=true": { "model": "biomesoplenty:block/willow_vine_2", "y": 270 }, + "east=true,north=false,south=false,up=false,west=true": { "model": "biomesoplenty:block/willow_vine_2_opposite" }, + "east=false,north=true,south=true,up=false,west=false": { "model": "biomesoplenty:block/willow_vine_2_opposite", "y": 90 }, + "east=true,north=true,south=true,up=false,west=false": { "model": "biomesoplenty:block/willow_vine_3" }, + "east=true,north=false,south=true,up=false,west=true": { "model": "biomesoplenty:block/willow_vine_3", "y": 90 }, + "east=false,north=true,south=true,up=false,west=true": { "model": "biomesoplenty:block/willow_vine_3", "y": 180 }, + "east=true,north=true,south=false,up=false,west=true": { "model": "biomesoplenty:block/willow_vine_3", "y": 270 }, + "east=true,north=true,south=true,up=false,west=true": { "model": "biomesoplenty:block/willow_vine_4" }, + "east=false,north=false,south=false,up=true,west=false": { "model": "biomesoplenty:block/willow_vine_u" }, + "east=false,north=false,south=true,up=true,west=false": { "model": "biomesoplenty:block/willow_vine_1u" }, + "east=false,north=false,south=false,up=true,west=true": { "model": "biomesoplenty:block/willow_vine_1u", "y": 90 }, + "east=false,north=true,south=false,up=true,west=false": { "model": "biomesoplenty:block/willow_vine_1u", "y": 180 }, + "east=true,north=false,south=false,up=true,west=false": { "model": "biomesoplenty:block/willow_vine_1u", "y": 270 }, + "east=true,north=true,south=false,up=true,west=false": { "model": "biomesoplenty:block/willow_vine_2u" }, + "east=true,north=false,south=true,up=true,west=false": { "model": "biomesoplenty:block/willow_vine_2u", "y": 90 }, + "east=false,north=false,south=true,up=true,west=true": { "model": "biomesoplenty:block/willow_vine_2u", "y": 180 }, + "east=false,north=true,south=false,up=true,west=true": { "model": "biomesoplenty:block/willow_vine_2u", "y": 270 }, + "east=true,north=false,south=false,up=true,west=true": { "model": "biomesoplenty:block/willow_vine_2u_opposite" }, + "east=false,north=true,south=true,up=true,west=false": { "model": "biomesoplenty:block/willow_vine_2u_opposite", "y": 90 }, + "east=true,north=true,south=true,up=true,west=false": { "model": "biomesoplenty:block/willow_vine_3u" }, + "east=true,north=false,south=true,up=true,west=true": { "model": "biomesoplenty:block/willow_vine_3u", "y": 90 }, + "east=false,north=true,south=true,up=true,west=true": { "model": "biomesoplenty:block/willow_vine_3u", "y": 180 }, + "east=true,north=true,south=false,up=true,west=true": { "model": "biomesoplenty:block/willow_vine_3u", "y": 270 }, + "east=true,north=true,south=true,up=true,west=true": { "model": "biomesoplenty:block/willow_vine_4u" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_wall_sign.json new file mode 100644 index 0000000000..00d90a30a8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/willow_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_wood.json new file mode 100644 index 0000000000..801cdb76da --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/willow_wood" }, + "axis=z": { "model": "biomesoplenty:block/willow_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/willow_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/wilted_lily.json b/src/main/resources/assets/biomesoplenty/blockstates/wilted_lily.json new file mode 100644 index 0000000000..301ef9e223 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/wilted_lily.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/wilted_lily" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/yellow_autumn_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/yellow_autumn_leaves.json new file mode 100644 index 0000000000..dd7ec9b93e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/yellow_autumn_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/yellow_autumn_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/yellow_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/yellow_autumn_sapling.json new file mode 100644 index 0000000000..1f4ab1a758 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/yellow_autumn_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/yellow_autumn_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/lang/de_de.json b/src/main/resources/assets/biomesoplenty/lang/de_de.json new file mode 100644 index 0000000000..bf619ddac6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/de_de.json @@ -0,0 +1,416 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Der Traum eines Entdeckers...", + "advancements.biomesoplenty.all_biomes.title": "Wanderer", + "advancements.biomesoplenty.all_biomes.description": "Entdecke jedes Biom in Biomes O' Plenty", + + "generator.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alpen", + "biome.biomesoplenty.alps_foothills": "Voralpen", + "biome.biomesoplenty.bamboo_blossom_grove": "Blühender Bambushain", + "biome.biomesoplenty.bayou": "Stillgewässer", + "biome.biomesoplenty.bayou_mangrove": "Mangrovensumpf", + "biome.biomesoplenty.burnt_forest": "Verbrannter Wald", + "biome.biomesoplenty.cherry_blossom_grove": "Kirschblütenhain", + "biome.biomesoplenty.cold_desert": "Kalte Wüste", + "biome.biomesoplenty.coniferous_forest": "Nadelwald", + "biome.biomesoplenty.coniferous_lakes": "Nadelwald See", + "biome.biomesoplenty.crystalline_chasm": "Kristalline Kluft", + "biome.biomesoplenty.dead_forest": "Ausgestorbener Wald", + "biome.biomesoplenty.dead_swamp": "Toter Sumpf", + "biome.biomesoplenty.deep_bayou": "Tiefes Stillgewässer", + "biome.biomesoplenty.dryland": "Trockengebiet", + "biome.biomesoplenty.dry_boneyard": "Vetrockneter Friedhof", + "biome.biomesoplenty.fir_clearing": "Nadelwald Lichtung", + "biome.biomesoplenty.flower_meadow": "Blumenwiese", + "biome.biomesoplenty.fungal_field": "Pilz Felder", + "biome.biomesoplenty.fungal_jungle": "Pilz Dschungel", + "biome.biomesoplenty.golden_prairie": "Golden Prärie", + "biome.biomesoplenty.gravel_beach": "Kies Strand", + "biome.biomesoplenty.grove": "Hain", + "biome.biomesoplenty.grove_clearing": "Hain Lichtung", + "biome.biomesoplenty.grove_lakes": "Hain See", + "biome.biomesoplenty.highland": "Hochland", + "biome.biomesoplenty.highland_crag": "Hochlandklippe", + "biome.biomesoplenty.highland_moor": "Hochlandmoor", + "biome.biomesoplenty.jade_cliffs": "Jade Klippen", + "biome.biomesoplenty.jade_grassland": "Jade Grasland", + "biome.biomesoplenty.lavender_field": "Lavendelwiese", + "biome.biomesoplenty.lavender_forest": "Lavendelwald", + "biome.biomesoplenty.lush_desert": "Bewachsene Wüste", + "biome.biomesoplenty.lush_savanna": "Üppige Savanne", + "biome.biomesoplenty.meadow": "Wiese", + "biome.biomesoplenty.meadow_forest": "Waldwiese", + "biome.biomesoplenty.mystic_grove": "Mystischer Hain", + "biome.biomesoplenty.mystic_plains": "Mystische Ebene", + "biome.biomesoplenty.ominous_mire": "Bedrohlicher Schlamm", + "biome.biomesoplenty.ominous_woods": "Unheilvoller Wlad", + "biome.biomesoplenty.orchard": "Obstwiese", + "biome.biomesoplenty.origin_valley": "Original Tal", + "biome.biomesoplenty.overgrown_fungal_jungle": "Überwucherter Pilzdschungel", + "biome.biomesoplenty.prairie": "Prärie", + "biome.biomesoplenty.rainbow_hills": "Regenbogen Hügel", + "biome.biomesoplenty.rainforest": "Regenwald", + "biome.biomesoplenty.rainforest_cliffs": "Regenwald Klippen", + "biome.biomesoplenty.rainforest_floodplain": "Überschwemmter Regenwald", + "biome.biomesoplenty.redwood_forest": "Rotholzwald", + "biome.biomesoplenty.redwood_forest_edge": "Rotholzwaldrand", + "biome.biomesoplenty.redwood_hills": "Rotholzwaldhügel", + "biome.biomesoplenty.scrubland": "Strauchsteppe", + "biome.biomesoplenty.seasonal_forest": "Herbstwald", + "biome.biomesoplenty.seasonal_orchard": "Herbstliche Obstwiese", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Herbstliches Kürbisfeld", + "biome.biomesoplenty.shrubland": "Buschland", + "biome.biomesoplenty.shrubland_hills": "Buschlandhügel", + "biome.biomesoplenty.silkglade": "Spinnenwald", + "biome.biomesoplenty.silkglade_nest": "Spinnenwald Nest", + "biome.biomesoplenty.snowy_coniferous_forest": "Verschneiter Nadelwald", + "biome.biomesoplenty.snowy_fir_clearing": "Verschneite Tannenwald Lichtung", + "biome.biomesoplenty.snowy_maple_forest": "Verschneiter Ahornwald", + "biome.biomesoplenty.tropic_beach": "Tropischer Strand", + "biome.biomesoplenty.tropic_plains": "Tropische Ebene", + "biome.biomesoplenty.tropics": "Tropen", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.tundra_basin": "Tundra Becken", + "biome.biomesoplenty.tundra_bog": "Tundra Moor", + "biome.biomesoplenty.undergrowth": "Unnterwuchs", + "biome.biomesoplenty.visceral_heap": "Eingeweide", + "biome.biomesoplenty.volcanic_plains": "Vulkanebene", + "biome.biomesoplenty.volcano": "Vulkan", + "biome.biomesoplenty.wasteland": "Ödland", + "biome.biomesoplenty.wetland": "Feuchtgebiet", + "biome.biomesoplenty.wetland_marsh": "Sumpfiges Feuchtgebiet", + "biome.biomesoplenty.withered_abyss": "Wither Abgrund", + "biome.biomesoplenty.wooded_scrubland": "Verholzte Strauchsteppe", + "biome.biomesoplenty.wooded_wasteland": "Verholztes Ödland", + + "item.biomesoplenty.bop_icon": "BOP Icon", + "item.biomesoplenty.cherry_boat": "Kirschholzboot", + "item.biomesoplenty.dead_boat": "Totholzboot", + "item.biomesoplenty.fir_boat": "Tannenholzboot", + "item.biomesoplenty.hellbark_boat": "Höllenborkenboot", + "item.biomesoplenty.jacaranda_boat": "Palisanderholzboot", + "item.biomesoplenty.magic_boat": "Zauberholzboot", + "item.biomesoplenty.mahogany_boat": "Mahagoniholzboot", + "item.biomesoplenty.mud_ball": "Schlammklumpen", + "item.biomesoplenty.mud_brick": "Schlammziegel", + "item.biomesoplenty.music_disc_wanderer": "Schallplatte", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Palmenholzboot", + "item.biomesoplenty.redwood_boat": "Rotholzboot", + "item.biomesoplenty.umbran_boat": "Schattenholzboot", + "item.biomesoplenty.willow_boat": "Weidenholzboot", + + "block.biomesoplenty.barley": "Gerste", + "block.biomesoplenty.black_sand": "Schwarzer Sand", + "block.biomesoplenty.black_sandstone": "Schwarzer Sandstein", + "block.biomesoplenty.black_sandstone_slab": "Schwarze Sandsteinstufe", + "block.biomesoplenty.black_sandstone_stairs": "Schwarze Sandsteintreppe", + "block.biomesoplenty.black_sandstone_wall": "Schwarze Sandsteinmauer", + "block.biomesoplenty.blue_hydrangea": "Blaue Hortensie", + "block.biomesoplenty.bramble": "Gestrüp", + "block.biomesoplenty.burning_blossom": "Brandblüte", + "block.biomesoplenty.bush": "Busch", + "block.biomesoplenty.cattail": "Rohrkolben", + "block.biomesoplenty.cherry_button": "Kirschholzknopf", + "block.biomesoplenty.cherry_door": "Kirschholztür", + "block.biomesoplenty.cherry_fence": "Kirschholzzaun", + "block.biomesoplenty.cherry_fence_gate": "Kirschholzzauntor", + "block.biomesoplenty.cherry_log": "Kirschbaumstamm", + "block.biomesoplenty.cherry_planks": "Kirschholzpretter", + "block.biomesoplenty.cherry_pressure_plate": "Kirschholzdruckplatte", + "block.biomesoplenty.cherry_sign": "Kirschholzschild", + "block.biomesoplenty.cherry_slab": "Kirschholzstufe", + "block.biomesoplenty.cherry_stairs": "Kirschholztreppe", + "block.biomesoplenty.cherry_trapdoor": "Kirschholzfalltür", + "block.biomesoplenty.cherry_wall_sign": "Kirschholzwandschild", + "block.biomesoplenty.cherry_wood": "Kirschholz", + "block.biomesoplenty.chiseled_black_sandstone": "Gemeißelter schwarzer Sandstein", + "block.biomesoplenty.cut_black_sandstone": "Geschnittener schwarzer Sandstein", + "block.biomesoplenty.cut_black_sandstone_slab": "Geschnittene schwarze Sandsteinstufe", + "block.biomesoplenty.chiseled_orange_sandstone": "Gemeißelter orangener Sandstein", + "block.biomesoplenty.cut_orange_sandstone": "Geschnittener orangener Sandstein", + "block.biomesoplenty.cut_orange_sandstone_slab": "Geschnittene orangene Sandsteinstufe", + "block.biomesoplenty.chiseled_white_sandstone": "Gemeißelter weißer Sandstein", + "block.biomesoplenty.cut_white_sandstone": "Geschnittener weißer Sandstein", + "block.biomesoplenty.cut_white_sandstone_slab": "Geschnittene weiße Sandsteinstufe", + "block.biomesoplenty.dead_branch": "Toter Ast", + "block.biomesoplenty.dead_button": "Totholzknopf", + "block.biomesoplenty.dead_door": "Totholztür", + "block.biomesoplenty.dead_fence": "Totholzzaun", + "block.biomesoplenty.dead_fence_gate": "Totholzzauntor", + "block.biomesoplenty.dead_grass": "Verwelktes Gras", + "block.biomesoplenty.dead_leaves": "Verwelktes Laub", + "block.biomesoplenty.dead_log": "Totenbaumstamm", + "block.biomesoplenty.dead_planks": "Totholzbretter", + "block.biomesoplenty.dead_pressure_plate": "Totholzdruckplatte", + "block.biomesoplenty.dead_sapling": "Verwelkter Setzling", + "block.biomesoplenty.dead_sign": "Totholzschild", + "block.biomesoplenty.dead_slab": "Totholzstufe", + "block.biomesoplenty.dead_stairs": "Totholztreppe", + "block.biomesoplenty.dead_trapdoor": "Totholzfalltür", + "block.biomesoplenty.dead_wall_sign": "Totholzwandschild", + "block.biomesoplenty.dead_wood": "Totholz", + "block.biomesoplenty.desert_grass": "Wüstengras", + "block.biomesoplenty.dried_sand": "Getrockneter Sand", + "block.biomesoplenty.dune_grass": "Dünengras", + "block.biomesoplenty.fir_button": "Tannenholzknopf", + "block.biomesoplenty.fir_door": "Tannenholztür", + "block.biomesoplenty.fir_fence": "Tannenholzzaun", + "block.biomesoplenty.fir_fence_gate": "Tannenzauntor", + "block.biomesoplenty.fir_leaves": "Tannennadeln", + "block.biomesoplenty.fir_log": "Tannenbaumstamm", + "block.biomesoplenty.fir_planks": "Tannenholzbretter", + "block.biomesoplenty.fir_pressure_plate": "Tannenholzdruckplatte", + "block.biomesoplenty.fir_sapling": "Tannenbaumsetzling", + "block.biomesoplenty.fir_sign": "Tannenholzschild", + "block.biomesoplenty.fir_slab": "Tannenholzstufe", + "block.biomesoplenty.fir_stairs": "Tannenholztreppe", + "block.biomesoplenty.fir_trapdoor": "Tannenholzfalltür", + "block.biomesoplenty.fir_wall_sign": "Tannenholzwandschild", + "block.biomesoplenty.fir_wood": "Tannenholz", + "block.biomesoplenty.flesh": "Fleisch", + "block.biomesoplenty.flowering_oak_leaves": "Blühendes Eichenlaub", + "block.biomesoplenty.flowering_oak_sapling": "Blühender Eichensetzling", + "block.biomesoplenty.glowflower": "Leuchtblume", + "block.biomesoplenty.glowshroom": "Leuchtpilz", + "block.biomesoplenty.glowshroom_block": "Leuchtpilz Block", + "block.biomesoplenty.goldenrod": "Goldrute", + "block.biomesoplenty.hellbark_button": "Höllenborkenknopf", + "block.biomesoplenty.hellbark_door": "Höllenborkentür", + "block.biomesoplenty.hellbark_fence": "Höllenborkenzaun", + "block.biomesoplenty.hellbark_fence_gate": "Höllenborkenzauntor", + "block.biomesoplenty.hellbark_leaves": "Höllenborkenlaub", + "block.biomesoplenty.hellbark_log": "Höllenborkenstamm", + "block.biomesoplenty.hellbark_planks": "Höllenborkenbretter", + "block.biomesoplenty.hellbark_pressure_plate": "Höllenborkendruckplatte", + "block.biomesoplenty.hellbark_sapling": "Höllenborkensetzling", + "block.biomesoplenty.hellbark_sign": "Höllenborkenschild", + "block.biomesoplenty.hellbark_slab": "Höllenborkenstufe", + "block.biomesoplenty.hellbark_stairs": "Höllenborkentreppe", + "block.biomesoplenty.hellbark_trapdoor": "Höllenborkenfalltür", + "block.biomesoplenty.hellbark_wall_sign": "Höllenborkenwandschild", + "block.biomesoplenty.hellbark_wood": "Höllenborke", + "block.biomesoplenty.jacaranda_button": "Palisanderholzknopf", + "block.biomesoplenty.jacaranda_door": "Palisanderholztür", + "block.biomesoplenty.jacaranda_fence": "Palisanderholzzaun", + "block.biomesoplenty.jacaranda_fence_gate": "Palisanderholzzauntor", + "block.biomesoplenty.jacaranda_leaves": "Palisanderlaub", + "block.biomesoplenty.jacaranda_log": "Palisanderstamm", + "block.biomesoplenty.jacaranda_planks": "Palisanderholzbretter", + "block.biomesoplenty.jacaranda_pressure_plate": "Palisanderholzdruckplatte", + "block.biomesoplenty.jacaranda_sapling": "Palisandersetzling", + "block.biomesoplenty.jacaranda_sign": "Palisanderholzschild", + "block.biomesoplenty.jacaranda_slab": "Palisanderholzstufe", + "block.biomesoplenty.jacaranda_stairs": "Palisanderholztreppe", + "block.biomesoplenty.jacaranda_trapdoor": "Palisanderholzfalltür", + "block.biomesoplenty.jacaranda_wall_sign": "Palisanderholzwandschild", + "block.biomesoplenty.jacaranda_wood": "Palisanderholz", + "block.biomesoplenty.lavender": "Lavendel", + "block.biomesoplenty.magic_button": "Zauberholzknopf", + "block.biomesoplenty.magic_door": "Zauberholztür", + "block.biomesoplenty.magic_fence": "Zauberholzzaun", + "block.biomesoplenty.magic_fence_gate": "Zauberholzzauntor", + "block.biomesoplenty.magic_leaves": "Zauberbaumlaub", + "block.biomesoplenty.magic_log": "Zauberbaumstamm", + "block.biomesoplenty.magic_planks": "Zauberholzbretter", + "block.biomesoplenty.magic_pressure_plate": "Zauberholzdruckplatte", + "block.biomesoplenty.magic_sapling": "Zauberbaumsetzling", + "block.biomesoplenty.magic_sign": "Zauberholzschild", + "block.biomesoplenty.magic_slab": "Zauberholzstufe", + "block.biomesoplenty.magic_stairs": "Zauberholztreppe", + "block.biomesoplenty.magic_trapdoor": "Zauberholzfalltür", + "block.biomesoplenty.magic_wall_sign": "Zauberholzwandschild", + "block.biomesoplenty.magic_wood": "Zauberholz", + "block.biomesoplenty.mahogany_button": "Mahagoniholzknopf", + "block.biomesoplenty.mahogany_door": "Mahagoniholztür", + "block.biomesoplenty.mahogany_fence": "Mahagoniholzzaun", + "block.biomesoplenty.mahogany_fence_gate": "Mahagoniholzzauntor", + "block.biomesoplenty.mahogany_leaves": "Mahagonilaub", + "block.biomesoplenty.mahogany_log": "Mahagonistamm", + "block.biomesoplenty.mahogany_planks": "Mahagoniholzbretter", + "block.biomesoplenty.mahogany_pressure_plate": "Mahagoniholzdruckplatte", + "block.biomesoplenty.mahogany_sapling": "Mahagonisetzling", + "block.biomesoplenty.mahogany_sign": "Mahagoniholzschild", + "block.biomesoplenty.mahogany_slab": "Mahagoniholzstufe", + "block.biomesoplenty.mahogany_stairs": "Mahagoniholztreppe", + "block.biomesoplenty.mahogany_trapdoor": "Mahagoniholzfalltür", + "block.biomesoplenty.mahogany_wall_sign": "Mahagoniholzwandschild", + "block.biomesoplenty.mahogany_wood": "Mahagoniholz", + "block.biomesoplenty.mangrove_root": "Mangrovenwurzel", + "block.biomesoplenty.maple_leaves": "Ahornlaub", + "block.biomesoplenty.maple_sapling": "Ahornsetzling", + "block.biomesoplenty.mud": "Schlamm", + "block.biomesoplenty.mud_brick_slab": "Schlammziegelstufe", + "block.biomesoplenty.mud_brick_stairs": "Schlammziegeltreppe", + "block.biomesoplenty.mud_brick_wall": "Schlammziegelmauer", + "block.biomesoplenty.mud_bricks": "Schlammziegel", + "block.biomesoplenty.nether_crystal": "Netherkristall", + "block.biomesoplenty.nether_crystal_block": "Netherkristall Block", + "block.biomesoplenty.orange_autumn_leaves": "Oranges Herbstlaub", + "block.biomesoplenty.orange_autumn_sapling": "Oranger Herbstbaumsetzling", + "block.biomesoplenty.orange_cosmos": "Orange Kosmee", + "block.biomesoplenty.orange_sand": "Orangener Sand", + "block.biomesoplenty.orange_sandstone": "Orangener Sandstein", + "block.biomesoplenty.orange_sandstone_slab": "Orangene Sandsteinstufe", + "block.biomesoplenty.orange_sandstone_stairs": "Orangene Sandsteintreppe", + "block.biomesoplenty.orange_sandstone_wall": "Orangene Sandsteinmauer", + "block.biomesoplenty.origin_grass_block": "Originalgras Block", + "block.biomesoplenty.origin_leaves": "Originallaub", + "block.biomesoplenty.origin_sapling": "Originalsetzling", + "block.biomesoplenty.palm_button": "Palmenholzknopf", + "block.biomesoplenty.palm_door": "Palmenholztür", + "block.biomesoplenty.palm_fence": "Palmenholzzaun", + "block.biomesoplenty.palm_fence_gate": "Palmenholzzauntor", + "block.biomesoplenty.palm_leaves": "Palmenlaub", + "block.biomesoplenty.palm_log": "Palmenstamm", + "block.biomesoplenty.palm_planks": "Palmenholzbretter", + "block.biomesoplenty.palm_pressure_plate": "Palmenholzdruckplatte", + "block.biomesoplenty.palm_sapling": "Palmensetzling", + "block.biomesoplenty.palm_sign": "Palmenholzschild", + "block.biomesoplenty.palm_slab": "Palmenholzstufe", + "block.biomesoplenty.palm_stairs": "Palmenholztreppe", + "block.biomesoplenty.palm_trapdoor": "Palmenholzfalltür", + "block.biomesoplenty.palm_wall_sign": "Palmenholzwandschild", + "block.biomesoplenty.palm_wood": "Palmenholz", + "block.biomesoplenty.pink_cherry_leaves": "Pinkes Kirschlaub", + "block.biomesoplenty.pink_cherry_sapling": "Pinker Kirschsetzling", + "block.biomesoplenty.pink_daffodil": "Pinke Narzisse", + "block.biomesoplenty.pink_hibiscus": "Pinker Hibiscus", + "block.biomesoplenty.potted_burning_blossom": "Getopfte Brandblüte", + "block.biomesoplenty.potted_dead_sapling": "Getopfter verwelkter Setzling", + "block.biomesoplenty.potted_fir_sapling": "Getopfter Tannenbaumsetzling", + "block.biomesoplenty.potted_flowering_oak_sapling": "Getopfter Blühender Eichensetzling", + "block.biomesoplenty.potted_glowflower": "Getopfte Leuchtblume", + "block.biomesoplenty.potted_glowshroom": "Getopfter Leuchtpilz", + "block.biomesoplenty.potted_hellbark_sapling": "Getopfter Höllenborkensetzling", + "block.biomesoplenty.potted_jacaranda_sapling": "Getopfter Palisandersetzling", + "block.biomesoplenty.potted_lavender": "Getopfter Lavendel", + "block.biomesoplenty.potted_magic_sapling": "Getopfter Zauberbaumsetzling", + "block.biomesoplenty.potted_mahogany_sapling": "Getopfter Mahagonisetzling", + "block.biomesoplenty.potted_maple_sapling": "Getopfter Ahornsetzling", + "block.biomesoplenty.potted_orange_autumn_sapling": "Getopfter Orangener Herbstbaumsetzling", + "block.biomesoplenty.potted_orange_cosmos": "Getopfte Orangene Kosmee", + "block.biomesoplenty.potted_origin_sapling": "Getopfter Originalholzsetzling", + "block.biomesoplenty.potted_palm_sapling": "Getopfter Palmensetzling", + "block.biomesoplenty.potted_pink_cherry_sapling": "Getopfter Pinker Kirschsetzling", + "block.biomesoplenty.potted_pink_daffodil": "Getopfter Pinke Narzisse", + "block.biomesoplenty.potted_pink_hibiscus": "Getopfter Pinker Hibiscus", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Getopfter Regenbogen Birkenholzsetzling", + "block.biomesoplenty.potted_redwood_sapling": "Getopfter Rotholzsetzling", + "block.biomesoplenty.potted_rose": "Getopfter Rose", + "block.biomesoplenty.potted_sprout": "Getopfte Sprosse", + "block.biomesoplenty.potted_toadstool": "Getopfter Pilz", + "block.biomesoplenty.potted_umbran_sapling": "Getopfter Schattenbaumsetzling", + "block.biomesoplenty.potted_violet": "Getopfte Veilchen", + "block.biomesoplenty.potted_white_cherry_sapling": "Getopfter Weißer Kirschsetzling", + "block.biomesoplenty.potted_wildflower": "Getopfter Wildblume", + "block.biomesoplenty.potted_willow_sapling": "Getopfter Weidensetzling", + "block.biomesoplenty.potted_wilted_lily": "Getopfte Verwelkte Lilie", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Getopfter Gelber Herbstbaumsetzling", + "block.biomesoplenty.rainbow_birch_leaves": "Regenbogen Birkenholzblätter", + "block.biomesoplenty.rainbow_birch_sapling": "Regenbogen Birkenholzsetzling", + "block.biomesoplenty.redwood_button": "Rotholzknopf", + "block.biomesoplenty.redwood_door": "Rotholztür", + "block.biomesoplenty.redwood_fence": "Rotholzzaun", + "block.biomesoplenty.redwood_fence_gate": "Rotholzzauntor", + "block.biomesoplenty.redwood_leaves": "Rotholzlaub", + "block.biomesoplenty.redwood_log": "Rotholzstamm", + "block.biomesoplenty.redwood_planks": "Rotholzbretter", + "block.biomesoplenty.redwood_pressure_plate": "Rotholzdruckplatte", + "block.biomesoplenty.redwood_sapling": "Rotholzsetzling", + "block.biomesoplenty.redwood_sign": "Rotholzschild", + "block.biomesoplenty.redwood_slab": "Rotholzstufe", + "block.biomesoplenty.redwood_stairs": "Rotholztreppe", + "block.biomesoplenty.redwood_trapdoor": "Rotholzfalltür", + "block.biomesoplenty.redwood_wall_sign": "Rotholzwandschild", + "block.biomesoplenty.redwood_wood": "Rotholz", + "block.biomesoplenty.reed": "Schilf", + "block.biomesoplenty.rose": "Rose", + "block.biomesoplenty.smooth_black_sandstone": "Glatter schwarzer Sandstein", + "block.biomesoplenty.smooth_black_sandstone_slab": "Glatte schwarze Sandsteinstufe", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Glatte schwarze Sandsteintreppe", + "block.biomesoplenty.smooth_orange_sandstone": "Glatter orangener Sandstein", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Glatte orangene Sandsteinstufe", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Glatte orangene Sandsteintreppe", + "block.biomesoplenty.smooth_white_sandstone": "Glatter weißer Sandstein", + "block.biomesoplenty.smooth_white_sandstone_slab": "Glatte weiße Sandsteinstufe", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Glatte weiße Sandsteintreppe", + "block.biomesoplenty.sprout": "Spross", + "block.biomesoplenty.stripped_cherry_log": "Entrindeter Kirschbaumstamm", + "block.biomesoplenty.stripped_cherry_wood": "Entrindetes Kirschholz", + "block.biomesoplenty.stripped_dead_log": "Entrindeter Totenbaumstamm", + "block.biomesoplenty.stripped_dead_wood": "Entrindetes Totholz", + "block.biomesoplenty.stripped_fir_log": "Entrindeter Tannenbaumstamm", + "block.biomesoplenty.stripped_fir_wood": "Entrindetes Tannenholz", + "block.biomesoplenty.stripped_hellbark_log": "Entrindeter Höllenborkenstamm", + "block.biomesoplenty.stripped_hellbark_wood": "Entrindete Höllenborke", + "block.biomesoplenty.stripped_jacaranda_log": "Entrindeter Palisanderstamm", + "block.biomesoplenty.stripped_jacaranda_wood": "Entrindetes Palisanderholz", + "block.biomesoplenty.stripped_magic_log": "Entrindeter Zauberbaumstamm", + "block.biomesoplenty.stripped_magic_wood": "Entrindetes Zauberholz", + "block.biomesoplenty.stripped_mahogany_log": "Entrindeter Mahagonistamm", + "block.biomesoplenty.stripped_mahogany_wood": "Entrindetes Mahagoniholz", + "block.biomesoplenty.stripped_palm_log": "Entrindeter Palmenstamm", + "block.biomesoplenty.stripped_palm_wood": "Entrindetes Palmenholz", + "block.biomesoplenty.stripped_redwood_log": "Entrindeter Rotholzstamm", + "block.biomesoplenty.stripped_redwood_wood": "Entrindetes Rotholz", + "block.biomesoplenty.stripped_umbran_log": "Entrindeter Schattenbaumstamm", + "block.biomesoplenty.stripped_umbran_wood": "Entrindetes Schattenholz", + "block.biomesoplenty.stripped_willow_log": "Entrindeter Weidenbaumstamm", + "block.biomesoplenty.stripped_willow_wood": "Entrindetes Weidenholz", + "block.biomesoplenty.toadstool": "Pilz", + "block.biomesoplenty.toadstool_block": "Pilzblock", + "block.biomesoplenty.umbran_button": "Schattenholzknopf", + "block.biomesoplenty.umbran_door": "Schattenholztür", + "block.biomesoplenty.umbran_fence": "Schattenholzzaun", + "block.biomesoplenty.umbran_fence_gate": "Schattenholzzauntor", + "block.biomesoplenty.umbran_leaves": "Schattenbaumlaub", + "block.biomesoplenty.umbran_log": "Schattenbaumstamm", + "block.biomesoplenty.umbran_planks": "Schattenholzbretter", + "block.biomesoplenty.umbran_pressure_plate": "Schattenholzdruckplatte", + "block.biomesoplenty.umbran_sapling": "Schattenbaumsetzling", + "block.biomesoplenty.umbran_sign": "Schattenholzschild", + "block.biomesoplenty.umbran_slab": "Schattenholzstufe", + "block.biomesoplenty.umbran_stairs": "Schattenholztreppe", + "block.biomesoplenty.umbran_trapdoor": "Schattenholzfalltür", + "block.biomesoplenty.umbran_wall_sign": "Schattenholzwandschild", + "block.biomesoplenty.umbran_wood": "Schattenholz", + "block.biomesoplenty.violet": "Veilchen", + "block.biomesoplenty.watergrass": "Wassergras", + "block.biomesoplenty.white_cherry_leaves": "Weißes Kirschlaub", + "block.biomesoplenty.white_cherry_sapling": "Weißer Kirschsetzling", + "block.biomesoplenty.white_sand": "Weißer Sand", + "block.biomesoplenty.white_sandstone": "Weißer Sandstein", + "block.biomesoplenty.white_sandstone_slab": "Weiße Sandsteinstufe", + "block.biomesoplenty.white_sandstone_stairs": "Weiße Sandsteintreppe", + "block.biomesoplenty.white_sandstone_wall": "Weiße Sandsteinmauer", + "block.biomesoplenty.wildflower": "Wildblume", + "block.biomesoplenty.willow_button": "Weidenholzknopf", + "block.biomesoplenty.willow_door": "Weidenholztür", + "block.biomesoplenty.willow_fence": "Weidenholzzaun", + "block.biomesoplenty.willow_fence_gate": "Weidenholzzauntor", + "block.biomesoplenty.willow_leaves": "Weidenlaub", + "block.biomesoplenty.willow_log": "Weidenstamm", + "block.biomesoplenty.willow_planks": "Weidenholzbretter", + "block.biomesoplenty.willow_pressure_plate": "Weidenholzdruckplatte", + "block.biomesoplenty.willow_sapling": "Weidensetzling", + "block.biomesoplenty.willow_sign": "Weidenholzschild", + "block.biomesoplenty.willow_slab": "Weidenholzstufe", + "block.biomesoplenty.willow_stairs": "Weidenholztreppe", + "block.biomesoplenty.willow_trapdoor": "Weidenholzfalltür", + "block.biomesoplenty.willow_vine": "Weidenranke", + "block.biomesoplenty.willow_wall_sign": "Weidenholzwandschild", + "block.biomesoplenty.willow_wood": "Weidenholz", + "block.biomesoplenty.wilted_lily": "Verwelkte Lilie", + "block.biomesoplenty.yellow_autumn_leaves": "Gelbes Herbstlaub", + "block.biomesoplenty.yellow_autumn_sapling": "Gelber Herbstbaumsetzling", + + "argument.biomesoplenty.biome.invalid": "Ungültige Biomangabe", + "commands.biomesoplenty.tpbiome.success": "%s teleportiert ins Biom %s (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "Konnte Biom %s nicht finden!", + + "entity.biomesoplenty.boat_bop": "Boot" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/en_us.json b/src/main/resources/assets/biomesoplenty/lang/en_us.json new file mode 100644 index 0000000000..25172e2275 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/en_us.json @@ -0,0 +1,419 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Explore the world around you", + "advancements.biomesoplenty.all_biomes.title": "Wanderer", + "advancements.biomesoplenty.all_biomes.description": "Discover every biome in Biomes O' Plenty", + + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alps", + "biome.biomesoplenty.alps_foothills": "Alps Foothills", + "biome.biomesoplenty.bamboo_blossom_grove": "Bamboo Blossom Grove", + "biome.biomesoplenty.bayou": "Bayou", + "biome.biomesoplenty.bayou_mangrove": "Bayou Mangrove", + "biome.biomesoplenty.burnt_forest": "Burnt Forest", + "biome.biomesoplenty.cherry_blossom_grove": "Cherry Blossom Grove", + "biome.biomesoplenty.cold_desert": "Cold Desert", + "biome.biomesoplenty.coniferous_forest": "Coniferous Forest", + "biome.biomesoplenty.coniferous_lakes": "Coniferous Lakes", + "biome.biomesoplenty.crystalline_chasm": "Crystalline Chasm", + "biome.biomesoplenty.dead_forest": "Dead Forest", + "biome.biomesoplenty.deep_bayou": "Deep Bayou", + "biome.biomesoplenty.dense_marsh": "Dense Marsh", + "biome.biomesoplenty.dense_woodland": "Dense Woodland", + "biome.biomesoplenty.dryland": "Dryland", + "biome.biomesoplenty.dry_boneyard": "Dry Boneyard", + "biome.biomesoplenty.fir_clearing": "Fir Clearing", + "biome.biomesoplenty.flower_meadow": "Flower Meadow", + "biome.biomesoplenty.fungal_field": "Fungal Field", + "biome.biomesoplenty.fungal_jungle": "Fungal Jungle", + "biome.biomesoplenty.golden_prairie": "Golden Prairie", + "biome.biomesoplenty.grassland": "Grassland", + "biome.biomesoplenty.grassland_clover_patch": "Grassland Clover Patch", + "biome.biomesoplenty.gravel_beach": "Gravel Beach", + "biome.biomesoplenty.grove": "Grove", + "biome.biomesoplenty.grove_clearing": "Grove Clearing", + "biome.biomesoplenty.grove_lakes": "Grove Lakes", + "biome.biomesoplenty.highland": "Highland", + "biome.biomesoplenty.highland_crag": "Highland Crag", + "biome.biomesoplenty.highland_moor": "Highland Moor", + "biome.biomesoplenty.jade_cliffs": "Jade Cliffs", + "biome.biomesoplenty.lavender_field": "Lavender Field", + "biome.biomesoplenty.lavender_forest": "Lavender Forest", + "biome.biomesoplenty.lush_desert": "Lush Desert", + "biome.biomesoplenty.lush_savanna": "Lush Savanna", + "biome.biomesoplenty.marsh": "Marsh", + "biome.biomesoplenty.meadow": "Meadow", + "biome.biomesoplenty.meadow_forest": "Meadow Forest", + "biome.biomesoplenty.muskeg": "Muskeg", + "biome.biomesoplenty.mystic_grove": "Mystic Grove", + "biome.biomesoplenty.mystic_plains": "Mystic Plains", + "biome.biomesoplenty.ominous_mire": "Ominous Mire", + "biome.biomesoplenty.ominous_woods": "Ominous Woods", + "biome.biomesoplenty.orchard": "Orchard", + "biome.biomesoplenty.origin_valley": "Origin Valley", + "biome.biomesoplenty.prairie": "Prairie", + "biome.biomesoplenty.rainbow_hills": "Rainbow Hills", + "biome.biomesoplenty.rainforest": "Rainforest", + "biome.biomesoplenty.rainforest_cliffs": "Rainforest Cliffs", + "biome.biomesoplenty.rainforest_floodplain": "Rainforest Floodplain", + "biome.biomesoplenty.redwood_forest": "Redwood Forest", + "biome.biomesoplenty.redwood_forest_edge": "Redwood Forest Edge", + "biome.biomesoplenty.redwood_hills": "Redwood Hills", + "biome.biomesoplenty.scrubland": "Scrubland", + "biome.biomesoplenty.seasonal_forest": "Seasonal Forest", + "biome.biomesoplenty.seasonal_orchard": "Seasonal Orchard", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Seasonal Pumpkin Patch", + "biome.biomesoplenty.shroomy_wetland": "Shroomy Wetland", + "biome.biomesoplenty.shrubland": "Shrubland", + "biome.biomesoplenty.shrubland_hills": "Shrubland Hills", + "biome.biomesoplenty.snowy_coniferous_forest": "Snowy Coniferous Forest", + "biome.biomesoplenty.snowy_fir_clearing": "Snowy Fir Clearing", + "biome.biomesoplenty.snowy_maple_forest": "Snowy Maple Forest", + "biome.biomesoplenty.tall_dead_forest": "Tall Dead Forest", + "biome.biomesoplenty.tropic_beach": "Tropic Beach", + "biome.biomesoplenty.tropics": "Tropics", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.tundra_basin": "Tundra Basin", + "biome.biomesoplenty.tundra_bog": "Tundra Bog", + "biome.biomesoplenty.undergrowth": "Undergrowth", + "biome.biomesoplenty.visceral_heap": "Visceral Heap", + "biome.biomesoplenty.volcanic_plains": "Volcanic Plains", + "biome.biomesoplenty.volcano": "Volcano", + "biome.biomesoplenty.wasteland": "Wasteland", + "biome.biomesoplenty.wetland": "Wetland", + "biome.biomesoplenty.wetland_forest": "Wetland Forest", + "biome.biomesoplenty.withered_abyss": "Withered Abyss", + "biome.biomesoplenty.wooded_scrubland": "Wooded Scrubland", + "biome.biomesoplenty.woodland": "Woodland", + + "item.biomesoplenty.bop_icon": "BOP Icon", + "item.biomesoplenty.cherry_boat": "Cherry Boat", + "item.biomesoplenty.dead_boat": "Dead Boat", + "item.biomesoplenty.fir_boat": "Fir Boat", + "item.biomesoplenty.hellbark_boat": "Hellbark Boat", + "item.biomesoplenty.jacaranda_boat": "Jacaranda Boat", + "item.biomesoplenty.magic_boat": "Magic Boat", + "item.biomesoplenty.mahogany_boat": "Mahogany Boat", + "item.biomesoplenty.mud_ball": "Mud Ball", + "item.biomesoplenty.mud_brick": "Mud Brick", + "item.biomesoplenty.music_disc_wanderer": "Music Disc", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Palm Boat", + "item.biomesoplenty.redwood_boat": "Redwood Boat", + "item.biomesoplenty.umbran_boat": "Umbran Boat", + "item.biomesoplenty.willow_boat": "Willow Boat", + + "block.biomesoplenty.barley": "Barley", + "block.biomesoplenty.black_sand": "Black Sand", + "block.biomesoplenty.black_sandstone": "Black Sandstone", + "block.biomesoplenty.black_sandstone_slab": "Black Sandstone Slab", + "block.biomesoplenty.black_sandstone_stairs": "Black Sandstone Stairs", + "block.biomesoplenty.black_sandstone_wall": "Black Sandstone Wall", + "block.biomesoplenty.blue_hydrangea": "Blue Hydrangea", + "block.biomesoplenty.bramble": "Bramble", + "block.biomesoplenty.burning_blossom": "Burning Blossom", + "block.biomesoplenty.bush": "Bush", + "block.biomesoplenty.cattail": "Cattail", + "block.biomesoplenty.cherry_button": "Cherry Button", + "block.biomesoplenty.cherry_door": "Cherry Door", + "block.biomesoplenty.cherry_fence": "Cherry Fence", + "block.biomesoplenty.cherry_fence_gate": "Cherry Fence Gate", + "block.biomesoplenty.cherry_log": "Cherry Log", + "block.biomesoplenty.cherry_planks": "Cherry Planks", + "block.biomesoplenty.cherry_pressure_plate": "Cherry Pressure Plate", + "block.biomesoplenty.cherry_sign": "Cherry Sign", + "block.biomesoplenty.cherry_slab": "Cherry Slab", + "block.biomesoplenty.cherry_stairs": "Cherry Stairs", + "block.biomesoplenty.cherry_trapdoor": "Cherry Trapdoor", + "block.biomesoplenty.cherry_wall_sign": "Cherry Wall Sign", + "block.biomesoplenty.cherry_wood": "Cherry Wood", + "block.biomesoplenty.chiseled_black_sandstone": "Chiseled Black Sandstone", + "block.biomesoplenty.clover": "Clover", + "block.biomesoplenty.cut_black_sandstone": "Cut Black Sandstone", + "block.biomesoplenty.cut_black_sandstone_slab": "Cut Black Sandstone Slab", + "block.biomesoplenty.chiseled_orange_sandstone": "Chiseled Orange Sandstone", + "block.biomesoplenty.cut_orange_sandstone": "Cut Orange Sandstone", + "block.biomesoplenty.cut_orange_sandstone_slab": "Cut Orange Sandstone Slab", + "block.biomesoplenty.chiseled_white_sandstone": "Chiseled White Sandstone", + "block.biomesoplenty.cut_white_sandstone": "Cut White Sandstone", + "block.biomesoplenty.cut_white_sandstone_slab": "Cut White Sandstone Slab", + "block.biomesoplenty.dead_branch": "Dead Branch", + "block.biomesoplenty.dead_button": "Dead Button", + "block.biomesoplenty.dead_door": "Dead Door", + "block.biomesoplenty.dead_fence": "Dead Fence", + "block.biomesoplenty.dead_fence_gate": "Dead Fence Gate", + "block.biomesoplenty.dead_grass": "Dead Grass", + "block.biomesoplenty.dead_leaves": "Dead Leaves", + "block.biomesoplenty.dead_log": "Dead Log", + "block.biomesoplenty.dead_planks": "Dead Planks", + "block.biomesoplenty.dead_pressure_plate": "Dead Pressure Plate", + "block.biomesoplenty.dead_sapling": "Dead Sapling", + "block.biomesoplenty.dead_sign": "Dead Sign", + "block.biomesoplenty.dead_slab": "Dead Slab", + "block.biomesoplenty.dead_stairs": "Dead Stairs", + "block.biomesoplenty.dead_trapdoor": "Dead Trapdoor", + "block.biomesoplenty.dead_wall_sign": "Dead Wall Sign", + "block.biomesoplenty.dead_wood": "Dead Wood", + "block.biomesoplenty.desert_grass": "Desert Grass", + "block.biomesoplenty.dried_salt": "Dried Salt", + "block.biomesoplenty.dune_grass": "Dune Grass", + "block.biomesoplenty.fir_button": "Fir Button", + "block.biomesoplenty.fir_door": "Fir Door", + "block.biomesoplenty.fir_fence": "Fir Fence", + "block.biomesoplenty.fir_fence_gate": "Fir Fence Gate", + "block.biomesoplenty.fir_leaves": "Fir Leaves", + "block.biomesoplenty.fir_log": "Fir Log", + "block.biomesoplenty.fir_planks": "Fir Planks", + "block.biomesoplenty.fir_pressure_plate": "Fir Pressure Plate", + "block.biomesoplenty.fir_sapling": "Fir Sapling", + "block.biomesoplenty.fir_sign": "Fir Sign", + "block.biomesoplenty.fir_slab": "Fir Slab", + "block.biomesoplenty.fir_stairs": "Fir Stairs", + "block.biomesoplenty.fir_trapdoor": "Fir Trapdoor", + "block.biomesoplenty.fir_wall_sign": "Fir Wall Sign", + "block.biomesoplenty.fir_wood": "Fir Wood", + "block.biomesoplenty.flesh": "Flesh", + "block.biomesoplenty.flowering_oak_leaves": "Flowering Oak Leaves", + "block.biomesoplenty.flowering_oak_sapling": "Flowering Oak Sapling", + "block.biomesoplenty.glowflower": "Glowflower", + "block.biomesoplenty.glowshroom": "Glowshroom", + "block.biomesoplenty.glowshroom_block": "Glowshroom Block", + "block.biomesoplenty.goldenrod": "Goldenrod", + "block.biomesoplenty.hellbark_button": "Hellbark Button", + "block.biomesoplenty.hellbark_door": "Hellbark Door", + "block.biomesoplenty.hellbark_fence": "Hellbark Fence", + "block.biomesoplenty.hellbark_fence_gate": "Hellbark Fence Gate", + "block.biomesoplenty.hellbark_leaves": "Hellbark Leaves", + "block.biomesoplenty.hellbark_log": "Hellbark Log", + "block.biomesoplenty.hellbark_planks": "Hellbark Planks", + "block.biomesoplenty.hellbark_pressure_plate": "Hellbark Pressure Plate", + "block.biomesoplenty.hellbark_sapling": "Hellbark Sapling", + "block.biomesoplenty.hellbark_sign": "Hellbark Sign", + "block.biomesoplenty.hellbark_slab": "Hellbark Slab", + "block.biomesoplenty.hellbark_stairs": "Hellbark Stairs", + "block.biomesoplenty.hellbark_trapdoor": "Hellbark Trapdoor", + "block.biomesoplenty.hellbark_wall_sign": "Hellbark Wall Sign", + "block.biomesoplenty.hellbark_wood": "Hellbark Wood", + "block.biomesoplenty.huge_clover_petal": "Huge Clover Petal", + "block.biomesoplenty.jacaranda_button": "Jacaranda Button", + "block.biomesoplenty.jacaranda_door": "Jacaranda Door", + "block.biomesoplenty.jacaranda_fence": "Jacaranda Fence", + "block.biomesoplenty.jacaranda_fence_gate": "Jacaranda Fence Gate", + "block.biomesoplenty.jacaranda_leaves": "Jacaranda Blossoms", + "block.biomesoplenty.jacaranda_log": "Jacaranda Log", + "block.biomesoplenty.jacaranda_planks": "Jacaranda Planks", + "block.biomesoplenty.jacaranda_pressure_plate": "Jacaranda Pressure Plate", + "block.biomesoplenty.jacaranda_sapling": "Jacaranda Sapling", + "block.biomesoplenty.jacaranda_sign": "Jacaranda Sign", + "block.biomesoplenty.jacaranda_slab": "Jacaranda Slab", + "block.biomesoplenty.jacaranda_stairs": "Jacaranda Stairs", + "block.biomesoplenty.jacaranda_trapdoor": "Jacaranda Trapdoor", + "block.biomesoplenty.jacaranda_wall_sign": "Jacaranda Wall Sign", + "block.biomesoplenty.jacaranda_wood": "Jacaranda Wood", + "block.biomesoplenty.lavender": "Lavender", + "block.biomesoplenty.magic_button": "Magic Button", + "block.biomesoplenty.magic_door": "Magic Door", + "block.biomesoplenty.magic_fence": "Magic Fence", + "block.biomesoplenty.magic_fence_gate": "Magic Fence Gate", + "block.biomesoplenty.magic_leaves": "Magic Leaves", + "block.biomesoplenty.magic_log": "Magic Log", + "block.biomesoplenty.magic_planks": "Magic Planks", + "block.biomesoplenty.magic_pressure_plate": "Magic Pressure Plate", + "block.biomesoplenty.magic_sapling": "Magic Sapling", + "block.biomesoplenty.magic_sign": "Magic Sign", + "block.biomesoplenty.magic_slab": "Magic Slab", + "block.biomesoplenty.magic_stairs": "Magic Stairs", + "block.biomesoplenty.magic_trapdoor": "Magic Trapdoor", + "block.biomesoplenty.magic_wall_sign": "Magic Wall Sign", + "block.biomesoplenty.magic_wood": "Magic Wood", + "block.biomesoplenty.mahogany_button": "Mahogany Button", + "block.biomesoplenty.mahogany_door": "Mahogany Door", + "block.biomesoplenty.mahogany_fence": "Mahogany Fence", + "block.biomesoplenty.mahogany_fence_gate": "Mahogany Fence Gate", + "block.biomesoplenty.mahogany_leaves": "Mahogany Leaves", + "block.biomesoplenty.mahogany_log": "Mahogany Log", + "block.biomesoplenty.mahogany_planks": "Mahogany Planks", + "block.biomesoplenty.mahogany_pressure_plate": "Mahogany Pressure Plate", + "block.biomesoplenty.mahogany_sapling": "Mahogany Sapling", + "block.biomesoplenty.mahogany_sign": "Mahogany Sign", + "block.biomesoplenty.mahogany_slab": "Mahogany Slab", + "block.biomesoplenty.mahogany_stairs": "Mahogany Stairs", + "block.biomesoplenty.mahogany_trapdoor": "Mahogany Trapdoor", + "block.biomesoplenty.mahogany_wall_sign": "Mahogany Wall Sign", + "block.biomesoplenty.mahogany_wood": "Mahogany Wood", + "block.biomesoplenty.mangrove_root": "Mangrove Root", + "block.biomesoplenty.maple_leaves": "Maple Leaves", + "block.biomesoplenty.maple_sapling": "Maple Sapling", + "block.biomesoplenty.mud": "Mud", + "block.biomesoplenty.mud_brick_slab": "Mud Brick Slab", + "block.biomesoplenty.mud_brick_stairs": "Mud Brick Stairs", + "block.biomesoplenty.mud_brick_wall": "Mud Brick Wall", + "block.biomesoplenty.mud_bricks": "Mud Bricks", + "block.biomesoplenty.nether_crystal": "Nether Crystal", + "block.biomesoplenty.nether_crystal_block": "Nether Crystal Block", + "block.biomesoplenty.orange_autumn_leaves": "Orange Autumn Leaves", + "block.biomesoplenty.orange_autumn_sapling": "Orange Autumn Sapling", + "block.biomesoplenty.orange_cosmos": "Orange Cosmos", + "block.biomesoplenty.orange_sand": "Orange Sand", + "block.biomesoplenty.orange_sandstone": "Orange Sandstone", + "block.biomesoplenty.orange_sandstone_slab": "Orange Sandstone Slab", + "block.biomesoplenty.orange_sandstone_stairs": "Orange Sandstone Stairs", + "block.biomesoplenty.orange_sandstone_wall": "Orange Sandstone Wall", + "block.biomesoplenty.origin_grass_block": "Origin Grass Block", + "block.biomesoplenty.origin_leaves": "Origin Leaves", + "block.biomesoplenty.origin_sapling": "Origin Sapling", + "block.biomesoplenty.palm_button": "Palm Button", + "block.biomesoplenty.palm_door": "Palm Door", + "block.biomesoplenty.palm_fence": "Palm Fence", + "block.biomesoplenty.palm_fence_gate": "Palm Fence Gate", + "block.biomesoplenty.palm_leaves": "Palm Leaves", + "block.biomesoplenty.palm_log": "Palm Log", + "block.biomesoplenty.palm_planks": "Palm Planks", + "block.biomesoplenty.palm_pressure_plate": "Palm Pressure Plate", + "block.biomesoplenty.palm_sapling": "Palm Sapling", + "block.biomesoplenty.palm_sign": "Palm Sign", + "block.biomesoplenty.palm_slab": "Palm Slab", + "block.biomesoplenty.palm_stairs": "Palm Stairs", + "block.biomesoplenty.palm_trapdoor": "Palm Trapdoor", + "block.biomesoplenty.palm_wall_sign": "Palm Wall Sign", + "block.biomesoplenty.palm_wood": "Palm Wood", + "block.biomesoplenty.pink_cherry_leaves": "Pink Cherry Blossoms", + "block.biomesoplenty.pink_cherry_sapling": "Pink Cherry Sapling", + "block.biomesoplenty.pink_daffodil": "Pink Daffodil", + "block.biomesoplenty.pink_hibiscus": "Pink Hibiscus", + "block.biomesoplenty.potted_burning_blossom": "Potted Burning Blossom", + "block.biomesoplenty.potted_clover": "Potted Clover", + "block.biomesoplenty.potted_dead_sapling": "Potted Dead Sapling", + "block.biomesoplenty.potted_fir_sapling": "Potted Fir Sapling", + "block.biomesoplenty.potted_flowering_oak_sapling": "Potted Flowering Oak Sapling", + "block.biomesoplenty.potted_glowflower": "Potted Glowflower", + "block.biomesoplenty.potted_glowshroom": "Potted Glowshroom", + "block.biomesoplenty.potted_hellbark_sapling": "Potted Hellbark Sapling", + "block.biomesoplenty.potted_jacaranda_sapling": "Potted Jacaranda Sapling", + "block.biomesoplenty.potted_lavender": "Potted Lavender", + "block.biomesoplenty.potted_magic_sapling": "Potted Magic Sapling", + "block.biomesoplenty.potted_mahogany_sapling": "Potted Mahogany Sapling", + "block.biomesoplenty.potted_maple_sapling": "Potted Maple Sapling", + "block.biomesoplenty.potted_orange_autumn_sapling": "Potted Orange Autumn Sapling", + "block.biomesoplenty.potted_orange_cosmos": "Potted Orange Cosmos", + "block.biomesoplenty.potted_origin_sapling": "Potted Origin Sapling", + "block.biomesoplenty.potted_palm_sapling": "Potted Palm Sapling", + "block.biomesoplenty.potted_pink_cherry_sapling": "Potted Pink Cherry Sapling", + "block.biomesoplenty.potted_pink_daffodil": "Potted Pink Daffodil", + "block.biomesoplenty.potted_pink_hibiscus": "Potted Pink Hibiscus", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Potted Rainbow Birch Sapling", + "block.biomesoplenty.potted_redwood_sapling": "Potted Redwood Sapling", + "block.biomesoplenty.potted_rose": "Potted Rose", + "block.biomesoplenty.potted_sprout": "Potted Sprout", + "block.biomesoplenty.potted_toadstool": "Potted Toadstool", + "block.biomesoplenty.potted_umbran_sapling": "Potted Umbran Sapling", + "block.biomesoplenty.potted_violet": "Potted Violet", + "block.biomesoplenty.potted_white_cherry_sapling": "Potted White Cherry Sapling", + "block.biomesoplenty.potted_wildflower": "Potted Wildflower", + "block.biomesoplenty.potted_willow_sapling": "Potted Willow Sapling", + "block.biomesoplenty.potted_wilted_lily": "Potted Wilted Lily", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Potted Yellow Autumn Sapling", + "block.biomesoplenty.rainbow_birch_leaves": "Rainbow Birch Leaves", + "block.biomesoplenty.rainbow_birch_sapling": "Rainbow Birch Sapling", + "block.biomesoplenty.redwood_button": "Redwood Button", + "block.biomesoplenty.redwood_door": "Redwood Door", + "block.biomesoplenty.redwood_fence": "Redwood Fence", + "block.biomesoplenty.redwood_fence_gate": "Redwood Fence Gate", + "block.biomesoplenty.redwood_leaves": "Redwood Leaves", + "block.biomesoplenty.redwood_log": "Redwood Log", + "block.biomesoplenty.redwood_planks": "Redwood Planks", + "block.biomesoplenty.redwood_pressure_plate": "Redwood Pressure Plate", + "block.biomesoplenty.redwood_sapling": "Redwood Sapling", + "block.biomesoplenty.redwood_sign": "Redwood Sign", + "block.biomesoplenty.redwood_slab": "Redwood Slab", + "block.biomesoplenty.redwood_stairs": "Redwood Stairs", + "block.biomesoplenty.redwood_trapdoor": "Redwood Trapdoor", + "block.biomesoplenty.redwood_wall_sign": "Redwood Wall Sign", + "block.biomesoplenty.redwood_wood": "Redwood Wood", + "block.biomesoplenty.reed": "Reed", + "block.biomesoplenty.rose": "Rose", + "block.biomesoplenty.smooth_black_sandstone": "Smooth Black Sandstone", + "block.biomesoplenty.smooth_black_sandstone_slab": "Smooth Black Sandstone Slab", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Smooth Black Sandstone Stairs", + "block.biomesoplenty.smooth_orange_sandstone": "Smooth Orange Sandstone", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Smooth Orange Sandstone Slab", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Smooth Orange Sandstone Stairs", + "block.biomesoplenty.smooth_white_sandstone": "Smooth White Sandstone", + "block.biomesoplenty.smooth_white_sandstone_slab": "Smooth White Sandstone Slab", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Smooth White Sandstone Stairs", + "block.biomesoplenty.spanish_moss": "Spanish Moss", + "block.biomesoplenty.spanish_moss_plant": "Spanish Moss Plant", + "block.biomesoplenty.sprout": "Sprout", + "block.biomesoplenty.stripped_cherry_log": "Stripped Cherry Log", + "block.biomesoplenty.stripped_cherry_wood": "Stripped Cherry Wood", + "block.biomesoplenty.stripped_dead_log": "Stripped Dead Log", + "block.biomesoplenty.stripped_dead_wood": "Stripped Dead Wood", + "block.biomesoplenty.stripped_fir_log": "Stripped Fir Log", + "block.biomesoplenty.stripped_fir_wood": "Stripped Fir Wood", + "block.biomesoplenty.stripped_hellbark_log": "Stripped Hellbark Log", + "block.biomesoplenty.stripped_hellbark_wood": "Stripped Hellbark Wood", + "block.biomesoplenty.stripped_jacaranda_log": "Stripped Jacaranda Log", + "block.biomesoplenty.stripped_jacaranda_wood": "Stripped Jacaranda Wood", + "block.biomesoplenty.stripped_magic_log": "Stripped Magic Log", + "block.biomesoplenty.stripped_magic_wood": "Stripped Magic Wood", + "block.biomesoplenty.stripped_mahogany_log": "Stripped Mahogany Log", + "block.biomesoplenty.stripped_mahogany_wood": "Stripped Mahogany Wood", + "block.biomesoplenty.stripped_palm_log": "Stripped Palm Log", + "block.biomesoplenty.stripped_palm_wood": "Stripped Palm Wood", + "block.biomesoplenty.stripped_redwood_log": "Stripped Redwood Log", + "block.biomesoplenty.stripped_redwood_wood": "Stripped Redwood Wood", + "block.biomesoplenty.stripped_umbran_log": "Stripped Umbran Log", + "block.biomesoplenty.stripped_umbran_wood": "Stripped Umbran Wood", + "block.biomesoplenty.stripped_willow_log": "Stripped Willow Log", + "block.biomesoplenty.stripped_willow_wood": "Stripped Willow Wood", + "block.biomesoplenty.toadstool": "Toadstool", + "block.biomesoplenty.toadstool_block": "Toadstool Block", + "block.biomesoplenty.umbran_button": "Umbran Button", + "block.biomesoplenty.umbran_door": "Umbran Door", + "block.biomesoplenty.umbran_fence": "Umbran Fence", + "block.biomesoplenty.umbran_fence_gate": "Umbran Fence Gate", + "block.biomesoplenty.umbran_leaves": "Umbran Leaves", + "block.biomesoplenty.umbran_log": "Umbran Log", + "block.biomesoplenty.umbran_planks": "Umbran Planks", + "block.biomesoplenty.umbran_pressure_plate": "Umbran Pressure Plate", + "block.biomesoplenty.umbran_sapling": "Umbran Sapling", + "block.biomesoplenty.umbran_sign": "Umbran Sign", + "block.biomesoplenty.umbran_slab": "Umbran Slab", + "block.biomesoplenty.umbran_stairs": "Umbran Stairs", + "block.biomesoplenty.umbran_trapdoor": "Umbran Trapdoor", + "block.biomesoplenty.umbran_wall_sign": "Umbran Wall Sign", + "block.biomesoplenty.umbran_wood": "Umbran Wood", + "block.biomesoplenty.violet": "Violet", + "block.biomesoplenty.watergrass": "Watergrass", + "block.biomesoplenty.white_cherry_leaves": "White Cherry Blossoms", + "block.biomesoplenty.white_cherry_sapling": "White Cherry Sapling", + "block.biomesoplenty.white_sand": "White Sand", + "block.biomesoplenty.white_sandstone": "White Sandstone", + "block.biomesoplenty.white_sandstone_slab": "White Sandstone Slab", + "block.biomesoplenty.white_sandstone_stairs": "White Sandstone Stairs", + "block.biomesoplenty.white_sandstone_wall": "White Sandstone Wall", + "block.biomesoplenty.wildflower": "Wildflower", + "block.biomesoplenty.willow_button": "Willow Button", + "block.biomesoplenty.willow_door": "Willow Door", + "block.biomesoplenty.willow_fence": "Willow Fence", + "block.biomesoplenty.willow_fence_gate": "Willow Fence Gate", + "block.biomesoplenty.willow_leaves": "Willow Leaves", + "block.biomesoplenty.willow_log": "Willow Log", + "block.biomesoplenty.willow_planks": "Willow Planks", + "block.biomesoplenty.willow_pressure_plate": "Willow Pressure Plate", + "block.biomesoplenty.willow_sapling": "Willow Sapling", + "block.biomesoplenty.willow_sign": "Willow Sign", + "block.biomesoplenty.willow_slab": "Willow Slab", + "block.biomesoplenty.willow_stairs": "Willow Stairs", + "block.biomesoplenty.willow_trapdoor": "Willow Trapdoor", + "block.biomesoplenty.willow_vine": "Willow Vine", + "block.biomesoplenty.willow_wall_sign": "Willow Wall Sign", + "block.biomesoplenty.willow_wood": "Willow Wood", + "block.biomesoplenty.wilted_lily": "Wilted Lily", + "block.biomesoplenty.yellow_autumn_leaves": "Yellow Autumn Leaves", + "block.biomesoplenty.yellow_autumn_sapling": "Yellow Autumn Sapling", + + "entity.biomesoplenty.boat_bop": "Boat" +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/lang/es_ar.json b/src/main/resources/assets/biomesoplenty/lang/es_ar.json new file mode 100644 index 0000000000..761df00434 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/es_ar.json @@ -0,0 +1,427 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Explorá el mundo a tu alrededor", + "advancements.biomesoplenty.all_biomes.title": "Ambulante", + "advancements.biomesoplenty.all_biomes.description": "Descubrí todos los biomas de Biomes O' Plenty", + + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alpes", + "biome.biomesoplenty.alps_foothills": "Estribaciones alpinas", + "biome.biomesoplenty.bamboo_blossom_grove": "Arboleda de bambú floral", + "biome.biomesoplenty.bayou": "Bayou", + "biome.biomesoplenty.bayou_mangrove": "Manglar de bayou", + "biome.biomesoplenty.burnt_forest": "Bosque quemado", + "biome.biomesoplenty.cherry_blossom_grove": "Arboleda de cerezos", + "biome.biomesoplenty.cold_desert": "Desierto frío", + "biome.biomesoplenty.coniferous_forest": "Bosque de coníferas", + "biome.biomesoplenty.coniferous_lakes": "Lagos de coníferas", + "biome.biomesoplenty.crystalline_chasm": "Sima cristalina", + "biome.biomesoplenty.dead_forest": "Bosque muerto", + "biome.biomesoplenty.dead_swamp": "Pantano muerto", + "biome.biomesoplenty.deep_bayou": "Bayou profundo", + "biome.biomesoplenty.dryland": "Tierras secas", + "biome.biomesoplenty.dry_boneyard": "Cementerio seco", + "biome.biomesoplenty.fir_clearing": "Claro de abetos blancos", + "biome.biomesoplenty.flower_meadow": "Prado floral", + "biome.biomesoplenty.fungal_field": "Campo fúngico", + "biome.biomesoplenty.fungal_jungle": "Jungla fúngica", + "biome.biomesoplenty.golden_prairie": "Pradera dorada", + "biome.biomesoplenty.gravel_beach": "Playa de grava", + "biome.biomesoplenty.grove": "Arboleda", + "biome.biomesoplenty.grove_clearing": "Claro de arboleda", + "biome.biomesoplenty.grove_lakes": "Lagos de arboleda", + "biome.biomesoplenty.highland": "Elevaciones", + "biome.biomesoplenty.highland_crag": "Elevaciones acantiladas", + "biome.biomesoplenty.highland_moor": "Páramo de elevaciones", + "biome.biomesoplenty.jade_cliffs": "Acantilados de jade", + "biome.biomesoplenty.jade_grassland": "Pastizales de jade", + "biome.biomesoplenty.lavender_field": "Campo de lavandas", + "biome.biomesoplenty.lavender_forest": "Bosque de lavandas", + "biome.biomesoplenty.lush_desert": "Desierto frondoso", + "biome.biomesoplenty.lush_savanna": "Sabana frondosa", + "biome.biomesoplenty.meadow": "Prado", + "biome.biomesoplenty.meadow_forest": "Bosque de prado", + "biome.biomesoplenty.mystic_grove": "Arboleda mística", + "biome.biomesoplenty.mystic_plains": "Llanura mística", + "biome.biomesoplenty.ominous_mire": "Marisma intimidante", + "biome.biomesoplenty.ominous_woods": "Bosque intimidante", + "biome.biomesoplenty.orchard": "Bosque fructífero", + "biome.biomesoplenty.origin_valley": "Valle del origen", + "biome.biomesoplenty.overgrown_fungal_jungle": "Jungla fúngica frondosa", + "biome.biomesoplenty.prairie": "Pradera", + "biome.biomesoplenty.rainbow_hills": "Colinas arcoíris", + "biome.biomesoplenty.rainforest": "Selva tropical", + "biome.biomesoplenty.rainforest_cliffs": "Acantilados de selva tropical", + "biome.biomesoplenty.rainforest_floodplain": "Llanura aluvial de selva tropical", + "biome.biomesoplenty.redwood_forest": "Bosque de secoyas", + "biome.biomesoplenty.redwood_forest_edge": "Borde de bosque de secoyas", + "biome.biomesoplenty.redwood_hills": "Colinas de secoyas", + "biome.biomesoplenty.scrubland": "Arbustal", + "biome.biomesoplenty.seasonal_forest": "Bosque estacional", + "biome.biomesoplenty.seasonal_orchard": "Bosque fructífero estacional", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Huerto de zapallos estacional", + "biome.biomesoplenty.shrubland": "Matorral", + "biome.biomesoplenty.shrubland_hills": "Colinas de matorral", + "biome.biomesoplenty.silkglade": "Claro sedoso", + "biome.biomesoplenty.silkglade_nest": "Nido de claro sedoso", + "biome.biomesoplenty.snowy_coniferous_forest": "Bosque de coníferas nevado", + "biome.biomesoplenty.snowy_fir_clearing": "Claro de abetos blancos nevado", + "biome.biomesoplenty.snowy_maple_forest": "Bosque de arces nevado", + "biome.biomesoplenty.snowy_forest": "Bosque nevado", + "biome.biomesoplenty.tropic_beach": "Playa tropical", + "biome.biomesoplenty.tropic_plains": "Llanura tropical", + "biome.biomesoplenty.tropics": "Trópico", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.tundra_basin": "Cuenca de tundra", + "biome.biomesoplenty.tundra_bog": "Turbera de tundra", + "biome.biomesoplenty.undergrowth": "Infraflora", + "biome.biomesoplenty.visceral_heap": "Cúmulo visceral", + "biome.biomesoplenty.volcanic_plains": "Llanura volcánica", + "biome.biomesoplenty.volcano": "Volcán", + "biome.biomesoplenty.wasteland": "Baldío", + "biome.biomesoplenty.wetland": "Humedal", + "biome.biomesoplenty.wetland_marsh": "Humedal de marisma", + "biome.biomesoplenty.withered_abyss": "Abismo marchito", + "biome.biomesoplenty.wooded_scrubland": "Arbustal frondoso", + "biome.biomesoplenty.wooded_wasteland": "Baldío frondoso", + + "item.biomesoplenty.bop_icon": "Ícono de BOP", + "item.biomesoplenty.cherry_boat": "Bote de cerezo", + "item.biomesoplenty.cooked_turkey_leg": "Pata de pavo cocinada", + "item.biomesoplenty.cooked_venison": "Venado cocinado", + "item.biomesoplenty.dead_boat": "Bote muerto", + "item.biomesoplenty.deer_spawn_egg": "Generar ciervo", + "item.biomesoplenty.fir_boat": "Bote de abeto blanco", + "item.biomesoplenty.hellbark_boat": "Bote de corteza infernal", + "item.biomesoplenty.jacaranda_boat": "Bote de jacarandá", + "item.biomesoplenty.magic_boat": "Bote mágico", + "item.biomesoplenty.mahogany_boat": "Bote de caoba", + "item.biomesoplenty.mud_ball": "Bola de barro", + "item.biomesoplenty.mud_brick": "Ladrillo de barro", + "item.biomesoplenty.music_disc_wanderer": "Disco", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Bote de palmera", + "item.biomesoplenty.redwood_boat": "Bote de secoya", + "item.biomesoplenty.turkey_leg": "Pata de pavo cruda", + "item.biomesoplenty.turkey_spawn_egg": "Generar pavo", + "item.biomesoplenty.umbran_boat": "Bote sombrío", + "item.biomesoplenty.venison": "Venado crudo", + "item.biomesoplenty.willow_boat": "Bote de sauce", + + "block.biomesoplenty.barley": "Cebada", + "block.biomesoplenty.black_sand": "Arena negra", + "block.biomesoplenty.black_sandstone": "Arenisca negra", + "block.biomesoplenty.black_sandstone_slab": "Baldosa de arenisca negra", + "block.biomesoplenty.black_sandstone_stairs": "Escaleras de arenisca negra", + "block.biomesoplenty.black_sandstone_wall": "Pared de arenisca negra", + + "block.biomesoplenty.blue_hydrangea": "Hortensia azul", + "block.biomesoplenty.bramble": "Zarza", + "block.biomesoplenty.burning_blossom": "Flor ardiente", + "block.biomesoplenty.bush": "Arbusto", + "block.biomesoplenty.cattail": "Totora", + "block.biomesoplenty.cherry_button": "Botón de cerezo", + "block.biomesoplenty.cherry_door": "Puerta de cerezo", + "block.biomesoplenty.cherry_fence": "Valla de cerezo", + "block.biomesoplenty.cherry_fence_gate": "Puerta de valla de cerezo", + "block.biomesoplenty.cherry_log": "Tronco de cerezo", + "block.biomesoplenty.cherry_planks": "Madera de cerezo", + "block.biomesoplenty.cherry_pressure_plate": "Placa de presión de cerezo", + "block.biomesoplenty.cherry_sign": "Cartel de cerezo", + "block.biomesoplenty.cherry_slab": "Baldosa de cerezo", + "block.biomesoplenty.cherry_stairs": "Escaleras de cerezo", + "block.biomesoplenty.cherry_trapdoor": "Escotilla de cerezo", + "block.biomesoplenty.cherry_wall_sign": "Cartel de cerezo en pared", + "block.biomesoplenty.cherry_wood": "Leño de cerezo", + "block.biomesoplenty.chiseled_black_sandstone": "Arenisca negra cincelada", + "block.biomesoplenty.cut_black_sandstone": "Arenisca negra cortada", + "block.biomesoplenty.cut_black_sandstone_slab": "Baldosa de arenisca negra cortada", + "block.biomesoplenty.chiseled_orange_sandstone": "Arenisca naranja cincelada", + "block.biomesoplenty.cut_orange_sandstone": "Arenisca naranja cortada", + "block.biomesoplenty.cut_orange_sandstone_slab": "Baldosa de arenisca naranja cortada", + "block.biomesoplenty.chiseled_white_sandstone": "Arenisca blanca cincelada", + "block.biomesoplenty.cut_white_sandstone": "Arenisca blanca cortada", + "block.biomesoplenty.cut_white_sandstone_slab": "Baldosa de arenisca blanca cortada", + "block.biomesoplenty.dead_branch": "Rama muerta", + "block.biomesoplenty.dead_button": "Botón muerto", + "block.biomesoplenty.dead_door": "Puerta muerta", + "block.biomesoplenty.dead_fence": "Valla muerta", + "block.biomesoplenty.dead_fence_gate": "Puerta de valla muerta", + "block.biomesoplenty.dead_grass": "Pasto muerto", + "block.biomesoplenty.dead_leaves": "Hojas muertas", + "block.biomesoplenty.dead_log": "Tronco muerto", + "block.biomesoplenty.dead_planks": "Madera muerta", + "block.biomesoplenty.dead_pressure_plate": "Placa de presión muerta", + "block.biomesoplenty.dead_sapling": "Brote muerto", + "block.biomesoplenty.dead_sign": "Cartel muerto", + "block.biomesoplenty.dead_slab": "Baldosa muerta", + "block.biomesoplenty.dead_stairs": "Escaleras muertas", + "block.biomesoplenty.dead_trapdoor": "Escotilla muerta", + "block.biomesoplenty.dead_wall_sign": "Cartel muerto en pared", + "block.biomesoplenty.dead_wood": "Leño muerto", + "block.biomesoplenty.desert_grass": "Pasto de desierto", + "block.biomesoplenty.dried_salt": "Sal seca", + "block.biomesoplenty.dune_grass": "Pasto de duna", + "block.biomesoplenty.fir_button": "Botón de abeto blanco", + "block.biomesoplenty.fir_door": "Puerta de abeto blanco", + "block.biomesoplenty.fir_fence": "Valla de abeto blanco", + "block.biomesoplenty.fir_fence_gate": "Puerta de valla de abeto blanco", + "block.biomesoplenty.fir_leaves": "Hojas de abeto blanco", + "block.biomesoplenty.fir_log": "Tronco de abeto blanco", + "block.biomesoplenty.fir_planks": "Madera de abeto blanco", + "block.biomesoplenty.fir_pressure_plate": "Placa de presión de abeto blanco", + "block.biomesoplenty.fir_sapling": "Brote de abeto blanco", + "block.biomesoplenty.fir_sign": "Cartel de abeto blanco", + "block.biomesoplenty.fir_slab": "Baldosa de abeto blanco", + "block.biomesoplenty.fir_stairs": "Escaleras de abeto blanco", + "block.biomesoplenty.fir_trapdoor": "Escotilla de abeto blanco", + "block.biomesoplenty.fir_wall_sign": "Cartel de abeto blanco en pared", + "block.biomesoplenty.fir_wood": "Leño de abeto blanco", + "block.biomesoplenty.flesh": "Carne", + "block.biomesoplenty.flowering_oak_leaves": "Hojas de roble floridas", + "block.biomesoplenty.flowering_oak_sapling": "Brote de roble florido", + "block.biomesoplenty.glowflower": "Flor luminosa", + "block.biomesoplenty.glowshroom": "Brillongo", + "block.biomesoplenty.glowshroom_block": "Bloque de brillongo", + "block.biomesoplenty.goldenrod": "Vara de oro", + "block.biomesoplenty.hellbark_button": "Botón de corteza infernal", + "block.biomesoplenty.hellbark_door": "Puerta de corteza infernal", + "block.biomesoplenty.hellbark_fence": "Valla de corteza infernal", + "block.biomesoplenty.hellbark_fence_gate": "Puerta de valla de corteza infernal", + "block.biomesoplenty.hellbark_leaves": "Hojas de corteza infernal", + "block.biomesoplenty.hellbark_log": "Tronco de corteza infernal", + "block.biomesoplenty.hellbark_planks": "Madera de corteza infernal", + "block.biomesoplenty.hellbark_pressure_plate": "Placa de presión de corteza infernal", + "block.biomesoplenty.hellbark_sapling": "Brote de corteza infernal", + "block.biomesoplenty.hellbark_sign": "Cartel de corteza infernal", + "block.biomesoplenty.hellbark_slab": "Baldosa de corteza infernal", + "block.biomesoplenty.hellbark_stairs": "Escaleras de corteza infernal", + "block.biomesoplenty.hellbark_trapdoor": "Escotilla de corteza infernal", + "block.biomesoplenty.hellbark_wall_sign": "Cartel de corteza infernal en pared", + "block.biomesoplenty.hellbark_wood": "Leño de corteza infernal", + "block.biomesoplenty.jacaranda_button": "Botón de jacarandá", + "block.biomesoplenty.jacaranda_door": "Puerta de jacarandá", + "block.biomesoplenty.jacaranda_fence": "Valla de jacarandá", + "block.biomesoplenty.jacaranda_fence_gate": "Puerta de valla de jacarandá", + "block.biomesoplenty.jacaranda_leaves": "Flores de jacarandá", + "block.biomesoplenty.jacaranda_log": "Tronco de jacarandá", + "block.biomesoplenty.jacaranda_planks": "Madera de jacarandá", + "block.biomesoplenty.jacaranda_pressure_plate": "Placa de presión de jacarandá", + "block.biomesoplenty.jacaranda_sapling": "Brote de jacarandá", + "block.biomesoplenty.jacaranda_sign": "Cartel de jacarandá", + "block.biomesoplenty.jacaranda_slab": "Baldosa de jacarandá", + "block.biomesoplenty.jacaranda_stairs": "Escaleras de jacarandá", + "block.biomesoplenty.jacaranda_trapdoor": "Escotilla de jacarandá", + "block.biomesoplenty.jacaranda_wall_sign": "Cartel de jacarandá en pared", + "block.biomesoplenty.jacaranda_wood": "Leño de jacarandá", + "block.biomesoplenty.lavender": "Lavanda", + "block.biomesoplenty.magic_button": "Botón mágico", + "block.biomesoplenty.magic_door": "Puerta mágica", + "block.biomesoplenty.magic_fence": "Valla mágica", + "block.biomesoplenty.magic_fence_gate": "Puerta de valla mágica", + "block.biomesoplenty.magic_leaves": "Hojas mágicas", + "block.biomesoplenty.magic_log": "Tronco mágico", + "block.biomesoplenty.magic_planks": "Madera mágica", + "block.biomesoplenty.magic_pressure_plate": "Placa de presión mágica", + "block.biomesoplenty.magic_sapling": "Brote mágico", + "block.biomesoplenty.magic_sign": "Cartel mágico", + "block.biomesoplenty.magic_slab": "Baldosa mágica", + "block.biomesoplenty.magic_stairs": "Escaleras mágicas", + "block.biomesoplenty.magic_trapdoor": "Escotilla mágica", + "block.biomesoplenty.magic_wall_sign": "Cartel mágico en pared", + "block.biomesoplenty.magic_wood": "Leño mágico", + "block.biomesoplenty.mahogany_button": "Botón de caoba", + "block.biomesoplenty.mahogany_door": "Puerta de caoba", + "block.biomesoplenty.mahogany_fence": "Valla de caoba", + "block.biomesoplenty.mahogany_fence_gate": "Puerta de valla de caoba", + "block.biomesoplenty.mahogany_leaves": "Hojas de caoba", + "block.biomesoplenty.mahogany_log": "Tronco de caoba", + "block.biomesoplenty.mahogany_planks": "Madera de caoba", + "block.biomesoplenty.mahogany_pressure_plate": "Placa de presión de caoba", + "block.biomesoplenty.mahogany_sapling": "Brote de caoba", + "block.biomesoplenty.mahogany_sign": "Cartel de caoba", + "block.biomesoplenty.mahogany_slab": "Baldosa de caoba", + "block.biomesoplenty.mahogany_stairs": "Escaleras de caoba", + "block.biomesoplenty.mahogany_trapdoor": "Escotilla de caoba", + "block.biomesoplenty.mahogany_wall_sign": "Cartel de caoba en pared", + "block.biomesoplenty.mahogany_wood": "Leño de caoba", + "block.biomesoplenty.mangrove_root": "Raíz de mangle", + "block.biomesoplenty.maple_leaves": "Hojas de arce", + "block.biomesoplenty.maple_sapling": "Brote de arce", + "block.biomesoplenty.mud": "Barro", + "block.biomesoplenty.mud_brick_slab": "Baldosa de ladrillos de barro", + "block.biomesoplenty.mud_brick_stairs": "Escaleras de ladrillos de barro", + "block.biomesoplenty.mud_brick_wall": "Pared de ladrillos de barro", + "block.biomesoplenty.mud_bricks": "Ladrillos de barro", + "block.biomesoplenty.nether_crystal": "Cristal del Nether", + "block.biomesoplenty.nether_crystal_block": "Bloque de cristal del Nether", + "block.biomesoplenty.orange_autumn_leaves": "Hojas otoñales naranjas", + "block.biomesoplenty.orange_autumn_sapling": "Brote otoñal naranja", + "block.biomesoplenty.orange_cosmos": "Cosmos naranja", + "block.biomesoplenty.orange_sand": "Arena naranja", + "block.biomesoplenty.orange_sandstone": "Arenisca naranja", + "block.biomesoplenty.orange_sandstone_slab": "Baldosa de arenisca naranja", + "block.biomesoplenty.orange_sandstone_stairs": "Escaleras de arenisca naranja", + "block.biomesoplenty.orange_sandstone_wall": "Pared de arenisca naranja", + "block.biomesoplenty.origin_grass_block": "Bloque de pasto del origen", + "block.biomesoplenty.origin_leaves": "Hojas del origen", + "block.biomesoplenty.origin_sapling": "Brote del origen", + "block.biomesoplenty.palm_button": "Botón de palmera", + "block.biomesoplenty.palm_door": "Puerta de palmera", + "block.biomesoplenty.palm_fence": "Valla de palmera", + "block.biomesoplenty.palm_fence_gate": "Puerta de valla de palmera", + "block.biomesoplenty.palm_leaves": "Hojas de palmera", + "block.biomesoplenty.palm_log": "Tronco de palmera", + "block.biomesoplenty.palm_planks": "Madera de palmera", + "block.biomesoplenty.palm_pressure_plate": "Placa de presión de palmera", + "block.biomesoplenty.palm_sapling": "Brote de palmera", + "block.biomesoplenty.palm_sign": "Cartel de palmera", + "block.biomesoplenty.palm_slab": "Baldosa de palmera", + "block.biomesoplenty.palm_stairs": "Escaleras de palmera", + "block.biomesoplenty.palm_trapdoor": "Escotilla de palmera", + "block.biomesoplenty.palm_wall_sign": "Cartel de palmera en pared", + "block.biomesoplenty.palm_wood": "Leño de palmera", + "block.biomesoplenty.pink_cherry_leaves": "Flores de cerezo rosas", + "block.biomesoplenty.pink_cherry_sapling": "Brote de cerezo rosa", + "block.biomesoplenty.pink_daffodil": "Narciso rosa", + "block.biomesoplenty.pink_hibiscus": "Hibisco rosa", + "block.biomesoplenty.potted_burning_blossom": "Maceta con flor ardiente", + "block.biomesoplenty.potted_dead_sapling": "Maceta con brote muerto", + "block.biomesoplenty.potted_fir_sapling": "Maceta con brote de abeto blanco", + "block.biomesoplenty.potted_flowering_oak_sapling": "Maceta con brote de roble florido", + "block.biomesoplenty.potted_glowflower": "Maceta con flor luminosa", + "block.biomesoplenty.potted_glowshroom": "Maceta con brillongo", + "block.biomesoplenty.potted_hellbark_sapling": "Maceta con brote de corteza infernal", + "block.biomesoplenty.potted_jacaranda_sapling": "Maceta con brote de jacarandá", + "block.biomesoplenty.potted_lavender": "Maceta con lavanda", + "block.biomesoplenty.potted_magic_sapling": "Maceta con brote mágico", + "block.biomesoplenty.potted_mahogany_sapling": "Maceta con brote de caoba", + "block.biomesoplenty.potted_maple_sapling": "Maceta con brote de arce", + "block.biomesoplenty.potted_orange_autumn_sapling": "Maceta con brote otoñal naranja", + "block.biomesoplenty.potted_orange_cosmos": "Maceta con cosmos naranja", + "block.biomesoplenty.potted_origin_sapling": "Maceta con brote del origen", + "block.biomesoplenty.potted_palm_sapling": "Maceta con brote de palmera", + "block.biomesoplenty.potted_pink_cherry_sapling": "Maceta con brote de cerezo rosa", + "block.biomesoplenty.potted_pink_daffodil": "Maceta con narciso rosa", + "block.biomesoplenty.potted_pink_hibiscus": "Maceta con hibisco rosa", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Maceta con brote de abedul arcoíris", + "block.biomesoplenty.potted_redwood_sapling": "Maceta con brote de secoya", + "block.biomesoplenty.potted_rose": "Maceta con rosa", + "block.biomesoplenty.potted_sprout": "Maceta con brote", + "block.biomesoplenty.potted_toadstool": "Maceta con hongo venenoso", + "block.biomesoplenty.potted_umbran_sapling": "Maceta con brote sombrío", + "block.biomesoplenty.potted_violet": "Maceta con violeta", + "block.biomesoplenty.potted_white_cherry_sapling": "Maceta con brote de cerezo blanco", + "block.biomesoplenty.potted_wildflower": "Maceta con flor silvestre", + "block.biomesoplenty.potted_willow_sapling": "Maceta con brote de sauce", + "block.biomesoplenty.potted_wilted_lily": "Maceta con lirio marchito", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Maceta con brote otoñal amarillo", + "block.biomesoplenty.rainbow_birch_leaves": "Hojas de abedul arcoíris", + "block.biomesoplenty.rainbow_birch_sapling": "Brote de abedul arcoíris", + "block.biomesoplenty.redwood_button": "Botón de secoya", + "block.biomesoplenty.redwood_door": "Puerta de secoya", + "block.biomesoplenty.redwood_fence": "Valla de secoya", + "block.biomesoplenty.redwood_fence_gate": "Puerta de valla de secoya", + "block.biomesoplenty.redwood_leaves": "Hojas de secoya", + "block.biomesoplenty.redwood_log": "Tronco de secoya", + "block.biomesoplenty.redwood_planks": "Madera de secoya", + "block.biomesoplenty.redwood_pressure_plate": "Placa de presión de secoya", + "block.biomesoplenty.redwood_sapling": "Brote de secoya", + "block.biomesoplenty.redwood_sign": "Cartel de secoya", + "block.biomesoplenty.redwood_slab": "Baldosa de secoya", + "block.biomesoplenty.redwood_stairs": "Escaleras de secoya", + "block.biomesoplenty.redwood_trapdoor": "Escotilla de secoya", + "block.biomesoplenty.redwood_wall_sign": "Cartel de secoya en pared", + "block.biomesoplenty.redwood_wood": "Leño de secoya", + "block.biomesoplenty.reed": "Carrizo", + "block.biomesoplenty.rose": "Rosa", + "block.biomesoplenty.smooth_black_sandstone": "Arenisca negra lisa", + "block.biomesoplenty.smooth_black_sandstone_slab": "Baldosa de arenisca negra lisa", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Escaleras de arenisca negra lisa", + "block.biomesoplenty.smooth_orange_sandstone": "Arenisca naranja lisa", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Baldosa de arenisca naranja lisa", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Escaleras de arenisca naranja lisa", + "block.biomesoplenty.smooth_white_sandstone": "Arenisca blanca lisa", + "block.biomesoplenty.smooth_white_sandstone_slab": "Baldosa de arenisca blanca lisa", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Escaleras de arenisca blanca lisa", + "block.biomesoplenty.sprout": "Brote", + "block.biomesoplenty.stripped_cherry_log": "Tronco de cerezo sin corteza", + "block.biomesoplenty.stripped_cherry_wood": "Leño de cerezo sin corteza", + "block.biomesoplenty.stripped_dead_log": "Tronco muerto sin corteza", + "block.biomesoplenty.stripped_dead_wood": "Leño muerto sin corteza", + "block.biomesoplenty.stripped_fir_log": "Tronco de abeto blanco sin corteza", + "block.biomesoplenty.stripped_fir_wood": "Leño de abeto blanco sin corteza", + "block.biomesoplenty.stripped_hellbark_log": "Tronco de corteza infernal sin corteza", + "block.biomesoplenty.stripped_hellbark_wood": "Leño de corteza infernal sin corteza", + "block.biomesoplenty.stripped_jacaranda_log": "Tronco de jacarandá sin corteza", + "block.biomesoplenty.stripped_jacaranda_wood": "Leño de jacarandá sin corteza", + "block.biomesoplenty.stripped_magic_log": "Tronco mágico sin corteza", + "block.biomesoplenty.stripped_magic_wood": "Leño mágico sin corteza", + "block.biomesoplenty.stripped_mahogany_log": "Tronco de caoba sin corteza", + "block.biomesoplenty.stripped_mahogany_wood": "Leño de caoba sin corteza", + "block.biomesoplenty.stripped_palm_log": "Tronco de palmera sin corteza", + "block.biomesoplenty.stripped_palm_wood": "Leño de palmera sin corteza", + "block.biomesoplenty.stripped_redwood_log": "Tronco de secoya sin corteza", + "block.biomesoplenty.stripped_redwood_wood": "Leño de secoya sin corteza", + "block.biomesoplenty.stripped_umbran_log": "Tronco sombrío sin corteza", + "block.biomesoplenty.stripped_umbran_wood": "Leño sombrío sin corteza", + "block.biomesoplenty.stripped_willow_log": "Tronco de sauce sin corteza", + "block.biomesoplenty.stripped_willow_wood": "Leño de sauce sin corteza", + "block.biomesoplenty.tall_cattail": "Totora alta", + "block.biomesoplenty.toadstool": "Hongo venenoso", + "block.biomesoplenty.toadstool_block": "Bloque de hongo venenoso", + "block.biomesoplenty.umbran_button": "Botón sombrío", + "block.biomesoplenty.umbran_door": "Puerta sombría", + "block.biomesoplenty.umbran_fence": "Valla sombría", + "block.biomesoplenty.umbran_fence_gate": "Puerta de valla sombría", + "block.biomesoplenty.umbran_leaves": "Hojas sombrías", + "block.biomesoplenty.umbran_log": "Tronco sombrío", + "block.biomesoplenty.umbran_planks": "Madera sombría", + "block.biomesoplenty.umbran_pressure_plate": "Placa de presión sombría", + "block.biomesoplenty.umbran_sapling": "Brote sombrío", + "block.biomesoplenty.umbran_sign": "Cartel sombrío", + "block.biomesoplenty.umbran_slab": "Baldosa sombría", + "block.biomesoplenty.umbran_stairs": "Escaleras sombrías", + "block.biomesoplenty.umbran_trapdoor": "Escotilla sombría", + "block.biomesoplenty.umbran_wall_sign": "Cartel sombrío en pared", + "block.biomesoplenty.umbran_wood": "Leño sombrío", + "block.biomesoplenty.violet": "Violeta", + "block.biomesoplenty.watergrass": "Pasto acuático", + "block.biomesoplenty.white_cherry_leaves": "Flores de cerezo blancas", + "block.biomesoplenty.white_cherry_sapling": "Brote de cerezo blanco", + "block.biomesoplenty.white_sand": "Arena blanca", + "block.biomesoplenty.white_sandstone": "Arenisca blanca", + "block.biomesoplenty.white_sandstone_slab": "Baldosa de arenisca blanca", + "block.biomesoplenty.white_sandstone_stairs": "Escaleras de arenisca blanca", + "block.biomesoplenty.white_sandstone_wall": "Pared de arenisca blanca", + "block.biomesoplenty.wildflower": "Flor silvestre", + "block.biomesoplenty.willow_button": "Botón de sauce", + "block.biomesoplenty.willow_door": "Puerta de sauce", + "block.biomesoplenty.willow_fence": "Valla de sauce", + "block.biomesoplenty.willow_fence_gate": "Puerta de valla de sauce", + "block.biomesoplenty.willow_leaves": "Hojas de sauce", + "block.biomesoplenty.willow_log": "Tronco de sauce", + "block.biomesoplenty.willow_planks": "Madera de sauce", + "block.biomesoplenty.willow_pressure_plate": "Placa de presión de sauce", + "block.biomesoplenty.willow_sapling": "Brote de sauce", + "block.biomesoplenty.willow_sign": "Cartel de sauce", + "block.biomesoplenty.willow_slab": "Baldosa de sauce", + "block.biomesoplenty.willow_stairs": "Escaleras de sauce", + "block.biomesoplenty.willow_trapdoor": "Escotilla de sauce", + "block.biomesoplenty.willow_vine": "Enredaderas de sauce", + "block.biomesoplenty.willow_wall_sign": "Cartel de sauce en pared", + "block.biomesoplenty.willow_wood": "Leño de sauce", + "block.biomesoplenty.wilted_lily": "Lirio marchito", + "block.biomesoplenty.yellow_autumn_leaves": "Hojas otoñales amarillas", + "block.biomesoplenty.yellow_autumn_sapling": "Brote otoñal amarillo", + + "argument.biomesoplenty.biome.invalid": "El argumento de bioma no es válido", + "commands.biomesoplenty.tpbiome.success": "%s teletransportado al bioma %s en (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "¡No se pudo encontrar el bioma %s!", + + "entity.biomesoplenty.boat_bop": "Bote", + "entity.biomesoplenty.deer": "Ciervo", + "entity.biomesoplenty.turkey": "Pavo" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/es_es.json b/src/main/resources/assets/biomesoplenty/lang/es_es.json new file mode 100644 index 0000000000..39f391ebc9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/es_es.json @@ -0,0 +1,427 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Explora el mundo a tu alrededor", + "advancements.biomesoplenty.all_biomes.title": "Ambulante", + "advancements.biomesoplenty.all_biomes.description": "Descubre todos los biomas de Biomes O' Plenty", + + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alpes", + "biome.biomesoplenty.alps_foothills": "Estribaciones alpinas", + "biome.biomesoplenty.bamboo_blossom_grove": "Arboleda de bambú floral", + "biome.biomesoplenty.bayou": "Bayou", + "biome.biomesoplenty.bayou_mangrove": "Manglar de bayou", + "biome.biomesoplenty.burnt_forest": "Bosque quemado", + "biome.biomesoplenty.cherry_blossom_grove": "Arboleda de cerezos", + "biome.biomesoplenty.cold_desert": "Desierto frío", + "biome.biomesoplenty.coniferous_forest": "Bosque de coníferas", + "biome.biomesoplenty.coniferous_lakes": "Lagos de coníferas", + "biome.biomesoplenty.crystalline_chasm": "Sima cristalina", + "biome.biomesoplenty.dead_forest": "Bosque muerto", + "biome.biomesoplenty.dead_swamp": "Pantano muerto", + "biome.biomesoplenty.deep_bayou": "Bayou profundo", + "biome.biomesoplenty.dryland": "Tierras secas", + "biome.biomesoplenty.dry_boneyard": "Cementerio seco", + "biome.biomesoplenty.fir_clearing": "Claro de abetos blancos", + "biome.biomesoplenty.flower_meadow": "Prado florecido", + "biome.biomesoplenty.fungal_field": "Campo fúngico", + "biome.biomesoplenty.fungal_jungle": "Jungla fúngica", + "biome.biomesoplenty.golden_prairie": "Pradera dorada", + "biome.biomesoplenty.gravel_beach": "Playa de grava", + "biome.biomesoplenty.grove": "Arboleda", + "biome.biomesoplenty.grove_clearing": "Claro de arboleda", + "biome.biomesoplenty.grove_lakes": "Lagos de arboleda", + "biome.biomesoplenty.highland": "Elevaciones", + "biome.biomesoplenty.highland_crag": "Elevaciones acantiladas", + "biome.biomesoplenty.highland_moor": "Páramo de elevaciones", + "biome.biomesoplenty.jade_cliffs": "Acantilados de jade", + "biome.biomesoplenty.jade_grassland": "Pastizales de jade", + "biome.biomesoplenty.lavender_field": "Campo de lavandas", + "biome.biomesoplenty.lavender_forest": "Bosque de lavandas", + "biome.biomesoplenty.lush_desert": "Desierto frondoso", + "biome.biomesoplenty.lush_savanna": "Sabana frondosa", + "biome.biomesoplenty.meadow": "Prado", + "biome.biomesoplenty.meadow_forest": "Bosque de prado", + "biome.biomesoplenty.mystic_grove": "Arboleda mística", + "biome.biomesoplenty.mystic_plains": "Llanura mística", + "biome.biomesoplenty.ominous_mire": "Marisma intimidante", + "biome.biomesoplenty.ominous_woods": "Bosque intimidante", + "biome.biomesoplenty.orchard": "Bosque fructífero", + "biome.biomesoplenty.origin_valley": "Valle del origen", + "biome.biomesoplenty.overgrown_fungal_jungle": "Jungla fúngica frondosa", + "biome.biomesoplenty.prairie": "Pradera", + "biome.biomesoplenty.rainbow_hills": "Colinas arcoíris", + "biome.biomesoplenty.rainforest": "Selva tropical", + "biome.biomesoplenty.rainforest_cliffs": "Acantilados de selva tropical", + "biome.biomesoplenty.rainforest_floodplain": "Llanura aluvial de selva tropical", + "biome.biomesoplenty.redwood_forest": "Bosque de secoyas", + "biome.biomesoplenty.redwood_forest_edge": "Borde de bosque de secoyas", + "biome.biomesoplenty.redwood_hills": "Colinas de secoyas", + "biome.biomesoplenty.scrubland": "Arbustal", + "biome.biomesoplenty.seasonal_forest": "Bosque estacional", + "biome.biomesoplenty.seasonal_orchard": "Bosque fructífero estacional", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Huerto de calabazas estacional", + "biome.biomesoplenty.shrubland": "Matorral", + "biome.biomesoplenty.shrubland_hills": "Colinas de matorral", + "biome.biomesoplenty.silkglade": "Claro sedoso", + "biome.biomesoplenty.silkglade_nest": "Nido de claro sedoso", + "biome.biomesoplenty.snowy_coniferous_forest": "Bosque de coníferas nevado", + "biome.biomesoplenty.snowy_fir_clearing": "Claro de abetos blancos nevado", + "biome.biomesoplenty.snowy_maple_forest": "Bosque de arces nevado", + "biome.biomesoplenty.snowy_forest": "Bosque nevado", + "biome.biomesoplenty.tropic_beach": "Playa tropical", + "biome.biomesoplenty.tropic_plains": "Llanura tropical", + "biome.biomesoplenty.tropics": "Trópico", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.tundra_basin": "Cuenca de tundra", + "biome.biomesoplenty.tundra_bog": "Turbera de tundra", + "biome.biomesoplenty.undergrowth": "Infraflora", + "biome.biomesoplenty.visceral_heap": "Cúmulo visceral", + "biome.biomesoplenty.volcanic_plains": "Llanura volcánica", + "biome.biomesoplenty.volcano": "Volcán", + "biome.biomesoplenty.wasteland": "Baldío", + "biome.biomesoplenty.wetland": "Humedal", + "biome.biomesoplenty.wetland_marsh": "Humedal de marisma", + "biome.biomesoplenty.withered_abyss": "Abismo marchito", + "biome.biomesoplenty.wooded_scrubland": "Arbustal frondoso", + "biome.biomesoplenty.wooded_wasteland": "Baldío frondoso", + + "item.biomesoplenty.bop_icon": "Ícono de BOP", + "item.biomesoplenty.cherry_boat": "Barca de cerezo", + "item.biomesoplenty.cooked_turkey_leg": "Pata de pavo cocinada", + "item.biomesoplenty.cooked_venison": "Venado cocinado", + "item.biomesoplenty.dead_boat": "Barca muerta", + "item.biomesoplenty.deer_spawn_egg": "Generar ciervo", + "item.biomesoplenty.fir_boat": "Barca de abeto blanco", + "item.biomesoplenty.hellbark_boat": "Barca de corteza infernal", + "item.biomesoplenty.jacaranda_boat": "Barca de jacarandá", + "item.biomesoplenty.magic_boat": "Barca mágica", + "item.biomesoplenty.mahogany_boat": "Barca de caoba", + "item.biomesoplenty.mud_ball": "Bola de barro", + "item.biomesoplenty.mud_brick": "Ladrillo de barro", + "item.biomesoplenty.music_disc_wanderer": "Disco de música", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Barca de palmera", + "item.biomesoplenty.redwood_boat": "Barca de secoya", + "item.biomesoplenty.turkey_leg": "Pata de pavo cruda", + "item.biomesoplenty.turkey_spawn_egg": "Generar pavo", + "item.biomesoplenty.umbran_boat": "Barca sombría", + "item.biomesoplenty.venison": "Venado crudo", + "item.biomesoplenty.willow_boat": "Barca de sauce", + + "block.biomesoplenty.barley": "Cebada", + "block.biomesoplenty.black_sand": "Arena negra", + "block.biomesoplenty.black_sandstone": "Arenisca negra", + "block.biomesoplenty.black_sandstone_slab": "Losa de arenisca negra", + "block.biomesoplenty.black_sandstone_stairs": "Escaleras de arenisca negra", + "block.biomesoplenty.black_sandstone_wall": "Muro de arenisca negra", + + "block.biomesoplenty.blue_hydrangea": "Hortensia azul", + "block.biomesoplenty.bramble": "Zarza", + "block.biomesoplenty.burning_blossom": "Flor ardiente", + "block.biomesoplenty.bush": "Arbusto", + "block.biomesoplenty.cattail": "Totora", + "block.biomesoplenty.cherry_button": "Botón de cerezo", + "block.biomesoplenty.cherry_door": "Puerta de cerezo", + "block.biomesoplenty.cherry_fence": "Valla de cerezo", + "block.biomesoplenty.cherry_fence_gate": "Puerta de valla de cerezo", + "block.biomesoplenty.cherry_log": "Tronco de cerezo", + "block.biomesoplenty.cherry_planks": "Tablones de cerezo", + "block.biomesoplenty.cherry_pressure_plate": "Placa de presión de cerezo", + "block.biomesoplenty.cherry_sign": "Cartel de cerezo", + "block.biomesoplenty.cherry_slab": "Losa de cerezo", + "block.biomesoplenty.cherry_stairs": "Escaleras de cerezo", + "block.biomesoplenty.cherry_trapdoor": "Trampilla de cerezo", + "block.biomesoplenty.cherry_wall_sign": "Cartel de cerezo en pared", + "block.biomesoplenty.cherry_wood": "Leño de cerezo", + "block.biomesoplenty.chiseled_black_sandstone": "Arenisca negra cincelada", + "block.biomesoplenty.cut_black_sandstone": "Arenisca negra cortada", + "block.biomesoplenty.cut_black_sandstone_slab": "Losa de arenisca negra cortada", + "block.biomesoplenty.chiseled_orange_sandstone": "Arenisca naranja cincelada", + "block.biomesoplenty.cut_orange_sandstone": "Arenisca naranja cortada", + "block.biomesoplenty.cut_orange_sandstone_slab": "Losa de arenisca naranja cortada", + "block.biomesoplenty.chiseled_white_sandstone": "Arenisca blanca cincelada", + "block.biomesoplenty.cut_white_sandstone": "Arenisca blanca cortada", + "block.biomesoplenty.cut_white_sandstone_slab": "Losa de arenisca blanca cortada", + "block.biomesoplenty.dead_branch": "Rama muerta", + "block.biomesoplenty.dead_button": "Botón muerto", + "block.biomesoplenty.dead_door": "Puerta muerta", + "block.biomesoplenty.dead_fence": "Valla muerta", + "block.biomesoplenty.dead_fence_gate": "Puerta de valla muerta", + "block.biomesoplenty.dead_grass": "Hierba muerta", + "block.biomesoplenty.dead_leaves": "Hojas muertas", + "block.biomesoplenty.dead_log": "Tronco muerto", + "block.biomesoplenty.dead_planks": "Tablones muertos", + "block.biomesoplenty.dead_pressure_plate": "Placa de presión muerta", + "block.biomesoplenty.dead_sapling": "Brote muerto", + "block.biomesoplenty.dead_sign": "Cartel muerto", + "block.biomesoplenty.dead_slab": "Losa muerta", + "block.biomesoplenty.dead_stairs": "Escaleras muertas", + "block.biomesoplenty.dead_trapdoor": "Trampilla muerta", + "block.biomesoplenty.dead_wall_sign": "Cartel muerto en pared", + "block.biomesoplenty.dead_wood": "Leño muerto", + "block.biomesoplenty.desert_grass": "Hierba de desierto", + "block.biomesoplenty.dried_salt": "Sal seca", + "block.biomesoplenty.dune_grass": "Hierba de duna", + "block.biomesoplenty.fir_button": "Botón de abeto blanco", + "block.biomesoplenty.fir_door": "Puerta de abeto blanco", + "block.biomesoplenty.fir_fence": "Valla de abeto blanco", + "block.biomesoplenty.fir_fence_gate": "Puerta de valla de abeto blanco", + "block.biomesoplenty.fir_leaves": "Hojas de abeto blanco", + "block.biomesoplenty.fir_log": "Tronco de abeto blanco", + "block.biomesoplenty.fir_planks": "Tablones de abeto blanco", + "block.biomesoplenty.fir_pressure_plate": "Placa de presión de abeto blanco", + "block.biomesoplenty.fir_sapling": "Brote de abeto blanco", + "block.biomesoplenty.fir_sign": "Cartel de abeto blanco", + "block.biomesoplenty.fir_slab": "Losa de abeto blanco", + "block.biomesoplenty.fir_stairs": "Escaleras de abeto blanco", + "block.biomesoplenty.fir_trapdoor": "Trampilla de abeto blanco", + "block.biomesoplenty.fir_wall_sign": "Cartel de abeto blanco en pared", + "block.biomesoplenty.fir_wood": "Leño de abeto blanco", + "block.biomesoplenty.flesh": "Carne", + "block.biomesoplenty.flowering_oak_leaves": "Hojas de roble florecidas", + "block.biomesoplenty.flowering_oak_sapling": "Brote de roble florecido", + "block.biomesoplenty.glowflower": "Flor luminosa", + "block.biomesoplenty.glowshroom": "Champiñón luminoso", + "block.biomesoplenty.glowshroom_block": "Bloque de champiñón luminoso", + "block.biomesoplenty.goldenrod": "Vara de oro", + "block.biomesoplenty.hellbark_button": "Botón de corteza infernal", + "block.biomesoplenty.hellbark_door": "Puerta de corteza infernal", + "block.biomesoplenty.hellbark_fence": "Valla de corteza infernal", + "block.biomesoplenty.hellbark_fence_gate": "Puerta de valla de corteza infernal", + "block.biomesoplenty.hellbark_leaves": "Hojas de corteza infernal", + "block.biomesoplenty.hellbark_log": "Tronco de corteza infernal", + "block.biomesoplenty.hellbark_planks": "Tablones de corteza infernal", + "block.biomesoplenty.hellbark_pressure_plate": "Placa de presión de corteza infernal", + "block.biomesoplenty.hellbark_sapling": "Brote de corteza infernal", + "block.biomesoplenty.hellbark_sign": "Cartel de corteza infernal", + "block.biomesoplenty.hellbark_slab": "Losa de corteza infernal", + "block.biomesoplenty.hellbark_stairs": "Escaleras de corteza infernal", + "block.biomesoplenty.hellbark_trapdoor": "Trampilla de corteza infernal", + "block.biomesoplenty.hellbark_wall_sign": "Cartel de corteza infernal en pared", + "block.biomesoplenty.hellbark_wood": "Leño de corteza infernal", + "block.biomesoplenty.jacaranda_button": "Botón de jacarandá", + "block.biomesoplenty.jacaranda_door": "Puerta de jacarandá", + "block.biomesoplenty.jacaranda_fence": "Valla de jacarandá", + "block.biomesoplenty.jacaranda_fence_gate": "Puerta de valla de jacarandá", + "block.biomesoplenty.jacaranda_leaves": "Flores de jacarandá", + "block.biomesoplenty.jacaranda_log": "Tronco de jacarandá", + "block.biomesoplenty.jacaranda_planks": "Tablones de jacarandá", + "block.biomesoplenty.jacaranda_pressure_plate": "Placa de presión de jacarandá", + "block.biomesoplenty.jacaranda_sapling": "Brote de jacarandá", + "block.biomesoplenty.jacaranda_sign": "Cartel de jacarandá", + "block.biomesoplenty.jacaranda_slab": "Losa de jacarandá", + "block.biomesoplenty.jacaranda_stairs": "Escaleras de jacarandá", + "block.biomesoplenty.jacaranda_trapdoor": "Trampilla de jacarandá", + "block.biomesoplenty.jacaranda_wall_sign": "Cartel de jacarandá en pared", + "block.biomesoplenty.jacaranda_wood": "Leño de jacarandá", + "block.biomesoplenty.lavender": "Lavanda", + "block.biomesoplenty.magic_button": "Botón mágico", + "block.biomesoplenty.magic_door": "Puerta mágica", + "block.biomesoplenty.magic_fence": "Valla mágica", + "block.biomesoplenty.magic_fence_gate": "Puerta de valla mágica", + "block.biomesoplenty.magic_leaves": "Hojas mágicas", + "block.biomesoplenty.magic_log": "Tronco mágico", + "block.biomesoplenty.magic_planks": "Tablones mágicos", + "block.biomesoplenty.magic_pressure_plate": "Placa de presión mágica", + "block.biomesoplenty.magic_sapling": "Brote mágico", + "block.biomesoplenty.magic_sign": "Cartel mágico", + "block.biomesoplenty.magic_slab": "Losa mágica", + "block.biomesoplenty.magic_stairs": "Escaleras mágicas", + "block.biomesoplenty.magic_trapdoor": "Trampilla mágica", + "block.biomesoplenty.magic_wall_sign": "Cartel mágico en pared", + "block.biomesoplenty.magic_wood": "Leño mágico", + "block.biomesoplenty.mahogany_button": "Botón de caoba", + "block.biomesoplenty.mahogany_door": "Puerta de caoba", + "block.biomesoplenty.mahogany_fence": "Valla de caoba", + "block.biomesoplenty.mahogany_fence_gate": "Puerta de valla de caoba", + "block.biomesoplenty.mahogany_leaves": "Hojas de caoba", + "block.biomesoplenty.mahogany_log": "Tronco de caoba", + "block.biomesoplenty.mahogany_planks": "Tablones de caoba", + "block.biomesoplenty.mahogany_pressure_plate": "Placa de presión de caoba", + "block.biomesoplenty.mahogany_sapling": "Brote de caoba", + "block.biomesoplenty.mahogany_sign": "Cartel de caoba", + "block.biomesoplenty.mahogany_slab": "Losa de caoba", + "block.biomesoplenty.mahogany_stairs": "Escaleras de caoba", + "block.biomesoplenty.mahogany_trapdoor": "Trampilla de caoba", + "block.biomesoplenty.mahogany_wall_sign": "Cartel de caoba en pared", + "block.biomesoplenty.mahogany_wood": "Leño de caoba", + "block.biomesoplenty.mangrove_root": "Raíz de mangle", + "block.biomesoplenty.maple_leaves": "Hojas de arce", + "block.biomesoplenty.maple_sapling": "Brote de arce", + "block.biomesoplenty.mud": "Barro", + "block.biomesoplenty.mud_brick_slab": "Losa de ladrillos de barro", + "block.biomesoplenty.mud_brick_stairs": "Escaleras de ladrillos de barro", + "block.biomesoplenty.mud_brick_wall": "Muro de ladrillos de barro", + "block.biomesoplenty.mud_bricks": "Ladrillos de barro", + "block.biomesoplenty.nether_crystal": "Cristal del Nether", + "block.biomesoplenty.nether_crystal_block": "Bloque de cristal del Nether", + "block.biomesoplenty.orange_autumn_leaves": "Hojas otoñales naranjas", + "block.biomesoplenty.orange_autumn_sapling": "Brote otoñal naranja", + "block.biomesoplenty.orange_cosmos": "Cosmos naranja", + "block.biomesoplenty.orange_sand": "Arena naranja", + "block.biomesoplenty.orange_sandstone": "Arenisca naranja", + "block.biomesoplenty.orange_sandstone_slab": "Losa de arenisca naranja", + "block.biomesoplenty.orange_sandstone_stairs": "Escaleras de arenisca naranja", + "block.biomesoplenty.orange_sandstone_wall": "Muro de arenisca naranja", + "block.biomesoplenty.origin_grass_block": "Césped del origen", + "block.biomesoplenty.origin_leaves": "Hojas del origen", + "block.biomesoplenty.origin_sapling": "Brote del origen", + "block.biomesoplenty.palm_button": "Botón de palmera", + "block.biomesoplenty.palm_door": "Puerta de palmera", + "block.biomesoplenty.palm_fence": "Valla de palmera", + "block.biomesoplenty.palm_fence_gate": "Puerta de valla de palmera", + "block.biomesoplenty.palm_leaves": "Hojas de palmera", + "block.biomesoplenty.palm_log": "Tronco de palmera", + "block.biomesoplenty.palm_planks": "Tablones de palmera", + "block.biomesoplenty.palm_pressure_plate": "Placa de presión de palmera", + "block.biomesoplenty.palm_sapling": "Brote de palmera", + "block.biomesoplenty.palm_sign": "Cartel de palmera", + "block.biomesoplenty.palm_slab": "Losa de palmera", + "block.biomesoplenty.palm_stairs": "Escaleras de palmera", + "block.biomesoplenty.palm_trapdoor": "Trampilla de palmera", + "block.biomesoplenty.palm_wall_sign": "Cartel de palmera en pared", + "block.biomesoplenty.palm_wood": "Leño de palmera", + "block.biomesoplenty.pink_cherry_leaves": "Flores de cerezo rosas", + "block.biomesoplenty.pink_cherry_sapling": "Brote de cerezo rosa", + "block.biomesoplenty.pink_daffodil": "Narciso rosa", + "block.biomesoplenty.pink_hibiscus": "Hibisco rosa", + "block.biomesoplenty.potted_burning_blossom": "Maceta con flor ardiente", + "block.biomesoplenty.potted_dead_sapling": "Maceta con brote muerto", + "block.biomesoplenty.potted_fir_sapling": "Maceta con brote de abeto blanco", + "block.biomesoplenty.potted_flowering_oak_sapling": "Maceta con brote de roble florecido", + "block.biomesoplenty.potted_glowflower": "Maceta con flor luminosa", + "block.biomesoplenty.potted_glowshroom": "Maceta con champiñón luminoso", + "block.biomesoplenty.potted_hellbark_sapling": "Maceta con brote de corteza infernal", + "block.biomesoplenty.potted_jacaranda_sapling": "Maceta con brote de jacarandá", + "block.biomesoplenty.potted_lavender": "Maceta con lavanda", + "block.biomesoplenty.potted_magic_sapling": "Maceta con brote mágico", + "block.biomesoplenty.potted_mahogany_sapling": "Maceta con brote de caoba", + "block.biomesoplenty.potted_maple_sapling": "Maceta con brote de arce", + "block.biomesoplenty.potted_orange_autumn_sapling": "Maceta con brote otoñal naranja", + "block.biomesoplenty.potted_orange_cosmos": "Maceta con cosmos naranja", + "block.biomesoplenty.potted_origin_sapling": "Maceta con brote del origen", + "block.biomesoplenty.potted_palm_sapling": "Maceta con brote de palmera", + "block.biomesoplenty.potted_pink_cherry_sapling": "Maceta con brote de cerezo rosa", + "block.biomesoplenty.potted_pink_daffodil": "Maceta con narciso rosa", + "block.biomesoplenty.potted_pink_hibiscus": "Maceta con hibisco rosa", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Maceta con brote de abedul arcoíris", + "block.biomesoplenty.potted_redwood_sapling": "Maceta con brote de secoya", + "block.biomesoplenty.potted_rose": "Maceta con rosa", + "block.biomesoplenty.potted_sprout": "Maceta con brote", + "block.biomesoplenty.potted_toadstool": "Maceta con seta venenosa", + "block.biomesoplenty.potted_umbran_sapling": "Maceta con brote sombrío", + "block.biomesoplenty.potted_violet": "Maceta con violeta", + "block.biomesoplenty.potted_white_cherry_sapling": "Maceta con brote de cerezo blanco", + "block.biomesoplenty.potted_wildflower": "Maceta con flor silvestre", + "block.biomesoplenty.potted_willow_sapling": "Maceta con brote de sauce", + "block.biomesoplenty.potted_wilted_lily": "Maceta con lirio marchito", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Maceta con brote otoñal amarillo", + "block.biomesoplenty.rainbow_birch_leaves": "Hojas de abedul arcoíris", + "block.biomesoplenty.rainbow_birch_sapling": "Brote de abedul arcoíris", + "block.biomesoplenty.redwood_button": "Botón de secoya", + "block.biomesoplenty.redwood_door": "Puerta de secoya", + "block.biomesoplenty.redwood_fence": "Valla de secoya", + "block.biomesoplenty.redwood_fence_gate": "Puerta de valla de secoya", + "block.biomesoplenty.redwood_leaves": "Hojas de secoya", + "block.biomesoplenty.redwood_log": "Tronco de secoya", + "block.biomesoplenty.redwood_planks": "Tablones de secoya", + "block.biomesoplenty.redwood_pressure_plate": "Placa de presión de secoya", + "block.biomesoplenty.redwood_sapling": "Brote de secoya", + "block.biomesoplenty.redwood_sign": "Cartel de secoya", + "block.biomesoplenty.redwood_slab": "Losa de secoya", + "block.biomesoplenty.redwood_stairs": "Escaleras de secoya", + "block.biomesoplenty.redwood_trapdoor": "Trampilla de secoya", + "block.biomesoplenty.redwood_wall_sign": "Cartel de secoya en pared", + "block.biomesoplenty.redwood_wood": "Leño de secoya", + "block.biomesoplenty.reed": "Carrizo", + "block.biomesoplenty.rose": "Rosa", + "block.biomesoplenty.smooth_black_sandstone": "Arenisca negra lisa", + "block.biomesoplenty.smooth_black_sandstone_slab": "Losa de arenisca negra lisa", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Escaleras de arenisca negra lisa", + "block.biomesoplenty.smooth_orange_sandstone": "Arenisca naranja lisa", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Losa de arenisca naranja lisa", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Escaleras de arenisca naranja lisa", + "block.biomesoplenty.smooth_white_sandstone": "Arenisca blanca lisa", + "block.biomesoplenty.smooth_white_sandstone_slab": "Losa de arenisca blanca lisa", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Escaleras de arenisca blanca lisa", + "block.biomesoplenty.sprout": "Brote", + "block.biomesoplenty.stripped_cherry_log": "Tronco de cerezo sin corteza", + "block.biomesoplenty.stripped_cherry_wood": "Leño de cerezo sin corteza", + "block.biomesoplenty.stripped_dead_log": "Tronco muerto sin corteza", + "block.biomesoplenty.stripped_dead_wood": "Leño muerto sin corteza", + "block.biomesoplenty.stripped_fir_log": "Tronco de abeto blanco sin corteza", + "block.biomesoplenty.stripped_fir_wood": "Leño de abeto blanco sin corteza", + "block.biomesoplenty.stripped_hellbark_log": "Tronco de corteza infernal sin corteza", + "block.biomesoplenty.stripped_hellbark_wood": "Leño de corteza infernal sin corteza", + "block.biomesoplenty.stripped_jacaranda_log": "Tronco de jacarandá sin corteza", + "block.biomesoplenty.stripped_jacaranda_wood": "Leño de jacarandá sin corteza", + "block.biomesoplenty.stripped_magic_log": "Tronco mágico sin corteza", + "block.biomesoplenty.stripped_magic_wood": "Leño mágico sin corteza", + "block.biomesoplenty.stripped_mahogany_log": "Tronco de caoba sin corteza", + "block.biomesoplenty.stripped_mahogany_wood": "Leño de caoba sin corteza", + "block.biomesoplenty.stripped_palm_log": "Tronco de palmera sin corteza", + "block.biomesoplenty.stripped_palm_wood": "Leño de palmera sin corteza", + "block.biomesoplenty.stripped_redwood_log": "Tronco de secoya sin corteza", + "block.biomesoplenty.stripped_redwood_wood": "Leño de secoya sin corteza", + "block.biomesoplenty.stripped_umbran_log": "Tronco sombrío sin corteza", + "block.biomesoplenty.stripped_umbran_wood": "Leño sombrío sin corteza", + "block.biomesoplenty.stripped_willow_log": "Tronco de sauce sin corteza", + "block.biomesoplenty.stripped_willow_wood": "Leño de sauce sin corteza", + "block.biomesoplenty.tall_cattail": "Totora alta", + "block.biomesoplenty.toadstool": "Seta venenosa", + "block.biomesoplenty.toadstool_block": "Bloque de seta venenosa", + "block.biomesoplenty.umbran_button": "Botón sombrío", + "block.biomesoplenty.umbran_door": "Puerta sombría", + "block.biomesoplenty.umbran_fence": "Valla sombría", + "block.biomesoplenty.umbran_fence_gate": "Puerta de valla sombría", + "block.biomesoplenty.umbran_leaves": "Hojas sombrías", + "block.biomesoplenty.umbran_log": "Tronco sombrío", + "block.biomesoplenty.umbran_planks": "Tablones sombríos", + "block.biomesoplenty.umbran_pressure_plate": "Placa de presión sombría", + "block.biomesoplenty.umbran_sapling": "Brote sombrío", + "block.biomesoplenty.umbran_sign": "Cartel sombrío", + "block.biomesoplenty.umbran_slab": "Losa sombría", + "block.biomesoplenty.umbran_stairs": "Escaleras sombrías", + "block.biomesoplenty.umbran_trapdoor": "Trampilla sombría", + "block.biomesoplenty.umbran_wall_sign": "Cartel sombrío en pared", + "block.biomesoplenty.umbran_wood": "Leño sombrío", + "block.biomesoplenty.violet": "Violeta", + "block.biomesoplenty.watergrass": "Hierba acuática", + "block.biomesoplenty.white_cherry_leaves": "Flores de cerezo blancas", + "block.biomesoplenty.white_cherry_sapling": "Brote de cerezo blanco", + "block.biomesoplenty.white_sand": "Arena blanca", + "block.biomesoplenty.white_sandstone": "Arenisca blanca", + "block.biomesoplenty.white_sandstone_slab": "Losa de arenisca blanca", + "block.biomesoplenty.white_sandstone_stairs": "Escaleras de arenisca blanca", + "block.biomesoplenty.white_sandstone_wall": "Muro de arenisca blanca", + "block.biomesoplenty.wildflower": "Flor silvestre", + "block.biomesoplenty.willow_button": "Botón de sauce", + "block.biomesoplenty.willow_door": "Puerta de sauce", + "block.biomesoplenty.willow_fence": "Valla de sauce", + "block.biomesoplenty.willow_fence_gate": "Puerta de valla de sauce", + "block.biomesoplenty.willow_leaves": "Hojas de sauce", + "block.biomesoplenty.willow_log": "Tronco de sauce", + "block.biomesoplenty.willow_planks": "Tablones de sauce", + "block.biomesoplenty.willow_pressure_plate": "Placa de presión de sauce", + "block.biomesoplenty.willow_sapling": "Brote de sauce", + "block.biomesoplenty.willow_sign": "Cartel de sauce", + "block.biomesoplenty.willow_slab": "Losa de sauce", + "block.biomesoplenty.willow_stairs": "Escaleras de sauce", + "block.biomesoplenty.willow_trapdoor": "Trampilla de sauce", + "block.biomesoplenty.willow_vine": "Enredadera de sauce", + "block.biomesoplenty.willow_wall_sign": "Cartel de sauce en pared", + "block.biomesoplenty.willow_wood": "Leño de sauce", + "block.biomesoplenty.wilted_lily": "Lirio marchito", + "block.biomesoplenty.yellow_autumn_leaves": "Hojas otoñales amarillas", + "block.biomesoplenty.yellow_autumn_sapling": "Brote otoñal amarillo", + + "argument.biomesoplenty.biome.invalid": "El argumento de bioma no es válido", + "commands.biomesoplenty.tpbiome.success": "Se ha teletransportado a %s al bioma %s en (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "¡No se pudo encontrar el bioma %s!", + + "entity.biomesoplenty.boat_bop": "Barca", + "entity.biomesoplenty.deer": "Ciervo", + "entity.biomesoplenty.turkey": "Pavo" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/es_mx.json b/src/main/resources/assets/biomesoplenty/lang/es_mx.json new file mode 100644 index 0000000000..fb17c92ba3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/es_mx.json @@ -0,0 +1,427 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Explora el mundo a tu alrededor", + "advancements.biomesoplenty.all_biomes.title": "Ambulante", + "advancements.biomesoplenty.all_biomes.description": "Descubre todos los biomas de Biomes O' Plenty", + + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alpes", + "biome.biomesoplenty.alps_foothills": "Estribaciones alpinas", + "biome.biomesoplenty.bamboo_blossom_grove": "Arboleda de bambú floral", + "biome.biomesoplenty.bayou": "Bayou", + "biome.biomesoplenty.bayou_mangrove": "Manglar de bayou", + "biome.biomesoplenty.burnt_forest": "Bosque quemado", + "biome.biomesoplenty.cherry_blossom_grove": "Arboleda de cerezos", + "biome.biomesoplenty.cold_desert": "Desierto frío", + "biome.biomesoplenty.coniferous_forest": "Bosque de coníferas", + "biome.biomesoplenty.coniferous_lakes": "Lagos de coníferas", + "biome.biomesoplenty.crystalline_chasm": "Sima cristalina", + "biome.biomesoplenty.dead_forest": "Bosque muerto", + "biome.biomesoplenty.dead_swamp": "Pantano muerto", + "biome.biomesoplenty.deep_bayou": "Bayou profundo", + "biome.biomesoplenty.dryland": "Tierras secas", + "biome.biomesoplenty.dry_boneyard": "Cementerio seco", + "biome.biomesoplenty.fir_clearing": "Claro de abetos blancos", + "biome.biomesoplenty.flower_meadow": "Prado floral", + "biome.biomesoplenty.fungal_field": "Campo fúngico", + "biome.biomesoplenty.fungal_jungle": "Jungla fúngica", + "biome.biomesoplenty.golden_prairie": "Pradera dorada", + "biome.biomesoplenty.gravel_beach": "Playa de grava", + "biome.biomesoplenty.grove": "Arboleda", + "biome.biomesoplenty.grove_clearing": "Claro de arboleda", + "biome.biomesoplenty.grove_lakes": "Lagos de arboleda", + "biome.biomesoplenty.highland": "Elevaciones", + "biome.biomesoplenty.highland_crag": "Elevaciones acantiladas", + "biome.biomesoplenty.highland_moor": "Páramo de elevaciones", + "biome.biomesoplenty.jade_cliffs": "Acantilados de jade", + "biome.biomesoplenty.jade_grassland": "Pastizales de jade", + "biome.biomesoplenty.lavender_field": "Campo de lavandas", + "biome.biomesoplenty.lavender_forest": "Bosque de lavandas", + "biome.biomesoplenty.lush_desert": "Desierto frondoso", + "biome.biomesoplenty.lush_savanna": "Sabana frondosa", + "biome.biomesoplenty.meadow": "Prado", + "biome.biomesoplenty.meadow_forest": "Bosque de prado", + "biome.biomesoplenty.mystic_grove": "Arboleda mística", + "biome.biomesoplenty.mystic_plains": "Llanura mística", + "biome.biomesoplenty.ominous_mire": "Marisma intimidante", + "biome.biomesoplenty.ominous_woods": "Bosque intimidante", + "biome.biomesoplenty.orchard": "Bosque fructífero", + "biome.biomesoplenty.origin_valley": "Valle del origen", + "biome.biomesoplenty.overgrown_fungal_jungle": "Jungla fúngica frondosa", + "biome.biomesoplenty.prairie": "Pradera", + "biome.biomesoplenty.rainbow_hills": "Colinas arcoíris", + "biome.biomesoplenty.rainforest": "Selva tropical", + "biome.biomesoplenty.rainforest_cliffs": "Acantilados de selva tropical", + "biome.biomesoplenty.rainforest_floodplain": "Llanura aluvial de selva tropical", + "biome.biomesoplenty.redwood_forest": "Bosque de secoyas", + "biome.biomesoplenty.redwood_forest_edge": "Borde de bosque de secoyas", + "biome.biomesoplenty.redwood_hills": "Colinas de secoyas", + "biome.biomesoplenty.scrubland": "Arbustal", + "biome.biomesoplenty.seasonal_forest": "Bosque estacional", + "biome.biomesoplenty.seasonal_orchard": "Bosque fructífero estacional", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Huerto de calabazas estacional", + "biome.biomesoplenty.shrubland": "Matorral", + "biome.biomesoplenty.shrubland_hills": "Colinas de matorral", + "biome.biomesoplenty.silkglade": "Claro sedoso", + "biome.biomesoplenty.silkglade_nest": "Nido de claro sedoso", + "biome.biomesoplenty.snowy_coniferous_forest": "Bosque de coníferas nevado", + "biome.biomesoplenty.snowy_fir_clearing": "Claro de abetos blancos nevado", + "biome.biomesoplenty.snowy_maple_forest": "Bosque de arces nevado", + "biome.biomesoplenty.snowy_forest": "Bosque nevado", + "biome.biomesoplenty.tropic_beach": "Playa tropical", + "biome.biomesoplenty.tropic_plains": "Llanura tropical", + "biome.biomesoplenty.tropics": "Trópico", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.tundra_basin": "Cuenca de tundra", + "biome.biomesoplenty.tundra_bog": "Turbera de tundra", + "biome.biomesoplenty.undergrowth": "Infraflora", + "biome.biomesoplenty.visceral_heap": "Cúmulo visceral", + "biome.biomesoplenty.volcanic_plains": "Llanura volcánica", + "biome.biomesoplenty.volcano": "Volcán", + "biome.biomesoplenty.wasteland": "Baldío", + "biome.biomesoplenty.wetland": "Humedal", + "biome.biomesoplenty.wetland_marsh": "Humedal de marisma", + "biome.biomesoplenty.withered_abyss": "Abismo marchito", + "biome.biomesoplenty.wooded_scrubland": "Arbustal frondoso", + "biome.biomesoplenty.wooded_wasteland": "Baldío frondoso", + + "item.biomesoplenty.bop_icon": "Ícono de BOP", + "item.biomesoplenty.cherry_boat": "Bote de cerezo", + "item.biomesoplenty.cooked_turkey_leg": "Pata de pavo asada", + "item.biomesoplenty.cooked_venison": "Venado asado", + "item.biomesoplenty.dead_boat": "Bote muerto", + "item.biomesoplenty.deer_spawn_egg": "Generar ciervo", + "item.biomesoplenty.fir_boat": "Bote de abeto blanco", + "item.biomesoplenty.hellbark_boat": "Bote de corteza infernal", + "item.biomesoplenty.jacaranda_boat": "Bote de jacarandá", + "item.biomesoplenty.magic_boat": "Bote mágico", + "item.biomesoplenty.mahogany_boat": "Bote de caoba", + "item.biomesoplenty.mud_ball": "Bola de barro", + "item.biomesoplenty.mud_brick": "Ladrillo de barro", + "item.biomesoplenty.music_disc_wanderer": "Disco", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Bote de palmera", + "item.biomesoplenty.redwood_boat": "Bote de secoya", + "item.biomesoplenty.turkey_leg": "Pata de pavo cruda", + "item.biomesoplenty.turkey_spawn_egg": "Generar pavo", + "item.biomesoplenty.umbran_boat": "Bote sombrío", + "item.biomesoplenty.venison": "Venado crudo", + "item.biomesoplenty.willow_boat": "Bote de sauce", + + "block.biomesoplenty.barley": "Cebada", + "block.biomesoplenty.black_sand": "Arena negra", + "block.biomesoplenty.black_sandstone": "Arenisca negra", + "block.biomesoplenty.black_sandstone_slab": "Losa de arenisca negra", + "block.biomesoplenty.black_sandstone_stairs": "Escaleras de arenisca negra", + "block.biomesoplenty.black_sandstone_wall": "Pared de arenisca negra", + + "block.biomesoplenty.blue_hydrangea": "Hortensia azul", + "block.biomesoplenty.bramble": "Zarza", + "block.biomesoplenty.burning_blossom": "Flor ardiente", + "block.biomesoplenty.bush": "Arbusto", + "block.biomesoplenty.cattail": "Totora", + "block.biomesoplenty.cherry_button": "Botón de cerezo", + "block.biomesoplenty.cherry_door": "Puerta de cerezo", + "block.biomesoplenty.cherry_fence": "Valla de cerezo", + "block.biomesoplenty.cherry_fence_gate": "Puerta de valla de cerezo", + "block.biomesoplenty.cherry_log": "Tronco de cerezo", + "block.biomesoplenty.cherry_planks": "Madera de cerezo", + "block.biomesoplenty.cherry_pressure_plate": "Placa de presión de cerezo", + "block.biomesoplenty.cherry_sign": "Letrero de cerezo", + "block.biomesoplenty.cherry_slab": "Losa de cerezo", + "block.biomesoplenty.cherry_stairs": "Escaleras de cerezo", + "block.biomesoplenty.cherry_trapdoor": "Trampilla de cerezo", + "block.biomesoplenty.cherry_wall_sign": "Letrero de cerezo en pared", + "block.biomesoplenty.cherry_wood": "Leño de cerezo", + "block.biomesoplenty.chiseled_black_sandstone": "Arenisca negra grabada", + "block.biomesoplenty.cut_black_sandstone": "Arenisca negra cortada", + "block.biomesoplenty.cut_black_sandstone_slab": "Losa de arenisca negra cortada", + "block.biomesoplenty.chiseled_orange_sandstone": "Arenisca naranja grabada", + "block.biomesoplenty.cut_orange_sandstone": "Arenisca naranja cortada", + "block.biomesoplenty.cut_orange_sandstone_slab": "Losa de arenisca naranja cortada", + "block.biomesoplenty.chiseled_white_sandstone": "Arenisca blanca grabada", + "block.biomesoplenty.cut_white_sandstone": "Arenisca blanca cortada", + "block.biomesoplenty.cut_white_sandstone_slab": "Losa de arenisca blanca cortada", + "block.biomesoplenty.dead_branch": "Rama muerta", + "block.biomesoplenty.dead_button": "Botón muerto", + "block.biomesoplenty.dead_door": "Puerta muerta", + "block.biomesoplenty.dead_fence": "Valla muerta", + "block.biomesoplenty.dead_fence_gate": "Puerta de valla muerta", + "block.biomesoplenty.dead_grass": "Pasto muerto", + "block.biomesoplenty.dead_leaves": "Hojas muertas", + "block.biomesoplenty.dead_log": "Tronco muerto", + "block.biomesoplenty.dead_planks": "Madera muerta", + "block.biomesoplenty.dead_pressure_plate": "Placa de presión muerta", + "block.biomesoplenty.dead_sapling": "Retoño muerto", + "block.biomesoplenty.dead_sign": "Letrero muerto", + "block.biomesoplenty.dead_slab": "Losa muerta", + "block.biomesoplenty.dead_stairs": "Escaleras muertas", + "block.biomesoplenty.dead_trapdoor": "Trampilla muerta", + "block.biomesoplenty.dead_wall_sign": "Letrero muerto en pared", + "block.biomesoplenty.dead_wood": "Leño muerto", + "block.biomesoplenty.desert_grass": "Pasto de desierto", + "block.biomesoplenty.dried_salt": "Sal seca", + "block.biomesoplenty.dune_grass": "Pasto de duna", + "block.biomesoplenty.fir_button": "Botón de abeto blanco", + "block.biomesoplenty.fir_door": "Puerta de abeto blanco", + "block.biomesoplenty.fir_fence": "Valla de abeto blanco", + "block.biomesoplenty.fir_fence_gate": "Puerta de valla de abeto blanco", + "block.biomesoplenty.fir_leaves": "Hojas de abeto blanco", + "block.biomesoplenty.fir_log": "Tronco de abeto blanco", + "block.biomesoplenty.fir_planks": "Madera de abeto blanco", + "block.biomesoplenty.fir_pressure_plate": "Placa de presión de abeto blanco", + "block.biomesoplenty.fir_sapling": "Retoño de abeto blanco", + "block.biomesoplenty.fir_sign": "Letrero de abeto blanco", + "block.biomesoplenty.fir_slab": "Losa de abeto blanco", + "block.biomesoplenty.fir_stairs": "Escaleras de abeto blanco", + "block.biomesoplenty.fir_trapdoor": "Trampilla de abeto blanco", + "block.biomesoplenty.fir_wall_sign": "Letrero de abeto blanco en pared", + "block.biomesoplenty.fir_wood": "Leño de abeto blanco", + "block.biomesoplenty.flesh": "Carne", + "block.biomesoplenty.flowering_oak_leaves": "Hojas de roble florecidas", + "block.biomesoplenty.flowering_oak_sapling": "Retoño de roble florecido", + "block.biomesoplenty.glowflower": "Flor luminosa", + "block.biomesoplenty.glowshroom": "Brillongo", + "block.biomesoplenty.glowshroom_block": "Bloque de brillongo", + "block.biomesoplenty.goldenrod": "Vara de oro", + "block.biomesoplenty.hellbark_button": "Botón de corteza infernal", + "block.biomesoplenty.hellbark_door": "Puerta de corteza infernal", + "block.biomesoplenty.hellbark_fence": "Valla de corteza infernal", + "block.biomesoplenty.hellbark_fence_gate": "Puerta de valla de corteza infernal", + "block.biomesoplenty.hellbark_leaves": "Hojas de corteza infernal", + "block.biomesoplenty.hellbark_log": "Tronco de corteza infernal", + "block.biomesoplenty.hellbark_planks": "Madera de corteza infernal", + "block.biomesoplenty.hellbark_pressure_plate": "Placa de presión de corteza infernal", + "block.biomesoplenty.hellbark_sapling": "Retoño de corteza infernal", + "block.biomesoplenty.hellbark_sign": "Letrero de corteza infernal", + "block.biomesoplenty.hellbark_slab": "Losa de corteza infernal", + "block.biomesoplenty.hellbark_stairs": "Escaleras de corteza infernal", + "block.biomesoplenty.hellbark_trapdoor": "Trampilla de corteza infernal", + "block.biomesoplenty.hellbark_wall_sign": "Letrero de corteza infernal en pared", + "block.biomesoplenty.hellbark_wood": "Leño de corteza infernal", + "block.biomesoplenty.jacaranda_button": "Botón de jacarandá", + "block.biomesoplenty.jacaranda_door": "Puerta de jacarandá", + "block.biomesoplenty.jacaranda_fence": "Valla de jacarandá", + "block.biomesoplenty.jacaranda_fence_gate": "Puerta de valla de jacarandá", + "block.biomesoplenty.jacaranda_leaves": "Flores de jacarandá", + "block.biomesoplenty.jacaranda_log": "Tronco de jacarandá", + "block.biomesoplenty.jacaranda_planks": "Madera de jacarandá", + "block.biomesoplenty.jacaranda_pressure_plate": "Placa de presión de jacarandá", + "block.biomesoplenty.jacaranda_sapling": "Retoño de jacarandá", + "block.biomesoplenty.jacaranda_sign": "Letrero de jacarandá", + "block.biomesoplenty.jacaranda_slab": "Losa de jacarandá", + "block.biomesoplenty.jacaranda_stairs": "Escaleras de jacarandá", + "block.biomesoplenty.jacaranda_trapdoor": "Trampilla de jacarandá", + "block.biomesoplenty.jacaranda_wall_sign": "Letrero de jacarandá en pared", + "block.biomesoplenty.jacaranda_wood": "Leño de jacarandá", + "block.biomesoplenty.lavender": "Lavanda", + "block.biomesoplenty.magic_button": "Botón mágico", + "block.biomesoplenty.magic_door": "Puerta mágica", + "block.biomesoplenty.magic_fence": "Valla mágica", + "block.biomesoplenty.magic_fence_gate": "Puerta de valla mágica", + "block.biomesoplenty.magic_leaves": "Hojas mágicas", + "block.biomesoplenty.magic_log": "Tronco mágico", + "block.biomesoplenty.magic_planks": "Madera mágica", + "block.biomesoplenty.magic_pressure_plate": "Placa de presión mágica", + "block.biomesoplenty.magic_sapling": "Retoño mágico", + "block.biomesoplenty.magic_sign": "Letrero mágico", + "block.biomesoplenty.magic_slab": "Losa mágica", + "block.biomesoplenty.magic_stairs": "Escaleras mágicas", + "block.biomesoplenty.magic_trapdoor": "Trampilla mágica", + "block.biomesoplenty.magic_wall_sign": "Letrero mágico en pared", + "block.biomesoplenty.magic_wood": "Leño mágico", + "block.biomesoplenty.mahogany_button": "Botón de caoba", + "block.biomesoplenty.mahogany_door": "Puerta de caoba", + "block.biomesoplenty.mahogany_fence": "Valla de caoba", + "block.biomesoplenty.mahogany_fence_gate": "Puerta de valla de caoba", + "block.biomesoplenty.mahogany_leaves": "Hojas de caoba", + "block.biomesoplenty.mahogany_log": "Tronco de caoba", + "block.biomesoplenty.mahogany_planks": "Madera de caoba", + "block.biomesoplenty.mahogany_pressure_plate": "Placa de presión de caoba", + "block.biomesoplenty.mahogany_sapling": "Retoño de caoba", + "block.biomesoplenty.mahogany_sign": "Letrero de caoba", + "block.biomesoplenty.mahogany_slab": "Losa de caoba", + "block.biomesoplenty.mahogany_stairs": "Escaleras de caoba", + "block.biomesoplenty.mahogany_trapdoor": "Trampilla de caoba", + "block.biomesoplenty.mahogany_wall_sign": "Letrero de caoba en pared", + "block.biomesoplenty.mahogany_wood": "Leño de caoba", + "block.biomesoplenty.mangrove_root": "Raíz de mangle", + "block.biomesoplenty.maple_leaves": "Hojas de arce", + "block.biomesoplenty.maple_sapling": "Retoño de arce", + "block.biomesoplenty.mud": "Barro", + "block.biomesoplenty.mud_brick_slab": "Losa de ladrillos de barro", + "block.biomesoplenty.mud_brick_stairs": "Escaleras de ladrillos de barro", + "block.biomesoplenty.mud_brick_wall": "Pared de ladrillos de barro", + "block.biomesoplenty.mud_bricks": "Ladrillos de barro", + "block.biomesoplenty.nether_crystal": "Cristal del Nether", + "block.biomesoplenty.nether_crystal_block": "Bloque de cristal del Nether", + "block.biomesoplenty.orange_autumn_leaves": "Hojas otoñales naranjas", + "block.biomesoplenty.orange_autumn_sapling": "Retoño otoñal naranja", + "block.biomesoplenty.orange_cosmos": "Cosmos naranja", + "block.biomesoplenty.orange_sand": "Arena naranja", + "block.biomesoplenty.orange_sandstone": "Arenisca naranja", + "block.biomesoplenty.orange_sandstone_slab": "Losa de arenisca naranja", + "block.biomesoplenty.orange_sandstone_stairs": "Escaleras de arenisca naranja", + "block.biomesoplenty.orange_sandstone_wall": "Pared de arenisca naranja", + "block.biomesoplenty.origin_grass_block": "Bloque de pasto del origen", + "block.biomesoplenty.origin_leaves": "Hojas del origen", + "block.biomesoplenty.origin_sapling": "Retoño del origen", + "block.biomesoplenty.palm_button": "Botón de palmera", + "block.biomesoplenty.palm_door": "Puerta de palmera", + "block.biomesoplenty.palm_fence": "Valla de palmera", + "block.biomesoplenty.palm_fence_gate": "Puerta de valla de palmera", + "block.biomesoplenty.palm_leaves": "Hojas de palmera", + "block.biomesoplenty.palm_log": "Tronco de palmera", + "block.biomesoplenty.palm_planks": "Madera de palmera", + "block.biomesoplenty.palm_pressure_plate": "Placa de presión de palmera", + "block.biomesoplenty.palm_sapling": "Retoño de palmera", + "block.biomesoplenty.palm_sign": "Letrero de palmera", + "block.biomesoplenty.palm_slab": "Losa de palmera", + "block.biomesoplenty.palm_stairs": "Escaleras de palmera", + "block.biomesoplenty.palm_trapdoor": "Trampilla de palmera", + "block.biomesoplenty.palm_wall_sign": "Letrero de palmera en pared", + "block.biomesoplenty.palm_wood": "Leño de palmera", + "block.biomesoplenty.pink_cherry_leaves": "Flores de cerezo rosas", + "block.biomesoplenty.pink_cherry_sapling": "Retoño de cerezo rosa", + "block.biomesoplenty.pink_daffodil": "Narciso rosa", + "block.biomesoplenty.pink_hibiscus": "Hibisco rosa", + "block.biomesoplenty.potted_burning_blossom": "Maceta con flor ardiente", + "block.biomesoplenty.potted_dead_sapling": "Maceta con retoño muerto", + "block.biomesoplenty.potted_fir_sapling": "Maceta con retoño de abeto blanco", + "block.biomesoplenty.potted_flowering_oak_sapling": "Maceta con retoño de roble florecido", + "block.biomesoplenty.potted_glowflower": "Maceta con flor luminosa", + "block.biomesoplenty.potted_glowshroom": "Maceta con brillongo", + "block.biomesoplenty.potted_hellbark_sapling": "Maceta con retoño de corteza infernal", + "block.biomesoplenty.potted_jacaranda_sapling": "Maceta con retoño de jacarandá", + "block.biomesoplenty.potted_lavender": "Maceta con lavanda", + "block.biomesoplenty.potted_magic_sapling": "Maceta con retoño mágico", + "block.biomesoplenty.potted_mahogany_sapling": "Maceta con retoño de caoba", + "block.biomesoplenty.potted_maple_sapling": "Maceta con retoño de arce", + "block.biomesoplenty.potted_orange_autumn_sapling": "Maceta con retoño otoñal naranja", + "block.biomesoplenty.potted_orange_cosmos": "Maceta con cosmos naranja", + "block.biomesoplenty.potted_origin_sapling": "Maceta con retoño del origen", + "block.biomesoplenty.potted_palm_sapling": "Maceta con retoño de palmera", + "block.biomesoplenty.potted_pink_cherry_sapling": "Maceta con retoño de cerezo rosa", + "block.biomesoplenty.potted_pink_daffodil": "Maceta con narciso rosa", + "block.biomesoplenty.potted_pink_hibiscus": "Maceta con hibisco rosa", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Maceta con retoño de abedul arcoíris", + "block.biomesoplenty.potted_redwood_sapling": "Maceta con retoño de secoya", + "block.biomesoplenty.potted_rose": "Maceta con rosa", + "block.biomesoplenty.potted_sprout": "Maceta con brote", + "block.biomesoplenty.potted_toadstool": "Maceta con hongo venenoso", + "block.biomesoplenty.potted_umbran_sapling": "Maceta con retoño sombrío", + "block.biomesoplenty.potted_violet": "Maceta con violeta", + "block.biomesoplenty.potted_white_cherry_sapling": "Maceta con retoño de cerezo blanco", + "block.biomesoplenty.potted_wildflower": "Maceta con flor silvestre", + "block.biomesoplenty.potted_willow_sapling": "Maceta con retoño de sauce", + "block.biomesoplenty.potted_wilted_lily": "Maceta con lirio marchito", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Maceta con retoño otoñal amarillo", + "block.biomesoplenty.rainbow_birch_leaves": "Hojas de abedul arcoíris", + "block.biomesoplenty.rainbow_birch_sapling": "Retoño de abedul arcoíris", + "block.biomesoplenty.redwood_button": "Botón de secoya", + "block.biomesoplenty.redwood_door": "Puerta de secoya", + "block.biomesoplenty.redwood_fence": "Valla de secoya", + "block.biomesoplenty.redwood_fence_gate": "Puerta de valla de secoya", + "block.biomesoplenty.redwood_leaves": "Hojas de secoya", + "block.biomesoplenty.redwood_log": "Tronco de secoya", + "block.biomesoplenty.redwood_planks": "Madera de secoya", + "block.biomesoplenty.redwood_pressure_plate": "Placa de presión de secoya", + "block.biomesoplenty.redwood_sapling": "Retoño de secoya", + "block.biomesoplenty.redwood_sign": "Letrero de secoya", + "block.biomesoplenty.redwood_slab": "Losa de secoya", + "block.biomesoplenty.redwood_stairs": "Escaleras de secoya", + "block.biomesoplenty.redwood_trapdoor": "Trampilla de secoya", + "block.biomesoplenty.redwood_wall_sign": "Letrero de secoya en pared", + "block.biomesoplenty.redwood_wood": "Leño de secoya", + "block.biomesoplenty.reed": "Carrizo", + "block.biomesoplenty.rose": "Rosa", + "block.biomesoplenty.smooth_black_sandstone": "Arenisca negra lisa", + "block.biomesoplenty.smooth_black_sandstone_slab": "Losa de arenisca negra lisa", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Escaleras de arenisca negra lisa", + "block.biomesoplenty.smooth_orange_sandstone": "Arenisca naranja lisa", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Losa de arenisca naranja lisa", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Escaleras de arenisca naranja lisa", + "block.biomesoplenty.smooth_white_sandstone": "Arenisca blanca lisa", + "block.biomesoplenty.smooth_white_sandstone_slab": "Losa de arenisca blanca lisa", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Escaleras de arenisca blanca lisa", + "block.biomesoplenty.sprout": "Brote", + "block.biomesoplenty.stripped_cherry_log": "Tronco de cerezo sin corteza", + "block.biomesoplenty.stripped_cherry_wood": "Leño de cerezo sin corteza", + "block.biomesoplenty.stripped_dead_log": "Tronco muerto sin corteza", + "block.biomesoplenty.stripped_dead_wood": "Leño muerto sin corteza", + "block.biomesoplenty.stripped_fir_log": "Tronco de abeto blanco sin corteza", + "block.biomesoplenty.stripped_fir_wood": "Leño de abeto blanco sin corteza", + "block.biomesoplenty.stripped_hellbark_log": "Tronco de corteza infernal sin corteza", + "block.biomesoplenty.stripped_hellbark_wood": "Leño de corteza infernal sin corteza", + "block.biomesoplenty.stripped_jacaranda_log": "Tronco de jacarandá sin corteza", + "block.biomesoplenty.stripped_jacaranda_wood": "Leño de jacarandá sin corteza", + "block.biomesoplenty.stripped_magic_log": "Tronco mágico sin corteza", + "block.biomesoplenty.stripped_magic_wood": "Leño mágico sin corteza", + "block.biomesoplenty.stripped_mahogany_log": "Tronco de caoba sin corteza", + "block.biomesoplenty.stripped_mahogany_wood": "Leño de caoba sin corteza", + "block.biomesoplenty.stripped_palm_log": "Tronco de palmera sin corteza", + "block.biomesoplenty.stripped_palm_wood": "Leño de palmera sin corteza", + "block.biomesoplenty.stripped_redwood_log": "Tronco de secoya sin corteza", + "block.biomesoplenty.stripped_redwood_wood": "Leño de secoya sin corteza", + "block.biomesoplenty.stripped_umbran_log": "Tronco sombrío sin corteza", + "block.biomesoplenty.stripped_umbran_wood": "Leño sombrío sin corteza", + "block.biomesoplenty.stripped_willow_log": "Tronco de sauce sin corteza", + "block.biomesoplenty.stripped_willow_wood": "Leño de sauce sin corteza", + "block.biomesoplenty.tall_cattail": "Totora alta", + "block.biomesoplenty.toadstool": "Hongo venenoso", + "block.biomesoplenty.toadstool_block": "Bloque de hongo venenoso", + "block.biomesoplenty.umbran_button": "Botón sombrío", + "block.biomesoplenty.umbran_door": "Puerta sombría", + "block.biomesoplenty.umbran_fence": "Valla sombría", + "block.biomesoplenty.umbran_fence_gate": "Puerta de valla sombría", + "block.biomesoplenty.umbran_leaves": "Hojas sombrías", + "block.biomesoplenty.umbran_log": "Tronco sombrío", + "block.biomesoplenty.umbran_planks": "Madera sombría", + "block.biomesoplenty.umbran_pressure_plate": "Placa de presión sombría", + "block.biomesoplenty.umbran_sapling": "Retoño sombrío", + "block.biomesoplenty.umbran_sign": "Letrero sombrío", + "block.biomesoplenty.umbran_slab": "Losa sombría", + "block.biomesoplenty.umbran_stairs": "Escaleras sombrías", + "block.biomesoplenty.umbran_trapdoor": "Trampilla sombría", + "block.biomesoplenty.umbran_wall_sign": "Letrero sombrío en pared", + "block.biomesoplenty.umbran_wood": "Leño sombrío", + "block.biomesoplenty.violet": "Violeta", + "block.biomesoplenty.watergrass": "Pasto acuático", + "block.biomesoplenty.white_cherry_leaves": "Flores de cerezo blancas", + "block.biomesoplenty.white_cherry_sapling": "Retoño de cerezo blanco", + "block.biomesoplenty.white_sand": "Arena blanca", + "block.biomesoplenty.white_sandstone": "Arenisca blanca", + "block.biomesoplenty.white_sandstone_slab": "Losa de arenisca blanca", + "block.biomesoplenty.white_sandstone_stairs": "Escaleras de arenisca blanca", + "block.biomesoplenty.white_sandstone_wall": "Pared de arenisca blanca", + "block.biomesoplenty.wildflower": "Flor silvestre", + "block.biomesoplenty.willow_button": "Botón de sauce", + "block.biomesoplenty.willow_door": "Puerta de sauce", + "block.biomesoplenty.willow_fence": "Valla de sauce", + "block.biomesoplenty.willow_fence_gate": "Puerta de valla de sauce", + "block.biomesoplenty.willow_leaves": "Hojas de sauce", + "block.biomesoplenty.willow_log": "Tronco de sauce", + "block.biomesoplenty.willow_planks": "Madera de sauce", + "block.biomesoplenty.willow_pressure_plate": "Placa de presión de sauce", + "block.biomesoplenty.willow_sapling": "Retoño de sauce", + "block.biomesoplenty.willow_sign": "Letrero de sauce", + "block.biomesoplenty.willow_slab": "Losa de sauce", + "block.biomesoplenty.willow_stairs": "Escaleras de sauce", + "block.biomesoplenty.willow_trapdoor": "Trampilla de sauce", + "block.biomesoplenty.willow_vine": "Lianas de sauce", + "block.biomesoplenty.willow_wall_sign": "Letrero de sauce en pared", + "block.biomesoplenty.willow_wood": "Leño de sauce", + "block.biomesoplenty.wilted_lily": "Lirio marchito", + "block.biomesoplenty.yellow_autumn_leaves": "Hojas otoñales amarillas", + "block.biomesoplenty.yellow_autumn_sapling": "Retoño otoñal amarillo", + + "argument.biomesoplenty.biome.invalid": "El argumento de bioma no es válido", + "commands.biomesoplenty.tpbiome.success": "%s teletransportado al bioma %s en (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "¡No se pudo encontrar el bioma %s!", + + "entity.biomesoplenty.boat_bop": "Bote", + "entity.biomesoplenty.deer": "Ciervo", + "entity.biomesoplenty.turkey": "Pavo" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/fr_fr.json b/src/main/resources/assets/biomesoplenty/lang/fr_fr.json new file mode 100644 index 0000000000..14b22e7d47 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/fr_fr.json @@ -0,0 +1,416 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Explorez le monde autour de vous", + "advancements.biomesoplenty.all_biomes.title": "Explorateur", + "advancements.biomesoplenty.all_biomes.description": "Découvrez tous les biomes de Biomes O' Plenty", + + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alpes", + "biome.biomesoplenty.alps_foothills": "Contreforts des Alpes", + "biome.biomesoplenty.bamboo_blossom_grove": "Bosquet de bambous en fleur", + "biome.biomesoplenty.bayou": "Bayou", + "biome.biomesoplenty.bayou_mangrove": "Mangrove du bayou", + "biome.biomesoplenty.burnt_forest": "Forêt brulée", + "biome.biomesoplenty.cherry_blossom_grove": "Bosquet de cerisiers en fleur", + "biome.biomesoplenty.cold_desert": "Désert froid", + "biome.biomesoplenty.coniferous_forest": "Forêt de conifères", + "biome.biomesoplenty.coniferous_lakes": "Lacs de conifères", + "biome.biomesoplenty.crystalline_chasm": "Gouffre crystallin", + "biome.biomesoplenty.dead_forest": "Forêt morte", + "biome.biomesoplenty.dead_swamp": "Marais mort", + "biome.biomesoplenty.deep_bayou": "Bayou profond", + "biome.biomesoplenty.dryland": "Terre sèche", + "biome.biomesoplenty.dry_boneyard": "Cimetière sec", + "biome.biomesoplenty.fir_clearing": "Clairière de pins", + "biome.biomesoplenty.flower_meadow": "Pré de fleurs", + "biome.biomesoplenty.fungal_field": "Champ fongique", + "biome.biomesoplenty.fungal_jungle": "Jungle fongique", + "biome.biomesoplenty.golden_prairie": "Prairie dorée", + "biome.biomesoplenty.gravel_beach": "Plage de gravier", + "biome.biomesoplenty.grove": "Bosquet", + "biome.biomesoplenty.grove_clearing": "Clairière de bosquet", + "biome.biomesoplenty.grove_lakes": "Lacs de bosquet", + "biome.biomesoplenty.highland": "Hautes terres", + "biome.biomesoplenty.highland_crag": "Hautes terres escarpés", + "biome.biomesoplenty.highland_moor": "Lande des hautes terres", + "biome.biomesoplenty.jade_cliffs": "Falaises de jade", + "biome.biomesoplenty.jade_grassland": "Prairie de jade", + "biome.biomesoplenty.lavender_field": "Champ de lavande", + "biome.biomesoplenty.lavender_forest": "Forêt de lavande", + "biome.biomesoplenty.lush_desert": "Désert luxuriant", + "biome.biomesoplenty.lush_savanna": "Savane luxuriante", + "biome.biomesoplenty.meadow": "Pré", + "biome.biomesoplenty.meadow_forest": "Forêt de prés", + "biome.biomesoplenty.mystic_grove": "Bosquet mystique", + "biome.biomesoplenty.mystic_plains": "Plaine mystiques", + "biome.biomesoplenty.ominous_mire": "Bourbier sinistre", + "biome.biomesoplenty.ominous_woods": "Bois sinistre", + "biome.biomesoplenty.orchard": "Verger", + "biome.biomesoplenty.origin_valley": "Vallée originelle", + "biome.biomesoplenty.overgrown_fungal_jungle": "Jungle envahie par les champignons", + "biome.biomesoplenty.prairie": "Prairie", + "biome.biomesoplenty.rainbow_hills": "Colline arcs-en-ciel", + "biome.biomesoplenty.rainforest": "Forêts tropicales", + "biome.biomesoplenty.rainforest_cliffs": "Falaises de forêts tropicales", + "biome.biomesoplenty.rainforest_floodplain": "Plaine inondable de forêt tropicale", + "biome.biomesoplenty.redwood_forest": "Forêt de séquoia", + "biome.biomesoplenty.redwood_forest_edge": "Lisière de forêt de séquoia", + "biome.biomesoplenty.redwood_hills": "Collines de séquoias", + "biome.biomesoplenty.scrubland": "Brousse", + "biome.biomesoplenty.seasonal_forest": "Forêt saisonnière", + "biome.biomesoplenty.seasonal_orchard": "Verger saisonnier", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Parcelle de citrouille saisonnière", + "biome.biomesoplenty.shrubland": "Fruticée", + "biome.biomesoplenty.shrubland_hills": "Colinnes de fruticée", + "biome.biomesoplenty.silkglade": "Garrigue", + "biome.biomesoplenty.silkglade_nest": "Nid dans la garrigue", + "biome.biomesoplenty.snowy_coniferous_forest": "Forêt de connifères enneigée", + "biome.biomesoplenty.snowy_fir_clearing": "Clairière de pins", + "biome.biomesoplenty.snowy_maple_forest": "Forêt d'érables enneigée", + "biome.biomesoplenty.tropic_beach": "Plage des tropiques", + "biome.biomesoplenty.tropic_plains": "Plaine des tropiques", + "biome.biomesoplenty.tropics": "Tropiques", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.tundra_basin": "Bassin de la tundra", + "biome.biomesoplenty.tundra_bog": "Tourbière de la toundra", + "biome.biomesoplenty.undergrowth": "Sous-bois", + "biome.biomesoplenty.visceral_he": "Tas de viscères", + "biome.biomesoplenty.volcanic_plains": "Plaines volcaniques", + "biome.biomesoplenty.volcano": "Volcan", + "biome.biomesoplenty.wasteland": "Terres désolées", + "biome.biomesoplenty.wetland": "Marécages", + "biome.biomesoplenty.wetland_marsh": "Marais marécageux", + "biome.biomesoplenty.withered_abyss": "Abyss du wither", + "biome.biomesoplenty.wooded_scrubland": "Brousse boisé", + "biome.biomesoplenty.wooded_wasteland": "Terres désolées boisées", + + "item.biomesoplenty.bop_icon": "Icône de BOP", + "item.biomesoplenty.cherry_boat": "Bateau en cerisier", + "item.biomesoplenty.dead_boat": "Bateau en bois mort", + "item.biomesoplenty.fir_boat": "Bateau en pin", + "item.biomesoplenty.hellbark_boat": "Bateau en écorce de l'enfer", + "item.biomesoplenty.jacaranda_boat": "Bateau en jacaranda", + "item.biomesoplenty.magic_boat": "Bateau en bois magique", + "item.biomesoplenty.mahogany_boat": "Bateau en acajou d'amérique", + "item.biomesoplenty.mud_ball": "Balle de boue", + "item.biomesoplenty.mud_brick": "Brique de boue", + "item.biomesoplenty.music_disc_wanderer": "Disque de musique", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Explorateur", + "item.biomesoplenty.palm_boat": "Bateau en bois de palme", + "item.biomesoplenty.redwood_boat": "Bateau en séquoia", + "item.biomesoplenty.umbran_boat": "Bateau en bois de l'ombre", + "item.biomesoplenty.willow_boat": "Bateau en saule", + + "block.biomesoplenty.barley": "Orge", + "block.biomesoplenty.black_sand": "Sable noir", + "block.biomesoplenty.black_sandstone": "Grès noir", + "block.biomesoplenty.black_sandstone_slab": "Dalle de grès noire", + "block.biomesoplenty.black_sandstone_stairs": "Escaliers de grès noirs", + "block.biomesoplenty.black_sandstone_wall": "Mur de grès noir", + "block.biomesoplenty.blue_hydrangea": "Hortensia bleu", + "block.biomesoplenty.bramble": "Roncier", + "block.biomesoplenty.burning_blossom": "Fleur brûlante", + "block.biomesoplenty.bush": "Buisson", + "block.biomesoplenty.cattail": "Quenouille", + "block.biomesoplenty.cherry_button": "Bouton en cerisier", + "block.biomesoplenty.cherry_door": "Porte en cerisier", + "block.biomesoplenty.cherry_fence": "Barrière en cerisier", + "block.biomesoplenty.cherry_fence_gate": "Portillon en cerisier", + "block.biomesoplenty.cherry_log": "Bûche de cerisier", + "block.biomesoplenty.cherry_planks": "Planches en cerisier", + "block.biomesoplenty.cherry_pressure_plate": "Plaque de pression en cerisier", + "block.biomesoplenty.cherry_sign": "Panneau en cerisier", + "block.biomesoplenty.cherry_slab": "Dalle en cerisier", + "block.biomesoplenty.cherry_stairs": "Escaliers en cerisier", + "block.biomesoplenty.cherry_trapdoor": "Trape en cerisier", + "block.biomesoplenty.cherry_wall_sign": "Panneau mural en cerisier", + "block.biomesoplenty.cherry_wood": "Bois de cerisier", + "block.biomesoplenty.chiseled_black_sandstone": "Grès noir ciselé", + "block.biomesoplenty.cut_black_sandstone": "Grès noir découpé", + "block.biomesoplenty.cut_black_sandstone_slab": "Dalle de grès noir découpé", + "block.biomesoplenty.chiseled_orange_sandstone": "Grès orange cidelé", + "block.biomesoplenty.cut_orange_sandstone": "Grès orange découpé", + "block.biomesoplenty.cut_orange_sandstone_slab": "Dalle de grès orange découpé", + "block.biomesoplenty.chiseled_white_sandstone": "Grès blanc ciselé", + "block.biomesoplenty.cut_white_sandstone": "Grès blanc découpé", + "block.biomesoplenty.cut_white_sandstone_slab": "Dalle de grès blanc découpé", + "block.biomesoplenty.dead_branch": "Branche morte", + "block.biomesoplenty.dead_button": "Bouton en bois mort", + "block.biomesoplenty.dead_door": "Porte en bois mort", + "block.biomesoplenty.dead_fence": "Barrière en bois mort", + "block.biomesoplenty.dead_fence_gate": "Portillon en bois mort", + "block.biomesoplenty.dead_grass": "Herbe morte", + "block.biomesoplenty.dead_leaves": "Feuilles mortes", + "block.biomesoplenty.dead_log": "Bûche de bois mort", + "block.biomesoplenty.dead_planks": "Planches de bois mort", + "block.biomesoplenty.dead_pressure_plate": "Plaque de pression en bois mort", + "block.biomesoplenty.dead_sapling": "Pousse de bois mort", + "block.biomesoplenty.dead_sign": "Panneau en bois mort", + "block.biomesoplenty.dead_slab": "Dalle en bois mort", + "block.biomesoplenty.dead_stairs": "Escaliers en bois mort", + "block.biomesoplenty.dead_trapdoor": "Trappe en bois mort", + "block.biomesoplenty.dead_wall_sign": "Panneau mural en cerisier", + "block.biomesoplenty.dead_wood": "Bois mort", + "block.biomesoplenty.desert_grass": "Herbe du désert", + "block.biomesoplenty.dried_salt": "Sel seché", + "block.biomesoplenty.dune_grass": "Herbe des dunes", + "block.biomesoplenty.fir_button": "Bouton en pin", + "block.biomesoplenty.fir_door": "Porte en pin", + "block.biomesoplenty.fir_fence": "Barrière en pin", + "block.biomesoplenty.fir_fence_gate": "Portillon en pin", + "block.biomesoplenty.fir_leaves": "Feuilles de pin", + "block.biomesoplenty.fir_log": "Bûche de pin", + "block.biomesoplenty.fir_planks": "Planches de pin", + "block.biomesoplenty.fir_pressure_plate": "Plaque de pression en pin", + "block.biomesoplenty.fir_sapling": "Pousse de pin", + "block.biomesoplenty.fir_sign": "Panneau en pin", + "block.biomesoplenty.fir_slab": "Dalle en pin", + "block.biomesoplenty.fir_stairs": "Escaliers en pin", + "block.biomesoplenty.fir_trapdoor": "Trappe en pin", + "block.biomesoplenty.fir_wall_sign": "Panneau mural en pin", + "block.biomesoplenty.fir_wood": "Bois de pin", + "block.biomesoplenty.flesh": "Chair", + "block.biomesoplenty.flowering_oak_leaves": "Feuilles de chêne fleuri", + "block.biomesoplenty.flowering_oak_sapling": "Pousse de chêne fleuri", + "block.biomesoplenty.glowflower": "Flower brillante", + "block.biomesoplenty.glowshroom": "Champignon brillant", + "block.biomesoplenty.glowshroom_block": "Bloc de champignons brillants", + "block.biomesoplenty.goldenrod": "Verge d'or", + "block.biomesoplenty.hellbark_button": "Bouton en écorce de l'enfer", + "block.biomesoplenty.hellbark_door": "Porte en écorce de l'enfer", + "block.biomesoplenty.hellbark_fence": "Barrière en écorce de l'enfer", + "block.biomesoplenty.hellbark_fence_gate": "Portillon en écorce de l'enfer", + "block.biomesoplenty.hellbark_leaves": "Feuilles en écorce de l'enfer", + "block.biomesoplenty.hellbark_log": "Bûche en écorce de l'enfer", + "block.biomesoplenty.hellbark_planks": "Plaches en écorce de l'enfer", + "block.biomesoplenty.hellbark_pressure_plate": "Plaque de pression en écorce de l'enfer", + "block.biomesoplenty.hellbark_sapling": "Pousse en écorce de l'enfer", + "block.biomesoplenty.hellbark_sign": "Panneau en écorce de l'enfer", + "block.biomesoplenty.hellbark_slab": "Dalle en écorce de l'enfer", + "block.biomesoplenty.hellbark_stairs": "Escaliers en écorce de l'enfer", + "block.biomesoplenty.hellbark_trapdoor": "Trappe en écorce de l'enfer", + "block.biomesoplenty.hellbark_wall_sign": "Panneau mural en écorce de l'enfer", + "block.biomesoplenty.hellbark_wood": "Bois de l'écorce de l'enfer", + "block.biomesoplenty.jacaranda_button": "Bouton en jacaranda", + "block.biomesoplenty.jacaranda_door": "Porte en jacaranda", + "block.biomesoplenty.jacaranda_fence": "Barrière en jacaranda", + "block.biomesoplenty.jacaranda_fence_gate": "Portillon en jacaranda", + "block.biomesoplenty.jacaranda_leaves": "Fleurs de jacaranda", + "block.biomesoplenty.jacaranda_log": "Bûche de jacaranda", + "block.biomesoplenty.jacaranda_planks": "Planches de jacaranda", + "block.biomesoplenty.jacaranda_pressure_plate": "Plaque de pression en jacaranda", + "block.biomesoplenty.jacaranda_sapling": "Pousse de jacaranda", + "block.biomesoplenty.jacaranda_sign": "Panneau en jacaranda", + "block.biomesoplenty.jacaranda_slab": "Dalle en jacaranda", + "block.biomesoplenty.jacaranda_stairs": "Escaliers en jaccaranda", + "block.biomesoplenty.jacaranda_trapdoor": "Trappe en jacaranda", + "block.biomesoplenty.jacaranda_wall_sign": "Panneau mural en jacaranda", + "block.biomesoplenty.jacaranda_wood": "Bois de jacaranda", + "block.biomesoplenty.lavender": "Lavande", + "block.biomesoplenty.magic_button": "Bouton en bois magique", + "block.biomesoplenty.magic_door": "Porte en bois magique", + "block.biomesoplenty.magic_fence": "Barrière en bois magique", + "block.biomesoplenty.magic_fence_gate": "Portillon en bois magique", + "block.biomesoplenty.magic_leaves": "Feuilles de bois magique", + "block.biomesoplenty.magic_log": "Bûche de bois magique", + "block.biomesoplenty.magic_planks": "Planche en bois magique", + "block.biomesoplenty.magic_pressure_plate": "Plaque de pression en bois magique", + "block.biomesoplenty.magic_sapling": "Pousse d'arbre magique", + "block.biomesoplenty.magic_sign": "Panneau en bois magique", + "block.biomesoplenty.magic_slab": "Dalle en bois magique", + "block.biomesoplenty.magic_stairs": "Escaliers en bois magique", + "block.biomesoplenty.magic_trapdoor": "Trappe en bois magique", + "block.biomesoplenty.magic_wall_sign": "Panneau mural en bois magique", + "block.biomesoplenty.magic_wood": "Bois magique", + "block.biomesoplenty.mahogany_button": "Bouton en acajou d'amérique", + "block.biomesoplenty.mahogany_door": "Porte en acajou d'amérique", + "block.biomesoplenty.mahogany_fence": "Barrière en acajou d'amérique", + "block.biomesoplenty.mahogany_fence_gate": "Portillon en acajou d'amérique", + "block.biomesoplenty.mahogany_leaves": "Feuilles d'acajou d'amérique", + "block.biomesoplenty.mahogany_log": "Bûche d'acajou d'amérique", + "block.biomesoplenty.mahogany_planks": "Planches d'acajou d'amérique", + "block.biomesoplenty.mahogany_pressure_plate": "Plaque de pression en acajou d'amérique", + "block.biomesoplenty.mahogany_sapling": "Pousse d'acajou d'amérique", + "block.biomesoplenty.mahogany_sign": "Panneau en acajou d'amérique", + "block.biomesoplenty.mahogany_slab": "Dalle en acajou d'amérique", + "block.biomesoplenty.mahogany_stairs": "Escaliers en acajou d'amérique", + "block.biomesoplenty.mahogany_trapdoor": "Trappe en acajou d'amérique", + "block.biomesoplenty.mahogany_wall_sign": "Panneau mural en acajou d'amérique", + "block.biomesoplenty.mahogany_wood": "Bois d'acajou d'amérique", + "block.biomesoplenty.mangrove_root": "Racine de mangrove", + "block.biomesoplenty.maple_leaves": "Feuilles d'érable", + "block.biomesoplenty.maple_sapling": "Pousse d'érable", + "block.biomesoplenty.mud": "Boue", + "block.biomesoplenty.mud_brick_slab": "Dalle en briques de boue", + "block.biomesoplenty.mud_brick_stairs": "Escaliers en briques de boue", + "block.biomesoplenty.mud_brick_wall": "Mur en briques de boue", + "block.biomesoplenty.mud_bricks": "Briques de boue", + "block.biomesoplenty.nether_crystal": "Crystal du Nether", + "block.biomesoplenty.nether_crystal_block": "Bloc de crystaux du Nether", + "block.biomesoplenty.orange_autumn_leaves": "Feuilles d'arbre orange d'automne", + "block.biomesoplenty.orange_autumn_sapling": "Pousse d'arbre orange d'automne", + "block.biomesoplenty.orange_cosmos": "Cosmos orange", + "block.biomesoplenty.orange_sand": "Sable orange", + "block.biomesoplenty.orange_sandstone": "Grès orange", + "block.biomesoplenty.orange_sandstone_slab": "Dalle de grès orange", + "block.biomesoplenty.orange_sandstone_stairs": "Escaliers de grès orange", + "block.biomesoplenty.orange_sandstone_wall": "Mur de grès orange", + "block.biomesoplenty.origin_grass_block": "Bloc d'herbe originelle", + "block.biomesoplenty.origin_leaves": "Feuilles originelles", + "block.biomesoplenty.origin_sapling": "Pousse d'arbre originel", + "block.biomesoplenty.palm_button": "Bouton en bois de palme", + "block.biomesoplenty.palm_door": "Porte en bois de palme", + "block.biomesoplenty.palm_fence": "Barrière en bois de palme", + "block.biomesoplenty.palm_fence_gate": "Portillon en bois de palme", + "block.biomesoplenty.palm_leaves": "Feuilles de palmier", + "block.biomesoplenty.palm_log": "Bûche de palmier", + "block.biomesoplenty.palm_planks": "Planches en bois de palme", + "block.biomesoplenty.palm_pressure_plate": "Plaque de pression en bois de palme", + "block.biomesoplenty.palm_sapling": "Pousse de palmier", + "block.biomesoplenty.palm_sign": "Panneau en bois de palme", + "block.biomesoplenty.palm_slab": "Dalle en bois de palme", + "block.biomesoplenty.palm_stairs": "Escaliers en bois de palme", + "block.biomesoplenty.palm_trapdoor": "Trappe en bois de palme", + "block.biomesoplenty.palm_wall_sign": "Panneau mural en bois de palme", + "block.biomesoplenty.palm_wood": "Bois de palme", + "block.biomesoplenty.pink_cherry_leaves": "Fleurs de cerisier rose", + "block.biomesoplenty.pink_cherry_sapling": "Pousse de cerisier rose", + "block.biomesoplenty.pink_daffodil": "Jonquille rose", + "block.biomesoplenty.pink_hibiscus": "Hibiscus rose", + "block.biomesoplenty.potted_burning_blossom": "Fleur brûlante en pot", + "block.biomesoplenty.potted_dead_sapling": "Pousse d'arbre mort en pot", + "block.biomesoplenty.potted_fir_sapling": "Pousse de pin en pot", + "block.biomesoplenty.potted_flowering_oak_sapling": "Pousse de chêne fleuri en pot", + "block.biomesoplenty.potted_glowflower": "Fleur brillante en pot", + "block.biomesoplenty.potted_glowshroom": "Champignon brillant en pot", + "block.biomesoplenty.potted_hellbark_sapling": "Pousse d'écorce de l'enfer en pot", + "block.biomesoplenty.potted_jacaranda_sapling": "Pousse de jacaranda en pot", + "block.biomesoplenty.potted_lavender": "Lavende en pot", + "block.biomesoplenty.potted_magic_sapling": "Pousse d'arbre magique en pot", + "block.biomesoplenty.potted_mahogany_sapling": "Pousse d'acajou d'amérique en pot", + "block.biomesoplenty.potted_maple_sapling": "Pousse d'érable en pot", + "block.biomesoplenty.potted_orange_autumn_sapling": "Pousse d'arbre orange d'automne en pot", + "block.biomesoplenty.potted_orange_cosmos": "Cosmos orange en pot", + "block.biomesoplenty.potted_origin_sapling": "Pousse d'arbre originel en pot", + "block.biomesoplenty.potted_palm_sapling": "Pousse de palmier en pot", + "block.biomesoplenty.potted_pink_cherry_sapling": "Pousse de cerisier rose en pot", + "block.biomesoplenty.potted_pink_daffodil": "Jonquille rose en pot", + "block.biomesoplenty.potted_pink_hibiscus": "Hibiscus rose en pot", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Pousse de bouleau multicolore en pot", + "block.biomesoplenty.potted_redwood_sapling": "Pousse de séquoia en pot", + "block.biomesoplenty.potted_rose": "Rose en pot", + "block.biomesoplenty.potted_sprout": "Germe en pot", + "block.biomesoplenty.potted_toadstool": "Champignon véneneux en pot", + "block.biomesoplenty.potted_umbran_sapling": "Pousse d'arbre de l'ombre en pot", + "block.biomesoplenty.potted_violet": "Violette en pot", + "block.biomesoplenty.potted_white_cherry_sapling": "Pousse de cerisier blanc en pot", + "block.biomesoplenty.potted_wildflower": "Fleur sauvage en pot", + "block.biomesoplenty.potted_willow_sapling": "Pousse de saule en pot", + "block.biomesoplenty.potted_wilted_lily": "Lily fané en pot", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Pousse d'arbre jaune d'automne en pot", + "block.biomesoplenty.rainbow_birch_leaves": "Feuilles de bouleau multicolore", + "block.biomesoplenty.rainbow_birch_sapling": "Pousse de bouleau multicolore", + "block.biomesoplenty.redwood_button": "Bouton en séquoia", + "block.biomesoplenty.redwood_door": "Porte en séquoia", + "block.biomesoplenty.redwood_fence": "Barrière en séquoia", + "block.biomesoplenty.redwood_fence_gate": "Portillon en séquoia", + "block.biomesoplenty.redwood_leaves": "Feuilles de sééquoia", + "block.biomesoplenty.redwood_log": "Bûche de séquoia", + "block.biomesoplenty.redwood_planks": "Planches de séquoia", + "block.biomesoplenty.redwood_pressure_plate": "Plaque de pression en séquoia", + "block.biomesoplenty.redwood_sapling": "Pousse de séquoia", + "block.biomesoplenty.redwood_sign": "Panneau en séquoia", + "block.biomesoplenty.redwood_slab": "Dalle de séquoia", + "block.biomesoplenty.redwood_stairs": "Escaliers en séquoia", + "block.biomesoplenty.redwood_trapdoor": "Trappe en séquoia", + "block.biomesoplenty.redwood_wall_sign": "Panneau mural en séquoia", + "block.biomesoplenty.redwood_wood": "Bois de séquoia", + "block.biomesoplenty.reed": "Roseau", + "block.biomesoplenty.rose": "Rose", + "block.biomesoplenty.smooth_black_sandstone": "Grès noir poli", + "block.biomesoplenty.smooth_black_sandstone_slab": "Dalle de grès noir poli", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Escaliers en grès noir poli", + "block.biomesoplenty.smooth_orange_sandstone": "Grès orange poli", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Dalle de grès orange poli", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Escaliers en grès orange poli", + "block.biomesoplenty.smooth_white_sandstone": "Grès blanc poli", + "block.biomesoplenty.smooth_white_sandstone_slab": "Dalle de grès blanc poli", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Escaliers en grès blanc poli", + "block.biomesoplenty.sprout": "Germe", + "block.biomesoplenty.stripped_cherry_log": "Bûche de cerisier écorcé", + "block.biomesoplenty.stripped_cherry_wood": "Bois de cerisier écorcé", + "block.biomesoplenty.stripped_dead_log": "Bûche de bois mort écorcé", + "block.biomesoplenty.stripped_dead_wood": "Bois mort écorcé", + "block.biomesoplenty.stripped_fir_log": "Bûche de pin écorcé", + "block.biomesoplenty.stripped_fir_wood": "Bois de pin écorcé", + "block.biomesoplenty.stripped_hellbark_log": "Bûche d'écorce de l'enfer écorcé", + "block.biomesoplenty.stripped_hellbark_wood": "Bois d'écorce de l'enfer écorcé", + "block.biomesoplenty.stripped_jacaranda_log": "Bûche de jacaranda écorcé", + "block.biomesoplenty.stripped_jacaranda_wood": "Bois de jacaranda écorcé", + "block.biomesoplenty.stripped_magic_log": "Bûche de bois magique écorcé", + "block.biomesoplenty.stripped_magic_wood": "Bois magique écorcé", + "block.biomesoplenty.stripped_mahogany_log": "Bûche d'acajou d'amérique écorcé", + "block.biomesoplenty.stripped_mahogany_wood": "Bois d'acajou d'amérique écorcé", + "block.biomesoplenty.stripped_palm_log": "Bûche de palmier écorcé", + "block.biomesoplenty.stripped_palm_wood": "Bois de palmier écorcé", + "block.biomesoplenty.stripped_redwood_log": "Bûche de séquoia écorcé", + "block.biomesoplenty.stripped_redwood_wood": "Bois de séquoia écorcé", + "block.biomesoplenty.stripped_umbran_log": "Bûche de bois l'ombre écorcé", + "block.biomesoplenty.stripped_umbran_wood": "Bois de l'ombre écorcé", + "block.biomesoplenty.stripped_willow_log": "Bûche de saule écorcé", + "block.biomesoplenty.stripped_willow_wood": "Bois de saule écorcé", + "block.biomesoplenty.toadstool": "Champignon véneneux", + "block.biomesoplenty.toadstool_block": "Bloc de champignons véneneux", + "block.biomesoplenty.umbran_button": "Bouton en bois de l'ombre", + "block.biomesoplenty.umbran_door": "Porte en bois de l'ombre", + "block.biomesoplenty.umbran_fence": "Barrière en bois de l'ombre", + "block.biomesoplenty.umbran_fence_gate": "Portillon en bois de l'ombre", + "block.biomesoplenty.umbran_leaves": "Feuilles de l'ombre", + "block.biomesoplenty.umbran_log": "Bûche de bois de l'ombre", + "block.biomesoplenty.umbran_planks": "Planches en bois de l'ombre", + "block.biomesoplenty.umbran_pressure_plate": "Plaque de pression en bois de l'ombre", + "block.biomesoplenty.umbran_sapling": "Pousse de bois de l'ombre", + "block.biomesoplenty.umbran_sign": "Panneau en bois de l'ombre", + "block.biomesoplenty.umbran_slab": "Dalle en bois de l'ombre", + "block.biomesoplenty.umbran_stairs": "Escaliers en bois de l'ombre", + "block.biomesoplenty.umbran_trapdoor": "Trappe en bois de l'ombre", + "block.biomesoplenty.umbran_wall_sign": "Panneau mural en bois de l'ombre", + "block.biomesoplenty.umbran_wood": "Bois de l'ombre", + "block.biomesoplenty.violet": "Violette", + "block.biomesoplenty.watergrass": "Herbe d'eau", + "block.biomesoplenty.white_cherry_leaves": "Fleurs de cerisier blanc", + "block.biomesoplenty.white_cherry_sapling": "Pousse de cerisier blanc", + "block.biomesoplenty.white_sand": "Sable blanc", + "block.biomesoplenty.white_sandstone": "Grès blanc", + "block.biomesoplenty.white_sandstone_slab": "Dalle en grès blanc", + "block.biomesoplenty.white_sandstone_stairs": "Escaliers en grès blanc", + "block.biomesoplenty.white_sandstone_wall": "Mur en grès blanc", + "block.biomesoplenty.wildflower": "Fleur sauvage", + "block.biomesoplenty.willow_button": "Bouton en saule", + "block.biomesoplenty.willow_door": "Porte en saule", + "block.biomesoplenty.willow_fence": "Barrière en saule", + "block.biomesoplenty.willow_fence_gate": "Portillon en saule", + "block.biomesoplenty.willow_leaves": "Feuilles de saule", + "block.biomesoplenty.willow_log": "Bûche de saule", + "block.biomesoplenty.willow_planks": "Planches de saule", + "block.biomesoplenty.willow_pressure_plate": "Plaque de pression en saule", + "block.biomesoplenty.willow_sapling": "Pousse de saule", + "block.biomesoplenty.willow_sign": "Panneau en saule", + "block.biomesoplenty.willow_slab": "Dalle en saule", + "block.biomesoplenty.willow_stairs": "Escaliers en saule", + "block.biomesoplenty.willow_trapdoor": "Trappe en saule", + "block.biomesoplenty.willow_vine": "Lianes de saule", + "block.biomesoplenty.willow_wall_sign": "Panneau mural en saule", + "block.biomesoplenty.willow_wood": "Bois de saule", + "block.biomesoplenty.wilted_lily": "Lily fané", + "block.biomesoplenty.yellow_autumn_leaves": "Feuilles d'arbre d'automne jaune", + "block.biomesoplenty.yellow_autumn_sapling": "Pousse d'arbre d'automne jaune", + + "argument.biomesoplenty.biome.invalid": "Argument de biome invalide", + "commands.biomesoplenty.tpbiome.success": "Teleporté %s au biome %s à (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "Le biome %s n'a pas été trouvé!", + + "entity.biomesoplenty.boat_bop": "Bateau" +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/lang/it_it.json b/src/main/resources/assets/biomesoplenty/lang/it_it.json new file mode 100644 index 0000000000..70c69c2f94 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/it_it.json @@ -0,0 +1,398 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Esplora il mondo attorno a te", + "advancements.biomesoplenty.all_biomes.title": "Vagabondo", + "advancements.biomesoplenty.all_biomes.description": "Scopri ogni bioma di Biomes O' Plenty", + + "generator.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alpi", + "biome.biomesoplenty.alps_foothills": "Prealpi", + "biome.biomesoplenty.bayou": "Palude", + "biome.biomesoplenty.bog": "Torbiera", + "biome.biomesoplenty.boreal_forest": "Foresta Boreale", + "biome.biomesoplenty.brushland": "Boscaglia", + "biome.biomesoplenty.chaparral": "Boscaglia", + "biome.biomesoplenty.cherry_blossom_grove": "Foresta di Ciliegi in Fiore", + "biome.biomesoplenty.cold_desert": "Deserto Freddo", + "biome.biomesoplenty.coniferous_forest": "Foresta di Conifere", + "biome.biomesoplenty.crystalline_chasm": "Abisso Cristallino", + "biome.biomesoplenty.dead_forest": "Foresta Morta", + "biome.biomesoplenty.fir_clearing": "Raduna di Abeti", + "biome.biomesoplenty.floodplain": "Pianura Alluvionale", + "biome.biomesoplenty.flower_meadow": "Prato Fiorito", + "biome.biomesoplenty.fungal_jungle": "Giungla Fungina", + "biome.biomesoplenty.grassland": "Prateria", + "biome.biomesoplenty.gravel_beach": "Spiaggia di Ghiaia", + "biome.biomesoplenty.grove": "Boschetto", + "biome.biomesoplenty.highland": "Montanaro", + "biome.biomesoplenty.highland_moor": "Montanaro Moro", + "biome.biomesoplenty.lavender_field": "Campo Di Lavanda", + "biome.biomesoplenty.lush_grassland": "Prati Rigogliosi", + "biome.biomesoplenty.lush_swamp": "Palude Lussureggiante", + "biome.biomesoplenty.mangrove": "Mangrovia", + "biome.biomesoplenty.maple_woods": "Aceri", + "biome.biomesoplenty.marsh": "Acquitrino", + "biome.biomesoplenty.meadow": "Prato", + "biome.biomesoplenty.mire": "Fango", + "biome.biomesoplenty.mystic_grove": "Boschetto Mistico", + "biome.biomesoplenty.oasis": "Oasi", + "biome.biomesoplenty.ominous_woods": "Bosco Minaccioso", + "biome.biomesoplenty.orchard": "Frutteto", + "biome.biomesoplenty.origin_beach": "Origine Spiaggia", + "biome.biomesoplenty.origin_hills": "Origine Colline", + "biome.biomesoplenty.outback": "Entroterra", + "biome.biomesoplenty.overgrown_cliffs": "Scogliere Ricoperte di Vegetazione", + "biome.biomesoplenty.pasture": "Pascolo", + "biome.biomesoplenty.poppy_field": "Campo di Papaveri", + "biome.biomesoplenty.prairie": "Praterie", + "biome.biomesoplenty.pumpkin_patch": "Chiazza di Zucche", + "biome.biomesoplenty.rainbow_valley": "Valle Arcobaleno", + "biome.biomesoplenty.rainforest": "Foresta Pluviale", + "biome.biomesoplenty.redwood_forest": "Foresta di Sequoie", + "biome.biomesoplenty.redwood_forest_edge": "Bordo Foresta di Sequoie", + "biome.biomesoplenty.scrubland": "Boscaglia", + "biome.biomesoplenty.seasonal_forest": "Foresta Stagionale", + "biome.biomesoplenty.shield": "Shield", + "biome.biomesoplenty.shrubland": "Boscaglia", + "biome.biomesoplenty.silkglade": "Radura di Seta", + "biome.biomesoplenty.snowy_coniferous_forest": "Bosco di Conifere Innevate", + "biome.biomesoplenty.snowy_fir_clearing": "Raduna di Abeti Innevata", + "biome.biomesoplenty.snowy_forest": "Foresta Innevata", + "biome.biomesoplenty.steppe": "Steppa", + "biome.biomesoplenty.temperate_rainforest": "Foresta Pluviale Temperata", + "biome.biomesoplenty.temperate_rainforest_hills": "Colline Foresta Pluviale Temperata", + "biome.biomesoplenty.tropical_rainforest": "Foresta Pluviale Tropicale", + "biome.biomesoplenty.tropic_beach": "Spiaggia Tropicale", + "biome.biomesoplenty.tropics": "Tropici", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.undergrowth": "Sottobosco", + "biome.biomesoplenty.visceral_heap": "Mucchio Viscerale", + "biome.biomesoplenty.volcanic_plains": "Pianure Vulcaniche", + "biome.biomesoplenty.volcano": "Vulcano", + "biome.biomesoplenty.wasteland": "Deserto", + "biome.biomesoplenty.wetland": "Palude", + "biome.biomesoplenty.white_beach": "Spiaggia Bianca", + "biome.biomesoplenty.woodland": "Bosco", + "biome.biomesoplenty.xeric_shrubland": "Boscaglia Xerica", + + "item.biomesoplenty.bop_icon": "Icona BOP", + "item.biomesoplenty.cherry_boat": "Barca di ciliegio", + "item.biomesoplenty.dead_boat": "Barca di legno morto", + "item.biomesoplenty.fir_boat": "Barca di pino", + "item.biomesoplenty.hellbark_boat": "Barca di corteccia infernale", + "item.biomesoplenty.jacaranda_boat": "Barca di jacaranda", + "item.biomesoplenty.magic_boat": "Barca di legno magico", + "item.biomesoplenty.mahogany_boat": "Barca di mogano", + "item.biomesoplenty.mud_brick": "Mattone di fango", + "item.biomesoplenty.mud_ball": "Palla di fango", + "item.biomesoplenty.music_disc_wanderer": "Disco musicale", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Barca di palma", + "item.biomesoplenty.redwood_boat": "Barca di sequoia", + "item.biomesoplenty.umbran_boat": "Barca di umbrano", + "item.biomesoplenty.willow_boat": "Barca di salice", + + "block.biomesoplenty.black_sand": "Sabbia nera", + "block.biomesoplenty.black_sandstone": "Arenaria nera", + "block.biomesoplenty.black_sandstone_slab": "Lastra di arenaria nera", + "block.biomesoplenty.black_sandstone_stairs": "Scalini di arenaria nera", + "block.biomesoplenty.black_sandstone_wall": "Muretto di arenaria nera", + "block.biomesoplenty.blue_hydrangea": "Ortensia blu", + "block.biomesoplenty.bramble": "Rovo", + "block.biomesoplenty.burning_blossom": "Fiore ardente", + "block.biomesoplenty.bush": "Cespuglio", + "block.biomesoplenty.cattail": "Stiancia", + "block.biomesoplenty.cherry_button": "Pulsante di ciliegio", + "block.biomesoplenty.cherry_door": "Porta di ciliegio", + "block.biomesoplenty.cherry_fence": "Staccionata di ciliegio", + "block.biomesoplenty.cherry_fence_gate": "Cancelletto di ciliegio", + "block.biomesoplenty.cherry_log": "Tronco di ciliegio", + "block.biomesoplenty.cherry_planks": "Assi di ciliegio", + "block.biomesoplenty.cherry_pressure_plate": "Pedana a pressione di ciliegio", + "block.biomesoplenty.cherry_sign": "Cartello di ciliegio", + "block.biomesoplenty.cherry_slab": "Lastra di ciliegio", + "block.biomesoplenty.cherry_stairs": "Scalini di ciliegio", + "block.biomesoplenty.cherry_trapdoor": "Botola di ciliegio", + "block.biomesoplenty.cherry_wall_sign": "Muretto cartello di ciliegio", + "block.biomesoplenty.cherry_wood": "Legno di ciliegio", + "block.biomesoplenty.chiseled_black_sandstone": "Arenaria nera cesellata", + "block.biomesoplenty.cut_black_sandstone": "Arenaria nera incisa", + "block.biomesoplenty.cut_black_sandstone_slab": "Lastra di arenaria nera incisa", + "block.biomesoplenty.chiseled_white_sandstone": "Arenaria bianca cesellata", + "block.biomesoplenty.cut_white_sandstone": "Arenaria bianca incisa", + "block.biomesoplenty.cut_white_sandstone_slab": "Lastra di arenaria bianca incisa", + "block.biomesoplenty.dead_branch": "Ramo morto", + "block.biomesoplenty.dead_button": "Pulsante di legno morto", + "block.biomesoplenty.dead_door": "Porta di legno morto", + "block.biomesoplenty.dead_fence": "Staccionata di legno morto", + "block.biomesoplenty.dead_fence_gate": "Cancelletto di legno morto", + "block.biomesoplenty.dead_grass": "Erba morta", + "block.biomesoplenty.dead_leaves": "Foglie morte", + "block.biomesoplenty.dead_log": "Tronco morto", + "block.biomesoplenty.dead_planks": "Assi di legno morto", + "block.biomesoplenty.dead_pressure_plate": "Pedana a pressione di legno morto", + "block.biomesoplenty.dead_sapling": "Arboscello morto", + "block.biomesoplenty.dead_sign": "Cartello di legno morto", + "block.biomesoplenty.dead_slab": "Lastra di legno morto", + "block.biomesoplenty.dead_stairs": "Scalini di legno morto", + "block.biomesoplenty.dead_trapdoor": "Botola di legno morto", + "block.biomesoplenty.dead_wall_sign": "Muretto cartello di legno morto", + "block.biomesoplenty.dead_wood": "Legno morto", + "block.biomesoplenty.desert_grass": "Erba desertica", + "block.biomesoplenty.dried_salt": "Sale secco", + "block.biomesoplenty.dune_grass": "Erba paludosa", + "block.biomesoplenty.fir_button": "Pulsante di pino", + "block.biomesoplenty.fir_door": "Porta di pino", + "block.biomesoplenty.fir_fence": "Staccionata di pino", + "block.biomesoplenty.fir_fence_gate": "Cancelletto di pino", + "block.biomesoplenty.fir_leaves": "Foglie di pino", + "block.biomesoplenty.fir_log": "Tronco di pino", + "block.biomesoplenty.fir_planks": "Assi di pino", + "block.biomesoplenty.fir_pressure_plate": "Pedana a pressione di pino", + "block.biomesoplenty.fir_sapling": "Arboscello di pino", + "block.biomesoplenty.fir_sign": "Cartello di pino", + "block.biomesoplenty.fir_slab": "Lastra di pino", + "block.biomesoplenty.fir_stairs": "Scalini di pino", + "block.biomesoplenty.fir_trapdoor": "Botola di pino", + "block.biomesoplenty.fir_wall_sign": "Muretto cartello di pino", + "block.biomesoplenty.fir_wood": "Legno di pino", + "block.biomesoplenty.flesh": "Carne", + "block.biomesoplenty.flowering_oak_leaves": "Foglie di quercia fiorita", + "block.biomesoplenty.flowering_oak_sapling": "Arboscello di quercia fiorita", + "block.biomesoplenty.glowflower": "Fiore luminoso", + "block.biomesoplenty.glowshroom": "Fungo luminoso", + "block.biomesoplenty.glowshroom_block": "Blocco di fungo luminoso", + "block.biomesoplenty.goldenrod": "Verga d'oro", + "block.biomesoplenty.hellbark_button": "Bottone di corteccia infernale", + "block.biomesoplenty.hellbark_door": "Porta di corteccia infernale", + "block.biomesoplenty.hellbark_fence": "Staccionata di corteccia infernale", + "block.biomesoplenty.hellbark_fence_gate": "Cancelletto di corteccia infernale", + "block.biomesoplenty.hellbark_leaves": "Foglie infernali", + "block.biomesoplenty.hellbark_log": "Tronco di corteccia infernale", + "block.biomesoplenty.hellbark_planks": "Assi di corteccia infernale", + "block.biomesoplenty.hellbark_pressure_plate": "Pedana a pressione di corteccia infernale", + "block.biomesoplenty.hellbark_sapling": "Arboscello infernale", + "block.biomesoplenty.hellbark_sign": "Cartello di corteccia infernale", + "block.biomesoplenty.hellbark_slab": "Lastra di corteccia infernale", + "block.biomesoplenty.hellbark_stairs": "Scalini di corteccia infernale", + "block.biomesoplenty.hellbark_trapdoor": "Botola di corteccia infernale", + "block.biomesoplenty.hellbark_wall_sign": "Muretto Cartello di corteccia infernale", + "block.biomesoplenty.hellbark_wood": "corteccia infernale", + "block.biomesoplenty.jacaranda_button": "Pulsante di jacaranda", + "block.biomesoplenty.jacaranda_door": "Porta di di jacaranda", + "block.biomesoplenty.jacaranda_fence": "Staccionata di jacaranda", + "block.biomesoplenty.jacaranda_fence_gate": "Cancelletto di jacaranda", + "block.biomesoplenty.jacaranda_leaves": "Fioritura di jacaranda", + "block.biomesoplenty.jacaranda_log": "Tronco di jacaranda", + "block.biomesoplenty.jacaranda_planks": "Assi di jacaranda", + "block.biomesoplenty.jacaranda_pressure_plate": "Pedana a pressione di jacaranda", + "block.biomesoplenty.jacaranda_sapling": "Arboscello di jacaranda", + "block.biomesoplenty.jacaranda_sign": "Cartello di jacaranda", + "block.biomesoplenty.jacaranda_slab": "Lastra di jacaranda", + "block.biomesoplenty.jacaranda_stairs": "Scalini di jacaranda", + "block.biomesoplenty.jacaranda_trapdoor": "Botola di jacaranda", + "block.biomesoplenty.jacaranda_wall_sign": "Muretto cartello di jacaranda", + "block.biomesoplenty.jacaranda_wood": "Legno di jacaranda", + "block.biomesoplenty.lavender": "Lavanda", + "block.biomesoplenty.magic_button": "Pulsante di legno magico", + "block.biomesoplenty.magic_door": "Porta di legno magico", + "block.biomesoplenty.magic_fence": "Staccionata di legno magico", + "block.biomesoplenty.magic_fence_gate": "Cancelletto di legno magico", + "block.biomesoplenty.magic_leaves": "Foglie magiche", + "block.biomesoplenty.magic_log": "Tronco magico", + "block.biomesoplenty.magic_planks": "Assi di legno magico", + "block.biomesoplenty.magic_pressure_plate": "Pedana a pressione di legno magico", + "block.biomesoplenty.magic_sapling": "Arboscello magico", + "block.biomesoplenty.magic_sign": "Cartello di legno magico", + "block.biomesoplenty.magic_slab": "Lastra di legno magico", + "block.biomesoplenty.magic_stairs": "Scalini di legno magico", + "block.biomesoplenty.magic_trapdoor": "Botola di legno magico", + "block.biomesoplenty.magic_wall_sign": "Muretto cartello di legno magico", + "block.biomesoplenty.magic_wood": "Legno magico", + "block.biomesoplenty.mahogany_button": "Bottone di mogano", + "block.biomesoplenty.mahogany_door": "Porta di mogano", + "block.biomesoplenty.mahogany_fence": "Staccionata di mogano", + "block.biomesoplenty.mahogany_fence_gate": "Cancelletto di mogano", + "block.biomesoplenty.mahogany_leaves": "Foglie di mogano", + "block.biomesoplenty.mahogany_log": "Tronco di mogano", + "block.biomesoplenty.mahogany_planks": "Assi di mogano", + "block.biomesoplenty.mahogany_pressure_plate": "Pedana a pressione di mogano", + "block.biomesoplenty.mahogany_sapling": "Arboscello di mogano", + "block.biomesoplenty.mahogany_sign": "Cartello di mogano", + "block.biomesoplenty.mahogany_slab": "Lastra di mogano", + "block.biomesoplenty.mahogany_stairs": "Scalini di mogano", + "block.biomesoplenty.mahogany_trapdoor": "Botola di mogano", + "block.biomesoplenty.mahogany_wall_sign": "Muretto Cartello di mogano", + "block.biomesoplenty.mahogany_wood": "Legno di mogano", + "block.biomesoplenty.mangrove_root": "Radice di mangrovia", + "block.biomesoplenty.maple_leaves": "Foglie di acero", + "block.biomesoplenty.maple_sapling": "Arboscello di acero", + "block.biomesoplenty.mud": "Fango", + "block.biomesoplenty.mud_brick_slab": "Lastra di mattoni di fango", + "block.biomesoplenty.mud_brick_stairs": "Scalini di mattoni di fango", + "block.biomesoplenty.mud_brick_wall": "Muretto di mattoni di fango", + "block.biomesoplenty.mud_bricks": "Mattoni di fango", + "block.biomesoplenty.nether_crystal": "Cristallo del nether", + "block.biomesoplenty.nether_crystal_block": "Blocco di cristalli del nether", + "block.biomesoplenty.orange_autumn_leaves": "Foglie autunnali arancioni", + "block.biomesoplenty.orange_autumn_sapling": "Arboscello di foglie autunnali", + "block.biomesoplenty.orange_cosmos": "Cosmos arancione", + "block.biomesoplenty.origin_grass_block": "Blocco origine d'erba", + "block.biomesoplenty.origin_leaves": "Foglie origine", + "block.biomesoplenty.origin_sapling": "Arboscello origine", + "block.biomesoplenty.palm_button": "Pulsante di palma", + "block.biomesoplenty.palm_door": "Porta di palma", + "block.biomesoplenty.palm_fence": "Staccionata di palma", + "block.biomesoplenty.palm_fence_gate": "Cancelletto di palma", + "block.biomesoplenty.palm_leaves": "Foglie di palma", + "block.biomesoplenty.palm_log": "Tronco di palma", + "block.biomesoplenty.palm_planks": "Assi di palma", + "block.biomesoplenty.palm_pressure_plate": "Pedana a pressione di palma", + "block.biomesoplenty.palm_sapling": "Arboscello di palma", + "block.biomesoplenty.palm_sign": "Cartello di palma", + "block.biomesoplenty.palm_slab": "Lastra di palma", + "block.biomesoplenty.palm_stairs": "Scalini di palma", + "block.biomesoplenty.palm_trapdoor": "Botola di palma", + "block.biomesoplenty.palm_wall_sign": "Muretto Cartello di palma", + "block.biomesoplenty.palm_wood": "Legno di palma", + "block.biomesoplenty.pink_cherry_leaves": "Fioritura di ciliegio rosa", + "block.biomesoplenty.pink_cherry_sapling": "Arboscello di ciliegio rosa", + "block.biomesoplenty.pink_daffodil": "Daffodil rosa", + "block.biomesoplenty.pink_hibiscus": "Ibisco rosa", + "block.biomesoplenty.potted_burning_blossom": "Fiore ardente invaso", + "block.biomesoplenty.potted_dead_sapling": "Arboscello morto invaso", + "block.biomesoplenty.potted_fir_sapling": "Arboscello di pino invaso", + "block.biomesoplenty.potted_flowering_oak_sapling": "Arboscello di quercia fiorita invaso", + "block.biomesoplenty.potted_glowflower": "Fiore luminoso invaso", + "block.biomesoplenty.potted_glowshroom": "Fungo luminoso invaso", + "block.biomesoplenty.potted_hellbark_sapling": "Arboscello infernale invaso", + "block.biomesoplenty.potted_jacaranda_sapling": "Arboscello di jacaranda invaso", + "block.biomesoplenty.potted_lavender": "Lavanda invasa", + "block.biomesoplenty.potted_magic_sapling": "Arboscello magico invaso", + "block.biomesoplenty.potted_mahogany_sapling": "Arboscello di mogano invaso", + "block.biomesoplenty.potted_maple_sapling": "Arboscello di acero invaso", + "block.biomesoplenty.potted_orange_autumn_sapling": "Arboscello di foglie autunnali invaso", + "block.biomesoplenty.potted_orange_cosmos": "Cosmos arancione invaso", + "block.biomesoplenty.potted_origin_sapling": "Arboscello origine invaso", + "block.biomesoplenty.potted_palm_sapling": "Arboscello di palma invaso", + "block.biomesoplenty.potted_pink_cherry_sapling": "Arboscello di ciliegio rosa invaso", + "block.biomesoplenty.potted_pink_daffodil": "Daffodil rosa invaso", + "block.biomesoplenty.potted_pink_hibiscus": "Ibisco rosa invaso", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Arboscello di betulla arcobaleno invaso", + "block.biomesoplenty.potted_redwood_sapling": "Arboscello di sequoia invaso", + "block.biomesoplenty.potted_rose": "Rosa invasa", + "block.biomesoplenty.potted_sprout": "Germoglio invaso", + "block.biomesoplenty.potted_toadstool": "Fungo velenoso invaso", + "block.biomesoplenty.potted_umbran_sapling": "Arboscello di umbrano invaso", + "block.biomesoplenty.potted_violet": "Viola invaso", + "block.biomesoplenty.potted_white_cherry_sapling": "Arboscello di ciliegio bianco invaso", + "block.biomesoplenty.potted_wildflower": "Fiore di campo invaso", + "block.biomesoplenty.potted_willow_sapling": "Arboscello di salice invaso", + "block.biomesoplenty.potted_wilted_lily": "Giglio appassito invaso", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Arboscello autunno giallo invaso", + "block.biomesoplenty.rainbow_birch_leaves": "Foglie di betulla arcobaleno", + "block.biomesoplenty.rainbow_birch_sapling": "Arboscello di betulla arcobaleno", + "block.biomesoplenty.redwood_button": "Bottone di sequoia", + "block.biomesoplenty.redwood_door": "Porta di sequoia", + "block.biomesoplenty.redwood_fence": "Staccionata di sequoia", + "block.biomesoplenty.redwood_fence_gate": "Cancelletto di sequoia", + "block.biomesoplenty.redwood_leaves": "Foglie di sequoia", + "block.biomesoplenty.redwood_log": "Tronco di sequoia", + "block.biomesoplenty.redwood_planks": "Assi di sequoia", + "block.biomesoplenty.redwood_pressure_plate": "Pedana a pressione di sequoia", + "block.biomesoplenty.redwood_sapling": "Arboscello di sequoia", + "block.biomesoplenty.redwood_sign": "Cartello di sequoia", + "block.biomesoplenty.redwood_slab": "Lastra di sequoia", + "block.biomesoplenty.redwood_stairs": "Scalini di sequoia", + "block.biomesoplenty.redwood_trapdoor": "Botola di sequoia", + "block.biomesoplenty.redwood_wall_sign": "Muretto cartello di sequoia", + "block.biomesoplenty.redwood_wood": "Legno di sequoia", + "block.biomesoplenty.reed": "Canna", + "block.biomesoplenty.root": "Radice", + "block.biomesoplenty.rose": "Rosa", + "block.biomesoplenty.smooth_black_sandstone": "Arenaria nera levigata", + "block.biomesoplenty.smooth_black_sandstone_slab": "Lastra di arenaria nera levigat", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Scalini di arenaria nera levigata", + "block.biomesoplenty.smooth_white_sandstone": "Arenaria bianca levigata", + "block.biomesoplenty.smooth_white_sandstone_slab": "Lastra di arenaria bianca levigata", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Scalini di arenaria bianca levigata", + "block.biomesoplenty.sprout": "Germoglio", + "block.biomesoplenty.stripped_cherry_log": "Tronco di ciliegio scortecciato", + "block.biomesoplenty.stripped_cherry_wood": "Legno di ciliegio scortecciato", + "block.biomesoplenty.stripped_dead_log": "Tronco morto scortecciato", + "block.biomesoplenty.stripped_dead_wood": "Legno morto scortecciato", + "block.biomesoplenty.stripped_fir_log": "Tronco di pino scortecciato", + "block.biomesoplenty.stripped_fir_wood": "Legno di pino scortecciato", + "block.biomesoplenty.stripped_hellbark_log": "Tronco di corteccia infernale scortecciato", + "block.biomesoplenty.stripped_hellbark_wood": "Corteccia infernale scortecciata", + "block.biomesoplenty.stripped_jacaranda_log": "Tronco di jacaranda scortecciato", + "block.biomesoplenty.stripped_jacaranda_wood": "Legno di jacaranda scortecciato", + "block.biomesoplenty.stripped_magic_log": "Tronco magico scortecciato", + "block.biomesoplenty.stripped_magic_wood": "Legno magico scortecciato", + "block.biomesoplenty.stripped_mahogany_log": "Tronco di mogano scortecciato", + "block.biomesoplenty.stripped_mahogany_wood": "Legno di mogano scortecciato", + "block.biomesoplenty.stripped_palm_log": "Tronco di palma scortecciato", + "block.biomesoplenty.stripped_palm_wood": "Legno di palma scortecciato", + "block.biomesoplenty.stripped_redwood_log": "Tronco di sequoia scortecciato", + "block.biomesoplenty.stripped_redwood_wood": "Legno di sequoia scortecciato", + "block.biomesoplenty.stripped_umbran_log": "Tronco di umbrano scortecciato", + "block.biomesoplenty.stripped_umbran_wood": "Legno di umbrano scortecciato", + "block.biomesoplenty.stripped_willow_log": "Tronco di salice scortecciato", + "block.biomesoplenty.stripped_willow_wood": "Legno di salice scortecciato", + "block.biomesoplenty.tall_cattail": "Stiancia alta", + "block.biomesoplenty.tall_wheat": "Grano alto", + "block.biomesoplenty.toadstool": "Fungo velenoso", + "block.biomesoplenty.toadstool_block": "Blocco di funghi velevosi", + "block.biomesoplenty.umbran_button": "Bottone di umbrano", + "block.biomesoplenty.umbran_door": "Porta di umbrano", + "block.biomesoplenty.umbran_fence": "Staccionata di umbrano", + "block.biomesoplenty.umbran_fence_gate": "Cancelletto di umbrano", + "block.biomesoplenty.umbran_leaves": "Foglie di umbrano", + "block.biomesoplenty.umbran_log": "Tronco di umbrano", + "block.biomesoplenty.umbran_planks": "Assi di umbrano", + "block.biomesoplenty.umbran_pressure_plate": "Pedana a pressione di umbrano", + "block.biomesoplenty.umbran_sapling": "Arboscello di umbrano", + "block.biomesoplenty.umbran_sign": "Cartello di umbrano", + "block.biomesoplenty.umbran_slab": "Lastra di umbrano", + "block.biomesoplenty.umbran_stairs": "Scalini di umbrano", + "block.biomesoplenty.umbran_trapdoor": "Botola di umbrano", + "block.biomesoplenty.umbran_wall_sign": "Muretto cartello di umbrano", + "block.biomesoplenty.umbran_wood": "Legno di umbrano", + "block.biomesoplenty.violet": "Viola", + "block.biomesoplenty.watergrass": "Panicastrella", + "block.biomesoplenty.white_cherry_leaves": "Fioritura di ciliegio bianca", + "block.biomesoplenty.white_cherry_sapling": "Arboscello di ciliegio bianco", + "block.biomesoplenty.white_sand": "Sabbia bianca", + "block.biomesoplenty.white_sandstone": "Arenaria bianca", + "block.biomesoplenty.white_sandstone_slab": "Lastra di arenaria bianca", + "block.biomesoplenty.white_sandstone_stairs": "Scalini di arenaria bianca", + "block.biomesoplenty.white_sandstone_wall": "Muretto di arenaria bianca", + "block.biomesoplenty.wildflower": "Fiore di campo", + "block.biomesoplenty.willow_button": "Bottone di salice", + "block.biomesoplenty.willow_door": "Porta di salice", + "block.biomesoplenty.willow_fence": "Staccionata di salice", + "block.biomesoplenty.willow_fence_gate": "Cancelletto di salice", + "block.biomesoplenty.willow_leaves": "Foglie di salice", + "block.biomesoplenty.willow_log": "Tronco di salice", + "block.biomesoplenty.willow_planks": "Legno di salice", + "block.biomesoplenty.willow_pressure_plate": "Pedana a pressione di salice", + "block.biomesoplenty.willow_sapling": "Arboscello di salice", + "block.biomesoplenty.willow_sign": "Cartello di salice", + "block.biomesoplenty.willow_slab": "Lastra di salice", + "block.biomesoplenty.willow_stairs": "Scalini di salice", + "block.biomesoplenty.willow_trapdoor": "Botola di salice", + "block.biomesoplenty.willow_vine": "Rampicante di salice", + "block.biomesoplenty.willow_wall_sign": "Muretto Cartello di salice", + "block.biomesoplenty.willow_wood": "Legno di salice", + "block.biomesoplenty.wilted_lily": "Giglio appassito", + "block.biomesoplenty.yellow_autumn_leaves": "Foglie autunnali gialle", + "block.biomesoplenty.yellow_autumn_sapling": "Arboscello autunno giallo", + + "argument.biomesoplenty.biome.invalid": "Argomento bioma non valido", + "commands.biomesoplenty.tpbiome.success": "É stato teletrasportato %s al bioma %s a (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "Impossibile trovare il bioma %s!", + + "entity.biomesoplenty.boat_bop": "Barca" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/ko_kr.json b/src/main/resources/assets/biomesoplenty/lang/ko_kr.json new file mode 100644 index 0000000000..19475817d9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/ko_kr.json @@ -0,0 +1,416 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "세계를 탐험합니다.", + "advancements.biomesoplenty.all_biomes.title": "방랑자", + "advancements.biomesoplenty.all_biomes.description": "Biomes O' Plenty에 있는 모든 생물군계를 탐험합니다.", + + "generator.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "알프스", + "biome.biomesoplenty.alps_foothills": "알프스 산기슭", + "biome.biomesoplenty.bamboo_blossom_grove": "작은 대나무 숲", + "biome.biomesoplenty.bayou": "강어귀", + "biome.biomesoplenty.bayou_mangrove": "강어귀 맹그로브 숲", + "biome.biomesoplenty.burnt_forest": "불타는 숲", + "biome.biomesoplenty.cherry_blossom_grove": "작은 벚꽃 숲", + "biome.biomesoplenty.cold_desert": "추운 사막", + "biome.biomesoplenty.coniferous_forest": "침엽수림", + "biome.biomesoplenty.coniferous_lakes": "침엽수 호수", + "biome.biomesoplenty.crystalline_chasm": "수정 틈", + "biome.biomesoplenty.dead_forest": "죽은 숲", + "biome.biomesoplenty.dead_swamp": "죽은 늪", + "biome.biomesoplenty.deep_bayou": "깊은 강어귀", + "biome.biomesoplenty.dryland": "건지", + "biome.biomesoplenty.dry_boneyard": "마른 묘지", + "biome.biomesoplenty.fir_clearing": "전나무 빈터", + "biome.biomesoplenty.flower_meadow": "꽃의 초원", + "biome.biomesoplenty.fungal_field": "버섯 들판", + "biome.biomesoplenty.fungal_jungle": "버섯 정글", + "biome.biomesoplenty.golden_prairie": "황금 대초원", + "biome.biomesoplenty.gravel_beach": "자갈 해변", + "biome.biomesoplenty.grove": "작은 숲", + "biome.biomesoplenty.grove_clearing": "작은 숲 빈터", + "biome.biomesoplenty.grove_lakes": "작은 숲 호수", + "biome.biomesoplenty.highland": "고원", + "biome.biomesoplenty.highland_crag": "고원 험준한 바위 산", + "biome.biomesoplenty.highland_moor": "고원 황무지", + "biome.biomesoplenty.jade_cliffs": "비취 절벽", + "biome.biomesoplenty.jade_grassland": "비취 초원", + "biome.biomesoplenty.lavender_field": "라벤더 들판", + "biome.biomesoplenty.lavender_forest": "라벤더 숲", + "biome.biomesoplenty.lush_desert": "우거진 사막", + "biome.biomesoplenty.lush_savanna": "우거진 대초원", + "biome.biomesoplenty.meadow": "목초지", + "biome.biomesoplenty.meadow_forest": "목초지 숲", + "biome.biomesoplenty.mystic_grove": "신비한 작은 숲", + "biome.biomesoplenty.mystic_plains": "신비한 평원", + "biome.biomesoplenty.ominous_woods": "불길한 숲", + "biome.biomesoplenty.ominous_woods": "불길한 수풀산림", + "biome.biomesoplenty.orchard": "과수원", + "biome.biomesoplenty.origin_valley": "원조 계곡", + "biome.biomesoplenty.overgrown_fungal_jungle": "너무 커진 버섯 정글", + "biome.biomesoplenty.prairie": "대초원", + "biome.biomesoplenty.rainbow_hills": "무지개 언덕", + "biome.biomesoplenty.rainforest": "우림", + "biome.biomesoplenty.rainforest_cliffs": "우림 절벽", + "biome.biomesoplenty.rainforest_floodplain": "우림 범람원", + "biome.biomesoplenty.redwood_forest": "삼나무 숲", + "biome.biomesoplenty.redwood_forest_edge": "삼나무 숲 가장자리", + "biome.biomesoplenty.redwood_hills": "삼나무 숲 언덕", + "biome.biomesoplenty.scrubland": "관목지", + "biome.biomesoplenty.seasonal_forest": "계절 숲", + "biome.biomesoplenty.seasonal_orchard": "계절 과수원", + "biome.biomesoplenty.seasonal_pumpkin_patch": "계절 호박 밭", + "biome.biomesoplenty.shrubland": "관목숲", + "biome.biomesoplenty.shrubland_hills": "관목숲 언덕", + "biome.biomesoplenty.silkglade": "비단숲", + "biome.biomesoplenty.silkglade_nest": "비단숲 둥지", + "biome.biomesoplenty.snowy_coniferous_forest": "눈 덮인 침엽수림", + "biome.biomesoplenty.snowy_fir_clearing": "눈 덮인 전나무 빈터", + "biome.biomesoplenty.snowy_maple_forest": "눈 덮인 단풍나무 숲", + "biome.biomesoplenty.tropic_beach": "열대 해변", + "biome.biomesoplenty.tropic_plains": "열대 평원", + "biome.biomesoplenty.tropics": "열대 섬", + "biome.biomesoplenty.tundra": "툰드라", + "biome.biomesoplenty.tundra_basin": "툰드라 유역", + "biome.biomesoplenty.tundra_bog": "툰드라 습지", + "biome.biomesoplenty.undergrowth": "덤불 지대", + "biome.biomesoplenty.visceral_heap": "본능 더미", + "biome.biomesoplenty.volcanic_plains": "화산 평원", + "biome.biomesoplenty.volcano": "화산", + "biome.biomesoplenty.wasteland": "황무지", + "biome.biomesoplenty.wetland": "습지대", + "biome.biomesoplenty.wetland_marsh": "습지대 습지", + "biome.biomesoplenty.withered_abyss": "시든 심연", + "biome.biomesoplenty.wooded_scrubland": "나무로 우거진 관목지", + "biome.biomesoplenty.wooded_wasteland": "나무로 우거진 황무지", + + "item.biomesoplenty.bop_icon": "BOP 아이콘", + "item.biomesoplenty.cherry_boat": "벚나무 보트", + "item.biomesoplenty.dead_boat": "죽은 나무 보트", + "item.biomesoplenty.fir_boat": "전나무 보트", + "item.biomesoplenty.hellbark_boat": "지옥껍질나무 보트", + "item.biomesoplenty.jacaranda_boat": "자카란다나무 보트", + "item.biomesoplenty.magic_boat": "마법나무 보트", + "item.biomesoplenty.mahogany_boat": "마호가니 보트", + "item.biomesoplenty.mud_brick": "진흙 벽돌", + "item.biomesoplenty.mud_ball": "진흙덩이", + "item.biomesoplenty.music_disc_wanderer": "음반", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "야자나무 보트", + "item.biomesoplenty.redwood_boat": "삼나무 보트", + "item.biomesoplenty.umbran_boat": "엄브란나무 보트", + "item.biomesoplenty.willow_boat": "버드나무 보트", + + "block.biomesoplenty.barley": "보리", + "block.biomesoplenty.black_sand": "검은 모래", + "block.biomesoplenty.black_sandstone": "검은 사암", + "block.biomesoplenty.black_sandstone_slab": "검은 사암 반 블록", + "block.biomesoplenty.black_sandstone_stairs": "검은 사암 계단", + "block.biomesoplenty.black_sandstone_wall": "검은 사암 담장", + "block.biomesoplenty.blue_hydrangea": "파란 수국", + "block.biomesoplenty.bramble": "가시나무", + "block.biomesoplenty.burning_blossom": "불타는 꽃", + "block.biomesoplenty.bush": "관목", + "block.biomesoplenty.cattail": "부들", + "block.biomesoplenty.cherry_button": "벚나무 버튼", + "block.biomesoplenty.cherry_door": "벚나무 문", + "block.biomesoplenty.cherry_fence": "벚나무 울타리", + "block.biomesoplenty.cherry_fence_gate": "벚나무 울타리 문", + "block.biomesoplenty.cherry_log": "벚나무 원목", + "block.biomesoplenty.cherry_planks": "벚나무 판자", + "block.biomesoplenty.cherry_pressure_plate": "벚나무 압력판", + "block.biomesoplenty.cherry_sign": "벚나무 표지판", + "block.biomesoplenty.cherry_slab": "벚나무 반 블록", + "block.biomesoplenty.cherry_stairs": "벚나무 계단", + "block.biomesoplenty.cherry_trapdoor": "벚나무 다락문", + "block.biomesoplenty.cherry_wall_sign": "벚나무 간판", + "block.biomesoplenty.cherry_wood": "벚나무", + "block.biomesoplenty.chiseled_black_sandstone": "조각된 검은 사암", + "block.biomesoplenty.cut_black_sandstone": "깎인 검은 사암", + "block.biomesoplenty.cut_black_sandstone_slab": "깎인 검은 사암 반 블록", + "block.biomesoplenty.chiseled_orange_sandstone": "조각된 주황 사암", + "block.biomesoplenty.cut_orange_sandstone": "깎인 주황 사암", + "block.biomesoplenty.cut_orange_sandstone_slab": "깎인 주황 사암 반 블록", + "block.biomesoplenty.chiseled_white_sandstone": "조각된 하얀 사암", + "block.biomesoplenty.cut_white_sandstone": "깍인 하얀 사암", + "block.biomesoplenty.cut_white_sandstone_slab": "깎인 하얀 사암 반 블록", + "block.biomesoplenty.dead_branch": "죽은 나뭇가지", + "block.biomesoplenty.dead_button": "죽은 나무 버튼", + "block.biomesoplenty.dead_door": "죽은 나무 문", + "block.biomesoplenty.dead_fence": "죽은 나무 울타리", + "block.biomesoplenty.dead_fence_gate": "죽은 나무 울타리 문", + "block.biomesoplenty.dead_grass": "죽은 잔디 블록", + "block.biomesoplenty.dead_leaves": "죽은 나무 잎", + "block.biomesoplenty.dead_log": "죽은 나무 원목", + "block.biomesoplenty.dead_planks": "죽은 나무 판자", + "block.biomesoplenty.dead_pressure_plate": "죽은 나무 압력판", + "block.biomesoplenty.dead_sapling": "죽은 나무 묘목", + "block.biomesoplenty.dead_sign": "죽은 나무 표지판", + "block.biomesoplenty.dead_slab": "죽은 나무 반 블록", + "block.biomesoplenty.dead_stairs": "죽은 나무 계단", + "block.biomesoplenty.dead_trapdoor": "죽은 나무 다락문", + "block.biomesoplenty.dead_wall_sign": "죽은 나무 간판", + "block.biomesoplenty.dead_wood": "죽은 나무", + "block.biomesoplenty.desert_grass": "사막 잔디 블록", + "block.biomesoplenty.dried_salt": "건조염", + "block.biomesoplenty.dune_grass": "모래언덕 잔디 블록", + "block.biomesoplenty.fir_button": "전나무 버튼", + "block.biomesoplenty.fir_door": "전나무 문", + "block.biomesoplenty.fir_fence": "전나무 울타리", + "block.biomesoplenty.fir_fence_gate": "전나무 울타리 문", + "block.biomesoplenty.fir_leaves": "전나무 잎", + "block.biomesoplenty.fir_log": "전나무 원목", + "block.biomesoplenty.fir_planks": "전나무 판자", + "block.biomesoplenty.fir_pressure_plate": "전나무 압력판", + "block.biomesoplenty.fir_sapling": "전나무 묘목", + "block.biomesoplenty.fir_sign": "전나무 표지판", + "block.biomesoplenty.fir_slab": "전나무 반 블록", + "block.biomesoplenty.fir_stairs": "전나무 계단", + "block.biomesoplenty.fir_trapdoor": "전나무 다락문", + "block.biomesoplenty.fir_wall_sign": "전나무 간판", + "block.biomesoplenty.fir_wood": "전나무", + "block.biomesoplenty.flesh": "살점 블록", + "block.biomesoplenty.flowering_oak_leaves": "꽃피는 참나무 잎", + "block.biomesoplenty.flowering_oak_sapling": "꽃피는 참나무 묘목", + "block.biomesoplenty.glowflower": "빛나는 꽃", + "block.biomesoplenty.glowshroom": "빛나는 버섯", + "block.biomesoplenty.glowshroom_block": "빛나는 버섯 블록", + "block.biomesoplenty.goldenrod": "미역취", + "block.biomesoplenty.hellbark_button": "지옥껍질나무 버튼", + "block.biomesoplenty.hellbark_door": "지옥껍질나무 문", + "block.biomesoplenty.hellbark_fence": "지옥껍질나무 울타리", + "block.biomesoplenty.hellbark_fence_gate": "지옥껍질나무 울타리 문", + "block.biomesoplenty.hellbark_leaves": "지옥껍질나무 잎", + "block.biomesoplenty.hellbark_log": "지옥껍질나무 원목", + "block.biomesoplenty.hellbark_planks": "지옥껍질나무 판자", + "block.biomesoplenty.hellbark_pressure_plate": "지옥껍질나무 압력판", + "block.biomesoplenty.hellbark_sapling": "지옥껍질나무 묘목", + "block.biomesoplenty.hellbark_sign": "지옥껍질나무 표지판", + "block.biomesoplenty.hellbark_slab": "지옥껍질나무 반 블록", + "block.biomesoplenty.hellbark_stairs": "지옥껍질나무 계단", + "block.biomesoplenty.hellbark_trapdoor": "지옥껍질나무 다락문", + "block.biomesoplenty.hellbark_wall_sign": "지옥껍질나무 간판", + "block.biomesoplenty.hellbark_wood": "지옥껍질나무", + "block.biomesoplenty.jacaranda_button": "자카란다나무 버튼", + "block.biomesoplenty.jacaranda_door": "자카란다나무 문", + "block.biomesoplenty.jacaranda_fence": "자카란다나무 울타리", + "block.biomesoplenty.jacaranda_fence_gate": "자카란다나무 울타리 문", + "block.biomesoplenty.jacaranda_leaves": "자카란다나무 잎", + "block.biomesoplenty.jacaranda_log": "자카란다나무 원목", + "block.biomesoplenty.jacaranda_planks": "자카란다나무 판자", + "block.biomesoplenty.jacaranda_pressure_plate": "자카란다나무 압력판", + "block.biomesoplenty.jacaranda_sapling": "자카란다나무 묘목", + "block.biomesoplenty.jacaranda_sign": "자카란다나무 표지판", + "block.biomesoplenty.jacaranda_slab": "자카란다나무 반 블록", + "block.biomesoplenty.jacaranda_stairs": "자카란다나무 계단", + "block.biomesoplenty.jacaranda_trapdoor": "자카란다나무 다락문", + "block.biomesoplenty.jacaranda_wall_sign": "자카란다나무 간판", + "block.biomesoplenty.jacaranda_wood": "자카란다나무", + "block.biomesoplenty.lavender": "라벤더", + "block.biomesoplenty.magic_button": "마법나무 버튼", + "block.biomesoplenty.magic_door": "마법나무 문", + "block.biomesoplenty.magic_fence": "마법나무 울타리", + "block.biomesoplenty.magic_fence_gate": "마법나무 울타리 문", + "block.biomesoplenty.magic_leaves": "마법나무 잎", + "block.biomesoplenty.magic_log": "마법나무 원목", + "block.biomesoplenty.magic_planks": "마법나무 판자", + "block.biomesoplenty.magic_pressure_plate": "마법나무 압력판", + "block.biomesoplenty.magic_sapling": "마법나무 묘목", + "block.biomesoplenty.magic_sign": "마법나무 표지판", + "block.biomesoplenty.magic_slab": "마법나무 반 블록", + "block.biomesoplenty.magic_stairs": "마법나무 계단", + "block.biomesoplenty.magic_trapdoor": "마법나무 다락문", + "block.biomesoplenty.magic_wall_sign": "마법나무 간판", + "block.biomesoplenty.magic_wood": "마법나무", + "block.biomesoplenty.mahogany_button": "마호가니 버튼", + "block.biomesoplenty.mahogany_door": "마호가니 문", + "block.biomesoplenty.mahogany_fence": "마호가니 울타리", + "block.biomesoplenty.mahogany_fence_gate": "마호가니 울타리 문", + "block.biomesoplenty.mahogany_leaves": "마호가니 잎", + "block.biomesoplenty.mahogany_log": "마호가니 원목", + "block.biomesoplenty.mahogany_planks": "마호가니 판자", + "block.biomesoplenty.mahogany_pressure_plate": "마호가니 압력판", + "block.biomesoplenty.mahogany_sapling": "마호가니 묘목", + "block.biomesoplenty.mahogany_sign": "마호가니 표지판", + "block.biomesoplenty.mahogany_slab": "마호가니 반 블록", + "block.biomesoplenty.mahogany_stairs": "마호가니 계단", + "block.biomesoplenty.mahogany_trapdoor": "마호가니 다락문", + "block.biomesoplenty.mahogany_wall_sign": "마호가니 간판", + "block.biomesoplenty.mahogany_wood": "마호가니", + "block.biomesoplenty.mangrove_root": "맹그로브 뿌리", + "block.biomesoplenty.maple_leaves": "단풍나무 잎", + "block.biomesoplenty.maple_sapling": "단풍나무 묘목", + "block.biomesoplenty.mud": "진흙", + "block.biomesoplenty.mud_brick_slab": "진흙 벽돌 반 블록", + "block.biomesoplenty.mud_brick_stairs": "진흙 벽돌 계단", + "block.biomesoplenty.mud_brick_wall": "진흙 벽돌 담장", + "block.biomesoplenty.mud_bricks": "진흙 벽돌", + "block.biomesoplenty.nether_crystal": "네더 수정", + "block.biomesoplenty.nether_crystal_block": "네더 수정 블록", + "block.biomesoplenty.orange_autumn_leaves": "주황가을나무 잎", + "block.biomesoplenty.orange_autumn_sapling": "주황가을나무 묘목", + "block.biomesoplenty.orange_cosmos": "주황 코스모스", + "block.biomesoplenty.orange_sand": "주황 모래", + "block.biomesoplenty.orange_sandstone": "주황 사암", + "block.biomesoplenty.orange_sandstone_slab": "주황 사암 반 블록", + "block.biomesoplenty.orange_sandstone_stairs": "주황 사암 계단", + "block.biomesoplenty.orange_sandstone_wall": "주황 사암 담장", + "block.biomesoplenty.origin_grass_block": "원조 유리 블록", + "block.biomesoplenty.origin_leaves": "원조나무 잎", + "block.biomesoplenty.origin_sapling": "원조나무 묘목", + "block.biomesoplenty.palm_button": "야자나무 버튼", + "block.biomesoplenty.palm_door": "야자나무 문", + "block.biomesoplenty.palm_fence": "야자나무 울타리", + "block.biomesoplenty.palm_fence_gate": "야자나무 울타리 문", + "block.biomesoplenty.palm_leaves": "야자나무 잎", + "block.biomesoplenty.palm_log": "야자나무 원목", + "block.biomesoplenty.palm_planks": "야자나무 판자", + "block.biomesoplenty.palm_pressure_plate": "야자나무 압력판", + "block.biomesoplenty.palm_sapling": "야자나무 묘목", + "block.biomesoplenty.palm_sign": "야자나무 표지판", + "block.biomesoplenty.palm_slab": "야자나무 반 블록", + "block.biomesoplenty.palm_stairs": "야자나무 계단", + "block.biomesoplenty.palm_trapdoor": "야자나무 다락문", + "block.biomesoplenty.palm_wall_sign": "야자나무 간판", + "block.biomesoplenty.palm_wood": "야자나무", + "block.biomesoplenty.pink_cherry_leaves": "분홍벚나무 잎", + "block.biomesoplenty.pink_cherry_sapling": "분홍벚나무 묘목", + "block.biomesoplenty.pink_daffodil": "분홍 수선화", + "block.biomesoplenty.pink_hibiscus": "분홍 하비스쿠스", + "block.biomesoplenty.potted_burning_blossom": "화분에 심은 불타는 꽃", + "block.biomesoplenty.potted_dead_sapling": "화분에 심은 죽은 나무 묘목", + "block.biomesoplenty.potted_fir_sapling": "화분에 심은 전나무 묘목", + "block.biomesoplenty.potted_flowering_oak_sapling": "화분에 심은 꽃피는 참나무 묘목", + "block.biomesoplenty.potted_glowflower": "화분에 심은 빛나는 꽃", + "block.biomesoplenty.potted_glowshroom": "화분에 심은 빛나는 버섯", + "block.biomesoplenty.potted_hellbark_sapling": "화분에 심은 지옥껍질나무 묘목", + "block.biomesoplenty.potted_jacaranda_sapling": "화분에 심은 자카란다나무 묘목", + "block.biomesoplenty.potted_lavender": "화분에 심은 라벤더", + "block.biomesoplenty.potted_magic_sapling": "화분에 심은 마법나무 묘목", + "block.biomesoplenty.potted_mahogany_sapling": "화분에 심은 마호가니 묘목", + "block.biomesoplenty.potted_maple_sapling": "화분에 심은 단풍나무 묘목", + "block.biomesoplenty.potted_orange_autumn_sapling": "화분에 심은 주황가을나무 묘목", + "block.biomesoplenty.potted_orange_cosmos": "화분에 심은 주황 코스모스", + "block.biomesoplenty.potted_origin_sapling": "화분에 심은 원조나무 묘목", + "block.biomesoplenty.potted_palm_sapling": "화분에 심은 야자나무 묘목", + "block.biomesoplenty.potted_pink_cherry_sapling": "화분에 심은 분홍벚나무 묘목", + "block.biomesoplenty.potted_pink_daffodil": "화분에 심은 분홍 수선화", + "block.biomesoplenty.potted_pink_hibiscus": "화분에 심은 분홍 하비스쿠스", + "block.biomesoplenty.potted_rainbow_birch_sapling": "화분에 심은 무지개자작나무 묘목", + "block.biomesoplenty.potted_redwood_sapling": "화분에 심은 삼나무 묘목", + "block.biomesoplenty.potted_rose": "화분에 심은 장미", + "block.biomesoplenty.potted_sprout": "화분에 심은 싹", + "block.biomesoplenty.potted_toadstool": "화분에 심은 독버섯", + "block.biomesoplenty.potted_umbran_sapling": "화분에 심은 엄브란나무 묘목", + "block.biomesoplenty.potted_violet": "화분에 심은 제비꽃", + "block.biomesoplenty.potted_white_cherry_sapling": "화분에 심은 하얀벚나무 묘목", + "block.biomesoplenty.potted_wildflower": "화분에 심은 야생화", + "block.biomesoplenty.potted_willow_sapling": "화분에 심은 버드나무 묘목", + "block.biomesoplenty.potted_wilted_lily": "화분에 심은 시든 백합", + "block.biomesoplenty.potted_yellow_autumn_sapling": "화분에 심은 노란가을나무 묘목", + "block.biomesoplenty.rainbow_birch_leaves": "무지개자작나무 잎", + "block.biomesoplenty.rainbow_birch_sapling": "무지개자작나무 묘목", + "block.biomesoplenty.redwood_button": "삼나무 버튼", + "block.biomesoplenty.redwood_door": "삼나무 문", + "block.biomesoplenty.redwood_fence": "삼나무 울타리", + "block.biomesoplenty.redwood_fence_gate": "삼나무 울타리 문", + "block.biomesoplenty.redwood_leaves": "삼나무 잎", + "block.biomesoplenty.redwood_log": "삼나무 원목", + "block.biomesoplenty.redwood_planks": "삼나무 판자", + "block.biomesoplenty.redwood_pressure_plate": "삼나무 압력판", + "block.biomesoplenty.redwood_sapling": "삼나무 묘목", + "block.biomesoplenty.redwood_sign": "삼나무 표지판", + "block.biomesoplenty.redwood_slab": "삼나무 반 블록", + "block.biomesoplenty.redwood_stairs": "삼나무 계단", + "block.biomesoplenty.redwood_trapdoor": "삼나무 다락문", + "block.biomesoplenty.redwood_wall_sign": "삼나무 간판", + "block.biomesoplenty.redwood_wood": "삼나무", + "block.biomesoplenty.reed": "갈대", + "block.biomesoplenty.rose": "장미", + "block.biomesoplenty.smooth_black_sandstone": "매끄러운 검은 사암", + "block.biomesoplenty.smooth_black_sandstone_slab": "매끄러운 검은 사암 반 블록", + "block.biomesoplenty.smooth_black_sandstone_stairs": "매끄러운 검은 사암 계단", + "block.biomesoplenty.smooth_orange_sandstone": "매끄러운 주황 사암", + "block.biomesoplenty.smooth_orange_sandstone_slab": "매끄러운 주황 사암 반 블록", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "매끄러운 주황 사암 계단", + "block.biomesoplenty.smooth_white_sandstone": "매끄러운 하얀 사암", + "block.biomesoplenty.smooth_white_sandstone_slab": "매끄러운 하얀 사암 반 블록", + "block.biomesoplenty.smooth_white_sandstone_stairs": "매끄러운 하얀 사암 계단", + "block.biomesoplenty.sprout": "싹", + "block.biomesoplenty.stripped_cherry_log": "껍질 벗긴 벚나무 원목", + "block.biomesoplenty.stripped_cherry_wood": "껍질 벗긴 벚나무", + "block.biomesoplenty.stripped_dead_log": "껍질 벗긴 죽은 나무 원목", + "block.biomesoplenty.stripped_dead_wood": "껍질 벗긴 죽은 나무", + "block.biomesoplenty.stripped_fir_log": "껍질 벗긴 전나무 원목", + "block.biomesoplenty.stripped_fir_wood": "껍질 벗긴 전나무", + "block.biomesoplenty.stripped_hellbark_log": "껍질 벗긴 지옥껍질나무 원목", + "block.biomesoplenty.stripped_hellbark_wood": "껍질 벗긴 지옥껍질나무", + "block.biomesoplenty.stripped_jacaranda_log": "껍질 벗긴 자카란다나무 원목", + "block.biomesoplenty.stripped_jacaranda_wood": "껍질 벗긴 자카란다나무", + "block.biomesoplenty.stripped_magic_log": "껍질 벗긴 마법나무 원목", + "block.biomesoplenty.stripped_magic_wood": "껍질 벗긴 마법나무", + "block.biomesoplenty.stripped_mahogany_log": "껍질 벗긴 마호가니 원목", + "block.biomesoplenty.stripped_mahogany_wood": "껍질 벗긴 마호가니", + "block.biomesoplenty.stripped_palm_log": "껍질 벗긴 야자나무 원목", + "block.biomesoplenty.stripped_palm_wood": "껍질 벗긴 야자나무", + "block.biomesoplenty.stripped_redwood_log": "껍질 벗긴 삼나무 원목", + "block.biomesoplenty.stripped_redwood_wood": "껍질 벗긴 삼나무", + "block.biomesoplenty.stripped_umbran_log": "껍질 벗긴 엄브란나무 원목", + "block.biomesoplenty.stripped_umbran_wood": "껍질 벗긴 엄브란나무", + "block.biomesoplenty.stripped_willow_log": "껍질 벗긴 버드나무 원목", + "block.biomesoplenty.stripped_willow_wood": "껍질 벗긴 버드나무", + "block.biomesoplenty.toadstool": "독버섯", + "block.biomesoplenty.toadstool_block": "독버섯 블록", + "block.biomesoplenty.umbran_button": "엄브란나무 버튼", + "block.biomesoplenty.umbran_door": "엄브란나무 문", + "block.biomesoplenty.umbran_fence": "엄브란나무 울타리", + "block.biomesoplenty.umbran_fence_gate": "엄브란나무 울타리 문", + "block.biomesoplenty.umbran_leaves": "엄브란나무 잎", + "block.biomesoplenty.umbran_log": "엄브란나무 원목", + "block.biomesoplenty.umbran_planks": "엄브란나무 판자", + "block.biomesoplenty.umbran_pressure_plate": "엄브란나무 압력판", + "block.biomesoplenty.umbran_sapling": "엄브란나무 묘목", + "block.biomesoplenty.umbran_sign": "엄브란나무 표지판", + "block.biomesoplenty.umbran_slab": "엄브란나무 반 블록", + "block.biomesoplenty.umbran_stairs": "엄브란나무 계단", + "block.biomesoplenty.umbran_trapdoor": "엄브란나무 다락문", + "block.biomesoplenty.umbran_wall_sign": "엄브란나무 간판", + "block.biomesoplenty.umbran_wood": "엄브란나무", + "block.biomesoplenty.violet": "제비꽃", + "block.biomesoplenty.watergrass": "모기골", + "block.biomesoplenty.white_cherry_leaves": "하얀벚나무 잎", + "block.biomesoplenty.white_cherry_sapling": "하얀벚나무 묘목", + "block.biomesoplenty.white_sand": "하얀 모래", + "block.biomesoplenty.white_sandstone": "하얀 사암", + "block.biomesoplenty.white_sandstone_slab": "하얀 사암 반 블록", + "block.biomesoplenty.white_sandstone_stairs": "하얀 사암 계단", + "block.biomesoplenty.white_sandstone_wall": "하얀 사암 담장", + "block.biomesoplenty.wildflower": "야생화", + "block.biomesoplenty.willow_button": "버드나무 버튼", + "block.biomesoplenty.willow_door": "버드나무 문", + "block.biomesoplenty.willow_fence": "버드나무 울타리", + "block.biomesoplenty.willow_fence_gate": "버드나무 울타리 문", + "block.biomesoplenty.willow_leaves": "버드나무 잎", + "block.biomesoplenty.willow_log": "버드나무 원목", + "block.biomesoplenty.willow_planks": "버드나무 판자", + "block.biomesoplenty.willow_pressure_plate": "버드나무 압력판", + "block.biomesoplenty.willow_sapling": "버드나무 묘목", + "block.biomesoplenty.willow_sign": "버드나무 표지판", + "block.biomesoplenty.willow_slab": "버드나무 반 블록", + "block.biomesoplenty.willow_stairs": "버드나무 계단", + "block.biomesoplenty.willow_trapdoor": "버드나무 다락문", + "block.biomesoplenty.willow_vine": "버드나무 덩굴", + "block.biomesoplenty.willow_wall_sign": "버드나무 간판", + "block.biomesoplenty.willow_wood": "버드나무", + "block.biomesoplenty.wilted_lily": "시든 백합", + "block.biomesoplenty.yellow_autumn_leaves": "노란가을나무 잎", + "block.biomesoplenty.yellow_autumn_sapling": "노란가을나무 묘목", + + "argument.biomesoplenty.biome.invalid": "잘못된 생물군계 변수 입니다.", + "commands.biomesoplenty.tpbiome.success": "%s에서 (%s, %s, %s)에 있는 %s 생물군계로 이동되었습니다.", + "commands.biomesoplenty.tpbiome.error": "%s 생물군계를 찾을 수 없습니다!", + + "entity.biomesoplenty.boat_bop": "보트" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/nl_nl.json b/src/main/resources/assets/biomesoplenty/lang/nl_nl.json new file mode 100644 index 0000000000..71782ba178 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/nl_nl.json @@ -0,0 +1,381 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Verken de wereld om je heen", + "advancements.biomesoplenty.all_biomes.title": "Zwerver", + "advancements.biomesoplenty.all_biomes.description": "Ontdek elk klimaat in Biomes O' Plenty", + + "generator.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alpen", + "biome.biomesoplenty.alps_foothills": "Alpen voorgebergte", + "biome.biomesoplenty.ashen_inferno": "Essen Inferno", + "biome.biomesoplenty.bayou": "Moerassige rivierarm", + "biome.biomesoplenty.bog": "Bog", + "biome.biomesoplenty.boreal_forest": "Boreaal bos", + "biome.biomesoplenty.brushland": "Brushland", + "biome.biomesoplenty.chaparral": "Dicht struikgewas", + "biome.biomesoplenty.cherry_blossom_grove": "Kersenbloesem bosje", + "biome.biomesoplenty.cold_desert": "Koude woestijn", + "biome.biomesoplenty.coniferous_forest": "Naaldbos", + "biome.biomesoplenty.dead_forest": "Dood bos", + "biome.biomesoplenty.fir_clearing": "Fir Clearing", + "biome.biomesoplenty.floodplain": "Overstromingsvlakte", + "biome.biomesoplenty.flower_meadow": "Bloemenweide", + "biome.biomesoplenty.fungi_forest": "Schimmels bos", + "biome.biomesoplenty.glowstone_grotto": "Gloeisteen grot", + "biome.biomesoplenty.grassland": "Grasland", + "biome.biomesoplenty.gravel_beach": "Kiezelstrand", + "biome.biomesoplenty.grove": "Bosje", + "biome.biomesoplenty.highland": "Hoogland", + "biome.biomesoplenty.highland_moor": "Hoogland Moor", + "biome.biomesoplenty.lavender_field": "Lavendel veld", + "biome.biomesoplenty.lush_grassland": "Weelderig grasland", + "biome.biomesoplenty.lush_swamp": "Weelderig moeras", + "biome.biomesoplenty.mangrove": "Mangrove", + "biome.biomesoplenty.maple_woods": "Maple bossen", + "biome.biomesoplenty.marsh": "Moeras", + "biome.biomesoplenty.meadow": "Weide", + "biome.biomesoplenty.mire": "Slijk", + "biome.biomesoplenty.mystic_grove": "Mysticus Grove", + "biome.biomesoplenty.oasis": "Oase", + "biome.biomesoplenty.ominous_woods": "Onheilspellend bos", + "biome.biomesoplenty.orchard": "Boomgaard", + "biome.biomesoplenty.origin_beach": "Orgineele strand ", + "biome.biomesoplenty.origin_hills": "Orgineele heuvels", + "biome.biomesoplenty.outback": "Binnenland", + "biome.biomesoplenty.overgrown_cliffs": "Overwoekerde kliffen", + "biome.biomesoplenty.pasture": "Weide", + "biome.biomesoplenty.poppy_field": "Klaproosveld", + "biome.biomesoplenty.prairie": "Prairie", + "biome.biomesoplenty.pumpkin_patch": "Pompoen patch", + "biome.biomesoplenty.rainbow_valley": "Regenboog vallei", + "biome.biomesoplenty.rainforest": "Regenwoud", + "biome.biomesoplenty.redwood_forest": "Redwood bos", + "biome.biomesoplenty.redwood_forest_edge": "Redwood bosrand", + "biome.biomesoplenty.scrubland": "Scrubland", + "biome.biomesoplenty.seasonal_forest": "Seizoensbos", + "biome.biomesoplenty.shield": "Schild", + "biome.biomesoplenty.shrubland": "Shrubland", + "biome.biomesoplenty.silkglade": "Silkglade", + "biome.biomesoplenty.snowy_coniferous_forest": "Besneeuwende naaldbos", + "biome.biomesoplenty.snowy_fir_clearing": "Besneeuwde spar", + "biome.biomesoplenty.snowy_forest": "Besneeuwde bos", + "biome.biomesoplenty.steppe": "Veld", + "biome.biomesoplenty.temperate_rainforest": "Gematigd regenwoud", + "biome.biomesoplenty.temperate_rainforest_hills": "Gematigde regenwoudheuvels", + "biome.biomesoplenty.tropical_rainforest": "Tropisch regenwoud", + "biome.biomesoplenty.tropics": "Tropen", + "biome.biomesoplenty.tundra": "Toendra", + "biome.biomesoplenty.undergarden": "Onder tuin", + "biome.biomesoplenty.visceral_heap": "Viscerale Hoop", + "biome.biomesoplenty.volcano": "Vulkaan", + "biome.biomesoplenty.volcano_edge": "Vulkaanrand", + "biome.biomesoplenty.wasteland": "Woestenij", + "biome.biomesoplenty.wetland": "Wetland", + "biome.biomesoplenty.white_beach": "Wit strand", + "biome.biomesoplenty.woodland": "Bos", + "biome.biomesoplenty.xeric_shrubland": "Xeric struikgewas", + "item.biomesoplenty.bop_icon": "BOP Icoon", + "item.biomesoplenty.cherry_boat": "Kersenboot", + "item.biomesoplenty.dead_boat": "Dode boot", + "item.biomesoplenty.fir_boat": "Fir boot", + "item.biomesoplenty.hellbark_boat": "Hellbark boot", + "item.biomesoplenty.jacaranda_boat": "Jacaranda boot", + "item.biomesoplenty.magic_boat": "Magische boot", + "item.biomesoplenty.mahogany_boat": "Mahonie boot", + "item.biomesoplenty.mud_brick": "Modderbaksteen", + "item.biomesoplenty.mud_ball": "Modderbal", + "item.biomesoplenty.music_disc_wanderer": "Muziekschijf", + + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Palmboot", + "item.biomesoplenty.redwood_boat": "Redwood boot", + "item.biomesoplenty.umbran_boat": "Umbran boot", + "item.biomesoplenty.willow_boat": "Wilg boot", + + "block.biomesoplenty.ash_block": "Asblok", + "block.biomesoplenty.barley": "Gerst", + "block.biomesoplenty.blue_hydrangea": "Blauwe hortensia", + "block.biomesoplenty.bramble": "Braamstruik", + "block.biomesoplenty.burning_blossom": "Brandende bloesem", + "block.biomesoplenty.bush": "Struik", + "block.biomesoplenty.cattail": "Lisdodde", + "block.biomesoplenty.cherry_button": "Kersen knop", + "block.biomesoplenty.cherry_door": "Kersen deur", + "block.biomesoplenty.cherry_fence": "Kersen hek", + "block.biomesoplenty.cherry_fence_gate": "Kersen hek poort", + "block.biomesoplenty.cherry_log": "Kersenhout", + "block.biomesoplenty.cherry_planks": "Kersenplanken", + "block.biomesoplenty.cherry_pressure_plate": "Kersen drukplaat", + "block.biomesoplenty.cherry_sign": "Kersenbord", + "block.biomesoplenty.cherry_slab": "Kersen plaat", + "block.biomesoplenty.cherry_stairs": "Kersen trap", + "block.biomesoplenty.cherry_trapdoor": "Kersenvalluik", + "block.biomesoplenty.cherry_wall_sign": "Kersenmuurbord", + "block.biomesoplenty.cherry_wood": "Kersenhout", + "block.biomesoplenty.chiseled_white_sandstone": "Gebeiteld wit zandsteen", + "block.biomesoplenty.cut_white_sandstone": "Gesneden witte zandsteen", + "block.biomesoplenty.cut_white_sandstone_slab": "Gesneden witte zandsteenplaat", + "block.biomesoplenty.dead_button": "Dode knop", + "block.biomesoplenty.dead_door": "Dode deur", + "block.biomesoplenty.dead_fence": "Dode hek", + "block.biomesoplenty.dead_fence_gate": "Dode hek poort", + "block.biomesoplenty.dead_grass": "Dood gras", + "block.biomesoplenty.dead_leaves": "Dode bladeren", + "block.biomesoplenty.dead_log": "Dood hout", + "block.biomesoplenty.dead_planks": "Dode planken", + "block.biomesoplenty.dead_pressure_plate": "Dode drukplaat", + "block.biomesoplenty.dead_sapling": "Dode boompje", + "block.biomesoplenty.dead_sign": "Dood bord", + "block.biomesoplenty.dead_slab": "Dode plaat", + "block.biomesoplenty.dead_stairs": "Dode trap", + "block.biomesoplenty.dead_trapdoor": "Dode valluik", + "block.biomesoplenty.dead_wall_sign": "Dode muurbord", + "block.biomesoplenty.dead_wood": "Dood hout", + "block.biomesoplenty.desert_grass": "Woestijn gras", + "block.biomesoplenty.dried_sand": "Gedroogd zand", + "block.biomesoplenty.dune_grass": "Duingras", + "block.biomesoplenty.fir_button": "Spar knop", + "block.biomesoplenty.fir_door": "Spar deuro", + "block.biomesoplenty.fir_fence": "Spar hek", + "block.biomesoplenty.fir_fence_gate": "Spar hek poort", + "block.biomesoplenty.fir_leaves": "Spar bladeren", + "block.biomesoplenty.fir_log": "Spar hout", + "block.biomesoplenty.fir_planks": "Spar planken", + "block.biomesoplenty.fir_pressure_plate": "Spar drukplaat", + "block.biomesoplenty.fir_sapling": "Spar boompje", + "block.biomesoplenty.fir_sign": "Spar bord", + "block.biomesoplenty.fir_slab": "Spar plaat", + "block.biomesoplenty.fir_stairs": "Spar trap", + "block.biomesoplenty.fir_trapdoor": "Spar valluik", + "block.biomesoplenty.fir_wall_sign": "Spar muurbord", + "block.biomesoplenty.fir_wood": "Spar hout", + "block.biomesoplenty.flesh": "Vlees", + "block.biomesoplenty.flowering_oak_leaves": "Bloeiende eikenbladeren", + "block.biomesoplenty.flowering_oak_sapling": "Bloeiend eiken boompje", + "block.biomesoplenty.glowflower": "Gloeibloem", + "block.biomesoplenty.glowshroom": "Gloeishroom", + "block.biomesoplenty.goldenrod": "Gouden staaf", + "block.biomesoplenty.hellbark_button": "Hellbark knop", + "block.biomesoplenty.hellbark_door": "Hellbark deur", + "block.biomesoplenty.hellbark_fence": "Hellbark hek", + "block.biomesoplenty.hellbark_fence_gate": "Hellbark hek poort", + "block.biomesoplenty.hellbark_leaves": "Hellbark bladeren", + "block.biomesoplenty.hellbark_log": "Hellbark hout", + "block.biomesoplenty.hellbark_planks": "Hellbark planken", + "block.biomesoplenty.hellbark_pressure_plate": "Hellbark drukplaat", + "block.biomesoplenty.hellbark_sapling": "Hellbark boompje", + "block.biomesoplenty.hellbark_sign": "Hellbark bord", + "block.biomesoplenty.hellbark_slab": "Hellbark plaat", + "block.biomesoplenty.hellbark_stairs": "Hellbark trap", + "block.biomesoplenty.hellbark_trapdoor": "Hellbark valluik", + "block.biomesoplenty.hellbark_wall_sign": "Hellbark muurbord", + "block.biomesoplenty.hellbark_wood": "Hellbark hout", + "block.biomesoplenty.jacaranda_button": "Jacaranda knop", + "block.biomesoplenty.jacaranda_door": "Jacaranda deur", + "block.biomesoplenty.jacaranda_fence": "Jacaranda hek", + "block.biomesoplenty.jacaranda_fence_gate": "Jacaranda hek poort", + "block.biomesoplenty.jacaranda_leaves": "Jacaranda bladeren", + "block.biomesoplenty.jacaranda_log": "Jacaranda hout", + "block.biomesoplenty.jacaranda_planks": "Jacaranda planken", + "block.biomesoplenty.jacaranda_pressure_plate": "Jacaranda drukplaat", + "block.biomesoplenty.jacaranda_sapling": "Jacaranda boompje", + "block.biomesoplenty.jacaranda_sign": "Jacaranda bord", + "block.biomesoplenty.jacaranda_slab": "Jacaranda plaat", + "block.biomesoplenty.jacaranda_stairs": "Jacaranda trap", + "block.biomesoplenty.jacaranda_trapdoor": "Jacaranda valluik", + "block.biomesoplenty.jacaranda_wall_sign": "Jacaranda muurbord", + "block.biomesoplenty.jacaranda_wood": "Jacaranda hout", + "block.biomesoplenty.lavender": "Lavendel", + "block.biomesoplenty.magic_button": "Magische knop", + "block.biomesoplenty.magic_door": "Magische deur", + "block.biomesoplenty.magic_fence": "Magische hek", + "block.biomesoplenty.magic_fence_gate": "Magische hek poort", + "block.biomesoplenty.magic_leaves": "Magische bladeren", + "block.biomesoplenty.magic_log": "Magisch hout", + "block.biomesoplenty.magic_planks": "Magische planken", + "block.biomesoplenty.magic_pressure_plate": "Magische drukplaat", + "block.biomesoplenty.magic_sapling": "Magisch boompje", + "block.biomesoplenty.magic_sign": "Magische bord", + "block.biomesoplenty.magic_slab": "Magische plaat", + "block.biomesoplenty.magic_stairs": "Magische trap", + "block.biomesoplenty.magic_trapdoor": "Magische valluik", + "block.biomesoplenty.magic_wall_sign": "Magische muurbord", + "block.biomesoplenty.magic_wood": "Magisch hout", + "block.biomesoplenty.mahogany_button": "Mahogany knop", + "block.biomesoplenty.mahogany_door": "Mahogany deur", + "block.biomesoplenty.mahogany_fence": "Mahogany hek", + "block.biomesoplenty.mahogany_fence_gate": "Mahogany hek poort", + "block.biomesoplenty.mahogany_leaves": "Mahogany bladeren", + "block.biomesoplenty.mahogany_log": "Mahogany hout", + "block.biomesoplenty.mahogany_planks": "Mahogany planken", + "block.biomesoplenty.mahogany_pressure_plate": "Mahogany drukplaat", + "block.biomesoplenty.mahogany_sapling": "Mahogany boompje", + "block.biomesoplenty.mahogany_sign": "Mahogany bord", + "block.biomesoplenty.mahogany_slab": "Mahogany plaat", + "block.biomesoplenty.mahogany_stairs": "Mahogany trap", + "block.biomesoplenty.mahogany_trapdoor": "Mahogany valluik", + "block.biomesoplenty.mahogany_wall_sign": "Mahogany muurbord", + "block.biomesoplenty.mahogany_wood": "Mahogany hout", + "block.biomesoplenty.mangrove_root": "Mangrovewortel", + "block.biomesoplenty.maple_leaves": "Esdoorn bladeren", + "block.biomesoplenty.maple_sapling": "Maple boompje", + "block.biomesoplenty.mud": "Modder", + "block.biomesoplenty.mud_brick_slab": "Modder baksteen plaat", + "block.biomesoplenty.mud_brick_stairs": "Modder baksteen trap", + "block.biomesoplenty.mud_brick_wall": "Modder bakstenen muur", + "block.biomesoplenty.mud_bricks": "Modderstenen", + "block.biomesoplenty.orange_autumn_leaves": "Oranje herfstbladeren", + "block.biomesoplenty.orange_autumn_sapling": "Oranje herfstboompje", + "block.biomesoplenty.orange_cosmos": "Oranje Kosmos", + "block.biomesoplenty.origin_leaves": "Orgineele bladeren", + "block.biomesoplenty.origin_sapling": "Origineel boompje", + "block.biomesoplenty.palm_button": "Palm knop", + "block.biomesoplenty.palm_door": "Palm deur", + "block.biomesoplenty.palm_fence": "Palm hek", + "block.biomesoplenty.palm_fence_gate": "Palm hek poort", + "block.biomesoplenty.palm_leaves": "Palm bladeren", + "block.biomesoplenty.palm_log": "Palm hout", + "block.biomesoplenty.palm_planks": "Palm planken", + "block.biomesoplenty.palm_pressure_plate": "Palm drukplaat", + "block.biomesoplenty.palm_sapling": "Palm boompje", + "block.biomesoplenty.palm_sign": "Palm bord", + "block.biomesoplenty.palm_slab": "Palm plaat", + "block.biomesoplenty.palm_stairs": "Palm trap", + "block.biomesoplenty.palm_trapdoor": "Palm valluik", + "block.biomesoplenty.palm_wall_sign": "Palm muurbord", + "block.biomesoplenty.palm_wood": "Palm hout", + "block.biomesoplenty.pink_cherry_leaves": "Roze kersenbladeren", + "block.biomesoplenty.pink_cherry_sapling": "Roze kersenboompje", + "block.biomesoplenty.pink_daffodil": "Roze Narcis", + "block.biomesoplenty.pink_hibiscus": "Roze Hibiscus", + "block.biomesoplenty.potted_burning_blossom": "Ingemaakte brandende bloesem", + "block.biomesoplenty.potted_dead_sapling": "Ingegoten dood boompje", + "block.biomesoplenty.potted_fir_sapling": "Ingegoten spar boompje", + "block.biomesoplenty.potted_flowering_oak_sapling": "Ingegoten bloeiende eiken boompje", + "block.biomesoplenty.potted_glowflower": "Ingegoten gloeibloem", + "block.biomesoplenty.potted_glowshroom": "Ingegoten gloeishroom", + "block.biomesoplenty.potted_hellbark_sapling": "Ingegoten hellbark boompje", + "block.biomesoplenty.potted_jacaranda_sapling": "Ingegoten jacaranda boompje", + "block.biomesoplenty.potted_lavender": "Ingegoten lavendel", + "block.biomesoplenty.potted_magic_sapling": "Ingegoten magisch boompje", + "block.biomesoplenty.potted_mahogany_sapling": "Ingegoten Mahogany boompje", + "block.biomesoplenty.potted_maple_sapling": "Ingegoten maple boompje", + "block.biomesoplenty.potted_orange_autumn_sapling": "Ingegoten oranje herft boompje", + "block.biomesoplenty.potted_orange_cosmos": "Ingegoten oranje kosmos", + "block.biomesoplenty.potted_origin_sapling": "Ingegoten originele boompje", + "block.biomesoplenty.potted_palm_sapling": "Ingegoten palm boompje", + "block.biomesoplenty.potted_pink_cherry_sapling": "Ingegoten roze kers boompje", + "block.biomesoplenty.potted_pink_daffodil": "Ingegoten roze narcis", + "block.biomesoplenty.potted_pink_hibiscus": "Ingegoten roze hibiscus", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Ingegoten regenboog berk boompje", + "block.biomesoplenty.potted_redwood_sapling": "Ingegoten redwood boompje", + "block.biomesoplenty.potted_rose": "Ingegoten roos", + "block.biomesoplenty.potted_sprout": "Ingegoten spruit", + "block.biomesoplenty.potted_toadstool": "Ingegoten paddestoel", + "block.biomesoplenty.potted_umbran_sapling": "Ingegoten umbran boompje", + "block.biomesoplenty.potted_violet": "Ingegoten violet", + "block.biomesoplenty.potted_white_cherry_sapling": "Ingegoten witte kers boompje", + "block.biomesoplenty.potted_wildflower": "Ingegoten veldbloem", + "block.biomesoplenty.potted_willow_sapling": "Ingegoten wilg boompje", + "block.biomesoplenty.potted_wilted_lily": "Ingegoten vrwelkte lily", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Ingegoten geel herfst boompje", + "block.biomesoplenty.rainbow_birch_leaves": "Regenboog berkenbladeren", + "block.biomesoplenty.rainbow_birch_sapling": "Regenboog berk boompje", + "block.biomesoplenty.redwood_button": "Redwood knop", + "block.biomesoplenty.redwood_door": "Redwood deur", + "block.biomesoplenty.redwood_fence": "Redwood hek", + "block.biomesoplenty.redwood_fence_gate": "Redwood hek poort", + "block.biomesoplenty.redwood_leaves": "Redwood bladeren", + "block.biomesoplenty.redwood_log": "Redwood hout", + "block.biomesoplenty.redwood_planks": "Redwood planken", + "block.biomesoplenty.redwood_pressure_plate": "Redwood drukplaat", + "block.biomesoplenty.redwood_sapling": "Redwood boompje", + "block.biomesoplenty.redwood_sign": "Redwood bord", + "block.biomesoplenty.redwood_slab": "Redwood plaat", + "block.biomesoplenty.redwood_stairs": "Redwood knop", + "block.biomesoplenty.redwood_trapdoor": "Redwood valluik", + "block.biomesoplenty.redwood_wall_sign": "Redwood muurbord", + "block.biomesoplenty.redwood_wood": "Redwood hout", + "block.biomesoplenty.reed": "Riet", + "block.biomesoplenty.rose": "Roos", + "block.biomesoplenty.smooth_white_sandstone": "Gladde witte zandsteen", + "block.biomesoplenty.smooth_white_sandstone_slab": "Gladde witte zandstenen plaat", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Gladde witte zandstenen trappen", + "block.biomesoplenty.sprout": "Spruit", + "block.biomesoplenty.stripped_cherry_log": "Gestripte kersenlog", + "block.biomesoplenty.stripped_cherry_wood": "Gestripte kersenhout", + "block.biomesoplenty.stripped_dead_log": "Gestripte doodlog", + "block.biomesoplenty.stripped_dead_wood": "Gestripte doodhout", + "block.biomesoplenty.stripped_fir_log": "Gestripte Sparlog", + "block.biomesoplenty.stripped_fir_wood": "Gestripte Sparhout", + "block.biomesoplenty.stripped_hellbark_log": "Gestripte Hellbark log", + "block.biomesoplenty.stripped_hellbark_wood": "Gestripte Hellbark hout", + "block.biomesoplenty.stripped_jacaranda_log": "Gestripte Jacaranda log", + "block.biomesoplenty.stripped_jacaranda_wood": "Gestripte Jacaranda hout", + "block.biomesoplenty.stripped_magic_log": "Gestripte magische log", + "block.biomesoplenty.stripped_magic_wood": "Gestripte magische hout", + "block.biomesoplenty.stripped_mahogany_log": "Gestripte Mahogany log", + "block.biomesoplenty.stripped_mahogany_wood": "Gestripte Mahogany hout", + "block.biomesoplenty.stripped_palm_log": "Gestripte Palm log", + "block.biomesoplenty.stripped_palm_wood": "Gestripte Palm hout", + "block.biomesoplenty.stripped_redwood_log": "Gestripte Redwood log", + "block.biomesoplenty.stripped_redwood_wood": "Gestripte Redwood hout", + "block.biomesoplenty.stripped_umbran_log": "Gestripte Umbran log", + "block.biomesoplenty.stripped_umbran_wood": "Gestripte Umbran hout", + "block.biomesoplenty.stripped_willow_log": "Gestripte Willow log", + "block.biomesoplenty.stripped_willow_wood": "Gestripte Willow hout", + "block.biomesoplenty.tall_cattail": "Lange Cattail", + "block.biomesoplenty.toadstool": "Paddestoel", + "block.biomesoplenty.umbran_button": "Umbran knop", + "block.biomesoplenty.umbran_door": "Umbran deur", + "block.biomesoplenty.umbran_fence": "Umbran hek", + "block.biomesoplenty.umbran_fence_gate": "Umbran hek poort", + "block.biomesoplenty.umbran_leaves": "Umbran bladeren", + "block.biomesoplenty.umbran_log": "Umbran hout", + "block.biomesoplenty.umbran_planks": "Umbran planken", + "block.biomesoplenty.umbran_pressure_plate": "Umbran drukplaat", + "block.biomesoplenty.umbran_sapling": "Umbran boompje", + "block.biomesoplenty.umbran_sign": "Umbran bord", + "block.biomesoplenty.umbran_slab": "Umbran plaat", + "block.biomesoplenty.umbran_stairs": "Umbran trap", + "block.biomesoplenty.umbran_trapdoor": "Umbran valluik", + "block.biomesoplenty.umbran_wall_sign": "Umbran muurbord", + "block.biomesoplenty.umbran_wood": "Umbran hout", + "block.biomesoplenty.violet": "Violet", + "block.biomesoplenty.watergrass": "Watergras", + "block.biomesoplenty.white_cherry_leaves": "Witte kersenbladeren", + "block.biomesoplenty.white_cherry_sapling": "Witte kersenboompje", + "block.biomesoplenty.white_sand": "Wit zand", + "block.biomesoplenty.white_sandstone": "Wit zandsteen", + "block.biomesoplenty.white_sandstone_slab": "Witte zandstenen plaat", + "block.biomesoplenty.white_sandstone_stairs": "Witte zandstenen trap", + "block.biomesoplenty.white_sandstone_wall": "Witte zandstenen muur", + "block.biomesoplenty.wildflower": "Veldbloem", + "block.biomesoplenty.willow_button": "Veldbloem knop", + "block.biomesoplenty.willow_door": "Veldbloem deur", + "block.biomesoplenty.willow_fence": "Veldbloem hek", + "block.biomesoplenty.willow_fence_gate": "Veldbloem hek poort", + "block.biomesoplenty.willow_leaves": "Veldbloem bladeren", + "block.biomesoplenty.willow_log": "Veldbloem hout", + "block.biomesoplenty.willow_planks": "Veldbloem planken", + "block.biomesoplenty.willow_pressure_plate": "Veldbloem drukplaat", + "block.biomesoplenty.willow_sapling": "Veldbloem boompje", + "block.biomesoplenty.willow_sign": "Veldbloem bord", + "block.biomesoplenty.willow_slab": "Veldbloem plaat", + "block.biomesoplenty.willow_stairs": "Veldbloem trap", + "block.biomesoplenty.willow_trapdoor": "Veldbloem valluik", + "block.biomesoplenty.willow_vine": "Veldbloem liaan", + "block.biomesoplenty.willow_wall_sign": "Veldbloem muurbord", + "block.biomesoplenty.willow_wood": "Veldbloem hout", + "block.biomesoplenty.wilted_lily": "Veldbloem lelie", + "block.biomesoplenty.yellow_autumn_leaves": "Gele herfstbladeren", + "block.biomesoplenty.yellow_autumn_sapling": "Geel herfst boompje", + + "argument.biomesoplenty.biome.invalid": "Ongeldig klimaatargument", + "commands.biomesoplenty.tpbiome.success": "Geteleporteerd %s naar klimaat %s bij (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "Kon klimaat niet vinden %s!", + + "entity.biomesoplenty.boat_bop": "Boot" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/pl_pl.json b/src/main/resources/assets/biomesoplenty/lang/pl_pl.json new file mode 100644 index 0000000000..13c8171feb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/pl_pl.json @@ -0,0 +1,416 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Marzenie odkrywcy...", + "advancements.biomesoplenty.all_biomes.title": "Wędrowiec", + "advancements.biomesoplenty.all_biomes.description": "Odkryj wszystkie biomy w Biomes O' Plenty", + + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alpy", + "biome.biomesoplenty.alps_foothills": "Pogórza alp", + "biome.biomesoplenty.bamboo_blossom_grove": "Zagajnik kwitnących bambusów", + "biome.biomesoplenty.bayou": "Zalewisko", + "biome.biomesoplenty.bayou_mangrove": "Zalany las namorzynowy", + "biome.biomesoplenty.burnt_forest": "Spalony las", + "biome.biomesoplenty.cherry_blossom_grove": "Gaj wiśniowy", + "biome.biomesoplenty.cold_desert": "Zimna pustynia", + "biome.biomesoplenty.coniferous_forest": "Las iglasty", + "biome.biomesoplenty.coniferous_lakes": "Jeziora lasu iglastego", + "biome.biomesoplenty.crystalline_chasm": "Krystaliczna rozpadlina", + "biome.biomesoplenty.dead_forest": "Martwy las", + "biome.biomesoplenty.dead_swamp": "Martwe bagno", + "biome.biomesoplenty.deep_bayou": "Głębokie zalewisko", + "biome.biomesoplenty.dryland": "Suche ziemie", + "biome.biomesoplenty.dry_boneyard": "Suchy cmentarz", + "biome.biomesoplenty.fir_clearing": "Jodłowe karczowisko", + "biome.biomesoplenty.flower_meadow": "Kwiecista łąka", + "biome.biomesoplenty.fungal_field": "Grzybowe pole", + "biome.biomesoplenty.fungal_jungle": "Grzybowa dżungla", + "biome.biomesoplenty.golden_prairie": "Złota preria", + "biome.biomesoplenty.gravel_beach": "Żwirowa plaża", + "biome.biomesoplenty.grove": "Gaj", + "biome.biomesoplenty.grove_clearing": "Gajowe karczowisko", + "biome.biomesoplenty.grove_lakes": "Gajowe jeziora", + "biome.biomesoplenty.highland": "Wyżyny", + "biome.biomesoplenty.highland_crag": "Wyżynna grań", + "biome.biomesoplenty.highland_moor": "Wyżynne wrzosowisko", + "biome.biomesoplenty.jade_cliffs": "Jadeitowe klify", + "biome.biomesoplenty.jade_grassland": "Jadeitowa łąka", + "biome.biomesoplenty.lavender_field": "Lawendowe pole", + "biome.biomesoplenty.lavender_forest": "Lawendowy las", + "biome.biomesoplenty.lush_desert": "Bujna pustynia", + "biome.biomesoplenty.lush_savanna": "Bujna sawanna", + "biome.biomesoplenty.meadow": "Łąka", + "biome.biomesoplenty.meadow_forest": "Łąkowy las", + "biome.biomesoplenty.mystic_grove": "Mistyczny gaj", + "biome.biomesoplenty.mystic_plains": "Mistyczne równiny", + "biome.biomesoplenty.ominous_mire": "Złowroga kopalnia", + "biome.biomesoplenty.ominous_woods": "Złowieszczy las", + "biome.biomesoplenty.orchard": "Sad owocowy", + "biome.biomesoplenty.origin_valley": "Pierwotna dolina", + "biome.biomesoplenty.overgrown_fungal_jungle": "Zarośnięta grzybowa dżungla", + "biome.biomesoplenty.prairie": "Preria", + "biome.biomesoplenty.rainbow_hills": "Tęczowe wzgórza", + "biome.biomesoplenty.rainforest": "Las deszczowy", + "biome.biomesoplenty.rainforest_cliffs": "Klify lasu deszczowego", + "biome.biomesoplenty.rainforest_floodplain": "Równina powodziowa lasu deszczowego", + "biome.biomesoplenty.redwood_forest": "Las sekwojowy", + "biome.biomesoplenty.redwood_forest_edge": "Krawędź lasu sekwojowego", + "biome.biomesoplenty.redwood_hills": "Wzgórza lasu sekwojowego", + "biome.biomesoplenty.scrubland": "Chaszcze", + "biome.biomesoplenty.seasonal_forest": "Las sezonowy", + "biome.biomesoplenty.seasonal_orchard": "Sezonowy sad", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Sezonowa dyniowa grządka", + "biome.biomesoplenty.shrubland": "Zakrzewiona łąka", + "biome.biomesoplenty.shrubland_hills": "Chaszczowe wzgórza", + "biome.biomesoplenty.silkglade": "Jedwabna polana", + "biome.biomesoplenty.silkglade_nest": "Jedwabne lęgowisko", + "biome.biomesoplenty.snowy_coniferous_forest": "Zaśnieżony las iglasty", + "biome.biomesoplenty.snowy_fir_clearing": "Ośnieżone jodłowe karczowisko", + "biome.biomesoplenty.snowy_maple_forest": "Ośnieżony klonowy las", + "biome.biomesoplenty.tropic_beach": "Tropikalna plaża", + "biome.biomesoplenty.tropic_plains": "Tropikalne równiny", + "biome.biomesoplenty.tropics": "Tropiki", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.tundra_basin": "Tundrowe dorzecze", + "biome.biomesoplenty.tundra_bog": "Tundrowe moczary", + "biome.biomesoplenty.undergrowth": "Piekielne podszycie", + "biome.biomesoplenty.visceral_heap": "Trzewna sterta", + "biome.biomesoplenty.volcanic_plains": "Wulkaniczne równiny", + "biome.biomesoplenty.volcano": "Wulkan", + "biome.biomesoplenty.wasteland": "Pustkowia", + "biome.biomesoplenty.wetland": "Mokradła", + "biome.biomesoplenty.wetland_marsh": "Moczary", + "biome.biomesoplenty.withered_abyss": "Witherowe czeluści", + "biome.biomesoplenty.wooded_scrubland": "Zalesiony busz", + "biome.biomesoplenty.wooded_wasteland": "Zalesione pustkowia", + + "item.biomesoplenty.bop_icon": "Ikona BOP", + "item.biomesoplenty.cherry_boat": "Wiśniowa łódka", + "item.biomesoplenty.dead_boat": "Martwa łódka", + "item.biomesoplenty.fir_boat": "Jodłowa łódka", + "item.biomesoplenty.hellbark_boat": "Piekielna łódka", + "item.biomesoplenty.jacaranda_boat": "Jakarandowa łódka", + "item.biomesoplenty.magic_boat": "Magiczna łódka", + "item.biomesoplenty.mahogany_boat": "Mahoniowa łódka", + "item.biomesoplenty.mud_ball": "Kula błota", + "item.biomesoplenty.mud_brick": "Błotna cegła", + "item.biomesoplenty.music_disc_wanderer": "Płyta muzyczna", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Palmowa łódka", + "item.biomesoplenty.redwood_boat": "Sekwojowa łódka", + "item.biomesoplenty.umbran_boat": "Mroczna łódka", + "item.biomesoplenty.willow_boat": "Wierzbowa łódka", + + "block.biomesoplenty.barley": "Jęczmień", + "block.biomesoplenty.black_sand": "Czarny piasek", + "block.biomesoplenty.black_sandstone": "Czarny piaskowiec", + "block.biomesoplenty.black_sandstone_slab": "Czarna piaskowcowa płyta", + "block.biomesoplenty.black_sandstone_stairs": "Czarne piaskowcowe schody", + "block.biomesoplenty.black_sandstone_wall": "Czarny piaskowcowy murek", + "block.biomesoplenty.blue_hydrangea": "Niebieska hortensja", + "block.biomesoplenty.bramble": "Ciernie", + "block.biomesoplenty.burning_blossom": "Płonący kwiat", + "block.biomesoplenty.bush": "Krzak", + "block.biomesoplenty.cattail": "Pałka wodna", + "block.biomesoplenty.cherry_button": "Wiśniowy przycisk", + "block.biomesoplenty.cherry_door": "Drzwi wiśniowe", + "block.biomesoplenty.cherry_fence": "Płot wiśniowy", + "block.biomesoplenty.cherry_fence_gate": "Furtka wiśniowa", + "block.biomesoplenty.cherry_log": "Wiśniowy pień", + "block.biomesoplenty.cherry_planks": "Wiśniowe deski", + "block.biomesoplenty.cherry_pressure_plate": "Wiśniowa płyta naciskowa", + "block.biomesoplenty.cherry_sign": "Wiśniowa tabliczka", + "block.biomesoplenty.cherry_slab": "Wiśniowa płyta", + "block.biomesoplenty.cherry_stairs": "Wiśniowe schody", + "block.biomesoplenty.cherry_trapdoor": "Wiśniowa klapa", + "block.biomesoplenty.cherry_wall_sign": "Wiśniowa tabliczka ścienna", + "block.biomesoplenty.cherry_wood": "Wiśniowe drewno", + "block.biomesoplenty.chiseled_black_sandstone": "Rzeźbiony czarny piaskowiec", + "block.biomesoplenty.cut_black_sandstone": "Przycięty czarny piaskowiec", + "block.biomesoplenty.cut_black_sandstone_slab": "Przycięta czarna piaskowcowa płyta", + "block.biomesoplenty.chiseled_orange_sandstone": "Rzeźbiony pomarańczowy piaskowiec", + "block.biomesoplenty.cut_orange_sandstone": "Przycięty pomarańczowy piaskowiec", + "block.biomesoplenty.cut_orange_sandstone_slab": "Przycięta pomarańczowa piaskowcowa płyta", + "block.biomesoplenty.chiseled_white_sandstone": "Rzeźbiony biały piaskowiec", + "block.biomesoplenty.cut_white_sandstone": "Przycięty biały piaskowiec", + "block.biomesoplenty.cut_white_sandstone_slab": "Przycięta biała piaskowcowa płyta", + "block.biomesoplenty.dead_branch": "Martwa gałąź", + "block.biomesoplenty.dead_button": "Martwy przycisk", + "block.biomesoplenty.dead_door": "Martwe drzwi", + "block.biomesoplenty.dead_fence": "Martwy płot", + "block.biomesoplenty.dead_fence_gate": "Martwa furtka", + "block.biomesoplenty.dead_grass": "Martwa trawa", + "block.biomesoplenty.dead_leaves": "Martwe liście", + "block.biomesoplenty.dead_log": "Martwy pień", + "block.biomesoplenty.dead_planks": "Martwe deski", + "block.biomesoplenty.dead_pressure_plate": "Martwa płyta naciskowa", + "block.biomesoplenty.dead_sapling": "Martwa sadzonka", + "block.biomesoplenty.dead_sign": "Martwa tabliczka", + "block.biomesoplenty.dead_slab": "Martwa płyta", + "block.biomesoplenty.dead_stairs": "Martwe schody", + "block.biomesoplenty.dead_trapdoor": "Martwa klapa", + "block.biomesoplenty.dead_wall_sign": "Martwy znak ścienny", + "block.biomesoplenty.dead_wood": "Martwe drewno", + "block.biomesoplenty.desert_grass": "Pustynna trawa", + "block.biomesoplenty.dried_salt": "Wysuszona sól", + "block.biomesoplenty.dune_grass": "Wydmowa trawa", + "block.biomesoplenty.fir_button": "Jodłowy przycisk", + "block.biomesoplenty.fir_door": "Drzwi jodłowe", + "block.biomesoplenty.fir_fence": "Płot jodłowy", + "block.biomesoplenty.fir_fence_gate": "Furtka jodłowa", + "block.biomesoplenty.fir_leaves": "Jodłowe liście", + "block.biomesoplenty.fir_log": "Jodłowy pień", + "block.biomesoplenty.fir_planks": "Jodłowe deski", + "block.biomesoplenty.fir_pressure_plate": "Jodłowa płyta naciskowa", + "block.biomesoplenty.fir_sapling": "Sadzonka jodły", + "block.biomesoplenty.fir_sign": "Jodłowa tabliczka", + "block.biomesoplenty.fir_slab": "Jodłowa płyta", + "block.biomesoplenty.fir_stairs": "Jodłowe schody", + "block.biomesoplenty.fir_trapdoor": "Jodłowa klapa", + "block.biomesoplenty.fir_wall_sign": "Jodłowa tabliczka ścienna", + "block.biomesoplenty.fir_wood": "Jodłowe drewno", + "block.biomesoplenty.flesh": "Mięso", + "block.biomesoplenty.flowering_oak_leaves": "Kwitnące dębowe liście", + "block.biomesoplenty.flowering_oak_sapling": "Kwitnąca sadzonka dębu", + "block.biomesoplenty.glowflower": "Jasnokwiat", + "block.biomesoplenty.glowshroom": "Jasnogrzyb", + "block.biomesoplenty.glowshroom_block": "Blok jasnogrzyba", + "block.biomesoplenty.goldenrod": "Nawłoć", + "block.biomesoplenty.hellbark_button": "Piekielny przycisk", + "block.biomesoplenty.hellbark_door": "Piekielne drzwi", + "block.biomesoplenty.hellbark_fence": "Piekielny płot", + "block.biomesoplenty.hellbark_fence_gate": "Piekielna furtka", + "block.biomesoplenty.hellbark_leaves": "Piekielne liście", + "block.biomesoplenty.hellbark_log": "Piekielny pień", + "block.biomesoplenty.hellbark_planks": "Piekielne deski", + "block.biomesoplenty.hellbark_pressure_plate": "Piekielna płyta naciskowa", + "block.biomesoplenty.hellbark_sapling": "Piekielna sadzonka", + "block.biomesoplenty.hellbark_sign": "Piekielna tabliczka", + "block.biomesoplenty.hellbark_slab": "Piekielna płyta", + "block.biomesoplenty.hellbark_stairs": "Piekielne schody", + "block.biomesoplenty.hellbark_trapdoor": "Piekielna klapa", + "block.biomesoplenty.hellbark_wall_sign": "Piekielna tabliczka ścienna", + "block.biomesoplenty.hellbark_wood": "Piekielne deski", + "block.biomesoplenty.jacaranda_button": "Jakarandowy przycisk", + "block.biomesoplenty.jacaranda_door": "Drzwi jakarandowe", + "block.biomesoplenty.jacaranda_fence": "Płot jakarandowy", + "block.biomesoplenty.jacaranda_fence_gate": "Furtka jakarandowa", + "block.biomesoplenty.jacaranda_leaves": "Jakarandowe liście", + "block.biomesoplenty.jacaranda_log": "Jakarandowy pień", + "block.biomesoplenty.jacaranda_planks": "Jakarandowe deski", + "block.biomesoplenty.jacaranda_pressure_plate": "Jakarandowa płyta naciskowa", + "block.biomesoplenty.jacaranda_sapling": "Sadzonka jakarandy", + "block.biomesoplenty.jacaranda_sign": "Jakarandowa tabliczka", + "block.biomesoplenty.jacaranda_slab": "Jakarandowa płyta", + "block.biomesoplenty.jacaranda_stairs": "Jakarandowe schody", + "block.biomesoplenty.jacaranda_trapdoor": "Jakarandowa klapa", + "block.biomesoplenty.jacaranda_wall_sign": "Jakarandowa tabliczka ścienna", + "block.biomesoplenty.jacaranda_wood": "Jakarandowe drewno", + "block.biomesoplenty.lavender": "Lawenda", + "block.biomesoplenty.magic_button": "Magiczny przycisk", + "block.biomesoplenty.magic_door": "Magiczne drzwi", + "block.biomesoplenty.magic_fence": "Magiczny płot", + "block.biomesoplenty.magic_fence_gate": "Magiczna furtka", + "block.biomesoplenty.magic_leaves": "Magiczne liście", + "block.biomesoplenty.magic_log": "Magiczny pień", + "block.biomesoplenty.magic_planks": "Magiczne deski", + "block.biomesoplenty.magic_pressure_plate": "Magiczna płyta naciskowa", + "block.biomesoplenty.magic_sapling": "Magiczna sadzonka", + "block.biomesoplenty.magic_sign": "Magiczna tabliczka", + "block.biomesoplenty.magic_slab": "Magiczna płyta", + "block.biomesoplenty.magic_stairs": "Magiczne schody", + "block.biomesoplenty.magic_trapdoor": "Magiczna klapa", + "block.biomesoplenty.magic_wall_sign": "Magiczna tabliczka ścienna", + "block.biomesoplenty.magic_wood": "Magiczne drewno", + "block.biomesoplenty.mahogany_button": "Mahoniowy przycisk", + "block.biomesoplenty.mahogany_door": "Drzwi mahoniowe", + "block.biomesoplenty.mahogany_fence": "Płot mahoniowy", + "block.biomesoplenty.mahogany_fence_gate": "Furtka mahoniowa", + "block.biomesoplenty.mahogany_leaves": "Mahoniowe liście", + "block.biomesoplenty.mahogany_log": "Mahoniowy pień", + "block.biomesoplenty.mahogany_planks": "Mahoniowe deski", + "block.biomesoplenty.mahogany_pressure_plate": "Mahoniowa płyta naciskowa", + "block.biomesoplenty.mahogany_sapling": "Sadzonka mahoniu", + "block.biomesoplenty.mahogany_sign": "Mahoniowa tabliczka", + "block.biomesoplenty.mahogany_slab": "Mahoniowa płyta", + "block.biomesoplenty.mahogany_stairs": "Mahoniowe schody", + "block.biomesoplenty.mahogany_trapdoor": "Mahoniowa klapa", + "block.biomesoplenty.mahogany_wall_sign": "Mahoniowa tabiczka ścienna", + "block.biomesoplenty.mahogany_wood": "Mahoniowe drewno", + "block.biomesoplenty.mangrove_root": "Namorzynowy korzeń", + "block.biomesoplenty.maple_leaves": "Liście klonu", + "block.biomesoplenty.maple_sapling": "Sadzonka klonu", + "block.biomesoplenty.mud": "Błoto", + "block.biomesoplenty.mud_brick_slab": "Ceglana płyta z błota", + "block.biomesoplenty.mud_brick_stairs": "Ceglane schody z błota", + "block.biomesoplenty.mud_brick_wall": "Ceglany murek z błota", + "block.biomesoplenty.mud_bricks": "Błotne cegły", + "block.biomesoplenty.nether_crystal": "Netherowy kryształ", + "block.biomesoplenty.nether_crystal_block": "Blok netherowego kryształu", + "block.biomesoplenty.orange_autumn_leaves": "Pomarańczowe jesienne liście", + "block.biomesoplenty.orange_autumn_sapling": "Pomarańczowa jesienna sadzonka", + "block.biomesoplenty.orange_cosmos": "Kosmos siarkowy", + "block.biomesoplenty.orange_sand": "Pomarańczowy piasek", + "block.biomesoplenty.orange_sandstone": "Pomarańczowy piaskowiec", + "block.biomesoplenty.orange_sandstone_slab": "Pomarańczowa piaskowcowa płyta", + "block.biomesoplenty.orange_sandstone_stairs": "Pomarańczowe piaskowcowe schody", + "block.biomesoplenty.orange_sandstone_wall": "Pomarańczowy piaskowcowy murek", + "block.biomesoplenty.origin_grass_block": "Pierwotny blok trawy", + "block.biomesoplenty.origin_leaves": "Pierwotne liście", + "block.biomesoplenty.origin_sapling": "Pierwotna sadzonka", + "block.biomesoplenty.palm_button": "Palmowy przycisk", + "block.biomesoplenty.palm_door": "Drzwi palmowe", + "block.biomesoplenty.palm_fence": "Płot palmowy", + "block.biomesoplenty.palm_fence_gate": "Furtka palmowa", + "block.biomesoplenty.palm_leaves": "Palmowe liście", + "block.biomesoplenty.palm_log": "Palmowy pień", + "block.biomesoplenty.palm_planks": "Palmowe deski", + "block.biomesoplenty.palm_pressure_plate": "Palmowa płyta naciskowa", + "block.biomesoplenty.palm_sapling": "Sadzonka palmy", + "block.biomesoplenty.palm_sign": "Palmowa tabliczka", + "block.biomesoplenty.palm_slab": "Palmowa płyta", + "block.biomesoplenty.palm_stairs": "Palmowe schody", + "block.biomesoplenty.palm_trapdoor": "Palmowa klapa", + "block.biomesoplenty.palm_wall_sign": "Palmowa tabliczka ścienna", + "block.biomesoplenty.palm_wood": "Palmowe drewno", + "block.biomesoplenty.pink_cherry_leaves": "Liście różowej wiśni", + "block.biomesoplenty.pink_cherry_sapling": "Sadzonka różowej wiśni", + "block.biomesoplenty.pink_daffodil": "Różowy narcyz", + "block.biomesoplenty.pink_hibiscus": "Różowy hibiskus", + "block.biomesoplenty.potted_burning_blossom": "Płonący kwiat w doniczce", + "block.biomesoplenty.potted_dead_sapling": "Martwa sadzonka w doniczce", + "block.biomesoplenty.potted_fir_sapling": "Sadzonka jodły w doniczce", + "block.biomesoplenty.potted_flowering_oak_sapling": "Kwitnąca sadzonka dębu w doniczce", + "block.biomesoplenty.potted_glowflower": "Jasnokwiat w doniczce", + "block.biomesoplenty.potted_glowshroom": "Jasnogrzyb w doniczce", + "block.biomesoplenty.potted_hellbark_sapling": "Piekielna sadzonka w doniczce", + "block.biomesoplenty.potted_jacaranda_sapling": "Sadzonka jakarandy w doniczce", + "block.biomesoplenty.potted_lavender": "Lawenda w doniczce", + "block.biomesoplenty.potted_magic_sapling": "Magiczna sadzonka w doniczce", + "block.biomesoplenty.potted_mahogany_sapling": "Mahoń w doniczce", + "block.biomesoplenty.potted_maple_sapling": "Sadzonka klonu w doniczce", + "block.biomesoplenty.potted_orange_autumn_sapling": "Pomarańczowa jesienna sadzonka w doniczce", + "block.biomesoplenty.potted_orange_cosmos": "Kosmos siarkowy w doniczce", + "block.biomesoplenty.potted_origin_sapling": "Pierwotna sadzonka w doniczce", + "block.biomesoplenty.potted_palm_sapling": "Sadzonka palmy w doniczce", + "block.biomesoplenty.potted_pink_cherry_sapling": "Sadzonka różowej wiśni w doniczce", + "block.biomesoplenty.potted_pink_daffodil": "Różowy narcyz w doniczce", + "block.biomesoplenty.potted_pink_hibiscus": "Różowy hibiskus w doniczce", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Sadzonka tęczowej brzozy w doniczce", + "block.biomesoplenty.potted_redwood_sapling": "Sadzonka sekwoi w doniczce", + "block.biomesoplenty.potted_rose": "Róża w doniczce", + "block.biomesoplenty.potted_sprout": "Pędy w doniczce", + "block.biomesoplenty.potted_toadstool": "Muchomor w doniczce", + "block.biomesoplenty.potted_umbran_sapling": "Mroczna sadzonka w doniczce", + "block.biomesoplenty.potted_violet": "Fiołek w doniczce", + "block.biomesoplenty.potted_white_cherry_sapling": "Sadzonka białej wiśni w doniczce", + "block.biomesoplenty.potted_wildflower": "Kwiat polny w doniczce", + "block.biomesoplenty.potted_willow_sapling": "Sadzonka wierzby w doniczce", + "block.biomesoplenty.potted_wilted_lily": "Zwiędła lilia w doniczce", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Żółta jesienna sadzonka w doniczce", + "block.biomesoplenty.rainbow_birch_leaves": "Liście tęczowej brzozy", + "block.biomesoplenty.rainbow_birch_sapling": "Sadzonka tęczowej brzozy", + "block.biomesoplenty.redwood_button": "Sekwojowy przycisk", + "block.biomesoplenty.redwood_door": "Drzwi sekwojowe", + "block.biomesoplenty.redwood_fence": "Płot sekwojowy", + "block.biomesoplenty.redwood_fence_gate": "Furtka sekwojowa", + "block.biomesoplenty.redwood_leaves": "Sekwojowe liście", + "block.biomesoplenty.redwood_log": "Sekwojowy pień", + "block.biomesoplenty.redwood_planks": "Sekwojowe deski", + "block.biomesoplenty.redwood_pressure_plate": "Sekwojowa płyta naciskowa", + "block.biomesoplenty.redwood_sapling": "Sadzonka sekwoji", + "block.biomesoplenty.redwood_sign": "Sekwojowa tabliczka", + "block.biomesoplenty.redwood_slab": "Sekwojowa płyta", + "block.biomesoplenty.redwood_stairs": "Sekwojowe schody", + "block.biomesoplenty.redwood_trapdoor": "Sekwojowa klapa", + "block.biomesoplenty.redwood_wall_sign": "Sekwojowa tabliczka ścienna", + "block.biomesoplenty.redwood_wood": "Sekwojowe drewno", + "block.biomesoplenty.reed": "Trzcina", + "block.biomesoplenty.rose": "Róża", + "block.biomesoplenty.smooth_black_sandstone": "Gładki czarny piaskowiec", + "block.biomesoplenty.smooth_black_sandstone_slab": "Gładka czarna piaskowcowa płyta", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Gładkie czarne piaskowcowe schody", + "block.biomesoplenty.smooth_orange_sandstone": "Gładki pomarańczowy piaskowiec", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Gładka pomarańczowa piaskowcowa płyta", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Gładkie pomarańczowe piaskowcowe schody", + "block.biomesoplenty.smooth_white_sandstone": "Gładki biały piaskowiec", + "block.biomesoplenty.smooth_white_sandstone_slab": "Głądka biała piaskowcowa płyta", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Gładkie białe piaskowcowe schody", + "block.biomesoplenty.sprout": "Pędy", + "block.biomesoplenty.stripped_cherry_log": "Okorowany wiśniowy pień", + "block.biomesoplenty.stripped_cherry_wood": "Okorowane wiśniowe drewno", + "block.biomesoplenty.stripped_dead_log": "Okorowany martwy pień", + "block.biomesoplenty.stripped_dead_wood": "Okorawane martwe drewno", + "block.biomesoplenty.stripped_fir_log": "Okorowany jodłowy pień", + "block.biomesoplenty.stripped_fir_wood": "Okorowane jodłowe drewno", + "block.biomesoplenty.stripped_hellbark_log": "Okorowany piekielny pień", + "block.biomesoplenty.stripped_hellbark_wood": "Okorowane piekielne drewno", + "block.biomesoplenty.stripped_jacaranda_log": "Okorowany jakarandowy pień", + "block.biomesoplenty.stripped_jacaranda_wood": "Okorowane jakarandowe drewno", + "block.biomesoplenty.stripped_magic_log": "Okorowany magiczny pień", + "block.biomesoplenty.stripped_magic_wood": "Okorowane magiczne drewno", + "block.biomesoplenty.stripped_mahogany_log": "Okorowany mahoniowy pień", + "block.biomesoplenty.stripped_mahogany_wood": "Okorowane mahoniowe drewno", + "block.biomesoplenty.stripped_palm_log": "Okorowany palmowy pień", + "block.biomesoplenty.stripped_palm_wood": "Okorowane palmowe drewno", + "block.biomesoplenty.stripped_redwood_log": "Okorowany sekwojowy pień", + "block.biomesoplenty.stripped_redwood_wood": "Okorowane sekwojowe drewno", + "block.biomesoplenty.stripped_umbran_log": "Okorowany mroczny pień", + "block.biomesoplenty.stripped_umbran_wood": "Okorowane mroczne drewno", + "block.biomesoplenty.stripped_willow_log": "Okorowany wierzbowy pień", + "block.biomesoplenty.stripped_willow_wood": "Okorowane wierzbowe drewno", + "block.biomesoplenty.toadstool": "Muchomor", + "block.biomesoplenty.toadstool_block": "Blok muchomora", + "block.biomesoplenty.umbran_button": "Mroczny przycisk", + "block.biomesoplenty.umbran_door": "Mroczne drzwi", + "block.biomesoplenty.umbran_fence": "Mroczny płot", + "block.biomesoplenty.umbran_fence_gate": "Mroczna furtka", + "block.biomesoplenty.umbran_leaves": "Mroczne liście", + "block.biomesoplenty.umbran_log": "Mroczny pień", + "block.biomesoplenty.umbran_planks": "Mroczne deski", + "block.biomesoplenty.umbran_pressure_plate": "Mroczna płyta naciskowa", + "block.biomesoplenty.umbran_sapling": "Mroczna sadzonka", + "block.biomesoplenty.umbran_sign": "Mroczna tabliczka", + "block.biomesoplenty.umbran_slab": "Mroczna płyta", + "block.biomesoplenty.umbran_stairs": "Mroczne schody", + "block.biomesoplenty.umbran_trapdoor": "Mroczna kalpa", + "block.biomesoplenty.umbran_wall_sign": "Mroczna tabliczka ścienna", + "block.biomesoplenty.umbran_wood": "Mroczne drewno", + "block.biomesoplenty.violet": "Fiołek", + "block.biomesoplenty.watergrass": "Trawa wodna", + "block.biomesoplenty.white_cherry_leaves": "Liście białej wiśni", + "block.biomesoplenty.white_cherry_sapling": "Sadzonka białej wiśni", + "block.biomesoplenty.white_sand": "Biały piasek", + "block.biomesoplenty.white_sandstone": "Biały piaskowiec", + "block.biomesoplenty.white_sandstone_slab": "Biała piaskowcowa płyta", + "block.biomesoplenty.white_sandstone_stairs": "Białe piaskowcowe schody", + "block.biomesoplenty.white_sandstone_wall": "Biały piaskowcowy murek", + "block.biomesoplenty.wildflower": "Kwiat polny", + "block.biomesoplenty.willow_button": "Wierzbowy przycisk", + "block.biomesoplenty.willow_door": "Drzwi wierzbowe", + "block.biomesoplenty.willow_fence": "Płot wierzbowy", + "block.biomesoplenty.willow_fence_gate": "Furtka wierzbowa", + "block.biomesoplenty.willow_leaves": "Wierzbowe liście", + "block.biomesoplenty.willow_log": "Wierzbowy pień", + "block.biomesoplenty.willow_planks": "Wierzbowe deski", + "block.biomesoplenty.willow_pressure_plate": "Wierzbowa płyta naciskowa", + "block.biomesoplenty.willow_sapling": "Sadzonka wierzby", + "block.biomesoplenty.willow_sign": "Wierzbowa tabliczka", + "block.biomesoplenty.willow_slab": "Wierzbowa płyta", + "block.biomesoplenty.willow_stairs": "Wierzbowe schody", + "block.biomesoplenty.willow_trapdoor": "Wierzbowa klapa", + "block.biomesoplenty.willow_vine": "Wierzbowe pnącza", + "block.biomesoplenty.willow_wall_sign": "Wierzbowa tabliczka ścienna", + "block.biomesoplenty.willow_wood": "Wierzbowe drewno", + "block.biomesoplenty.wilted_lily": "Zwiędła lilia", + "block.biomesoplenty.yellow_autumn_leaves": "Żółte jesienne liście", + "block.biomesoplenty.yellow_autumn_sapling": "Żółta jesienna sadzonka", + + "argument.biomesoplenty.biome.invalid": "Nieprawidłowy argument biomu", + "commands.biomesoplenty.tpbiome.success": "Teleportowano %s do biomu %s na (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "Nie można znaleźć biomu %s!", + + "entity.biomesoplenty.boat_bop": "Łódka" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/pt_br.json b/src/main/resources/assets/biomesoplenty/lang/pt_br.json new file mode 100644 index 0000000000..c58f4d6c58 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/pt_br.json @@ -0,0 +1,300 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "O sonho do explorador...", + "advancements.biomesoplenty.all_biomes.title": "Viajante", + "advancements.biomesoplenty.all_biomes.description": "Descubra todos os biomas do Biomes O' Plenty", + + "generator.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "item.biomesoplenty.bop_icon": "Ícone do BOP", + "item.biomesoplenty.cherry_boat": "Bote de cerejeira", + "item.biomesoplenty.chunk_of_flesh": "Pedaço de carne podre", + "item.biomesoplenty.dead_boat": "Bote de madeira morta", + "item.biomesoplenty.ethereal_boat": "Bote de madeira etérea", + "item.biomesoplenty.fir_boat": "Bote de abeto", + "item.biomesoplenty.hellbark_boat": "Hellbark Boat", + "item.biomesoplenty.jacaranda_boat": "Bote de jacarandá", + "item.biomesoplenty.magic_boat": "Bote de madeira mágica", + "item.biomesoplenty.mahogany_boat": "Bote de mogno", + "item.biomesoplenty.mud_brick": "Tijolo de barro", + "item.biomesoplenty.mudball": "Bola de barro", + "item.biomesoplenty.palm_boat": "Bote de palmeira", + "item.biomesoplenty.pile_of_ashes": "Cinzas", + "item.biomesoplenty.record_wanderer": "Disco de música", + "item.biomesoplenty.record_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.redwood_boat": "Bote de pau-brasil", + "item.biomesoplenty.umbran_boat": "Bote de madeira sinistra", + "item.biomesoplenty.willow_boat": "Bote de salgueiro", + + "block.biomesoplenty.ash_block": "Bloco de cinzas", + "block.biomesoplenty.barley": "Cevada", + "block.biomesoplenty.blue_fire": "Fogo azul", + "block.biomesoplenty.blue_hydrangea": "Hortênsia-azul", + "block.biomesoplenty.bramble": "Espinheiro", + "block.biomesoplenty.burning_blossom": "Flor-ardente", + "block.biomesoplenty.bush": "Arbusto", + "block.biomesoplenty.cattail": "Amento", + "block.biomesoplenty.cherry_button": "Botão de cerejeira", + "block.biomesoplenty.cherry_door": "Porta de cerejeira", + "block.biomesoplenty.cherry_fence": "Cerca de cerejeira", + "block.biomesoplenty.cherry_fence_gate": "Portão de cerejeira", + "block.biomesoplenty.cherry_log": "Tronco de cerejeira", + "block.biomesoplenty.cherry_planks": "Tábuas de cerejeira", + "block.biomesoplenty.cherry_pressure_plate": "Placa de pressão de cerejeira", + "block.biomesoplenty.cherry_slab": "Laje de cerejeira", + "block.biomesoplenty.cherry_stairs": "Escadas de cerejeira", + "block.biomesoplenty.cherry_trapdoor": "Alçapão de cerejeira", + "block.biomesoplenty.cherry_wood": "Madeira de cerejeira", + "block.biomesoplenty.cherry_wood_slab": "Laje de cerejeira", + "block.biomesoplenty.chiseled_white_sandstone": "Arenito branco talhado", + "block.biomesoplenty.coarse_loamy_dirt": "Terra grossa lamacenta", + "block.biomesoplenty.coarse_sandy_dirt": "Terra grossa arenosa", + "block.biomesoplenty.coarse_silty_dirt": "Terra branca sedimentar", + "block.biomesoplenty.cut_white_sandstone": "Arenito branco lapidado", + "block.biomesoplenty.dead_button": "Botão de madeira morta", + "block.biomesoplenty.dead_door": "Porta de madeira morta", + "block.biomesoplenty.dead_fence": "Cerca de madeira morta", + "block.biomesoplenty.dead_fence_gate": "Portão de madeira morta", + "block.biomesoplenty.dead_grass": "Grama seca", + "block.biomesoplenty.dead_leaf_pile": "Pilha de folhas secas", + "block.biomesoplenty.dead_leaves": "Folhas mortas", + "block.biomesoplenty.dead_log": "Tronco de árvore morta", + "block.biomesoplenty.dead_planks": "Tábuas de madeira morta", + "block.biomesoplenty.dead_pressure_plate": "Placa de pressão de madeira morta", + "block.biomesoplenty.dead_sapling": "Muda de árvore morta", + "block.biomesoplenty.dead_slab": "Laje de madeira morta", + "block.biomesoplenty.dead_stairs": "Escadas de madeira morta", + "block.biomesoplenty.dead_trapdoor": "Alçapão de madeira morta", + "block.biomesoplenty.dead_wood": "Madeira morta", + "block.biomesoplenty.dead_wood_slab": "Laje de madeira morta", + "block.biomesoplenty.desert_grass": "Grama do deserto", + "block.biomesoplenty.dried_sand": "Areia seca", + "block.biomesoplenty.dune_grass": "Grama de duna", + "block.biomesoplenty.ethereal_button": "Botão de madeira etérea", + "block.biomesoplenty.ethereal_door": "Porta de madeira etérea", + "block.biomesoplenty.ethereal_fence": "Cerca de madeira etérea", + "block.biomesoplenty.ethereal_fence_gate": "Portão de madeira etérea", + "block.biomesoplenty.ethereal_leaves": "Folhas de madeira etérea", + "block.biomesoplenty.ethereal_log": "Tronco de madeira etérea", + "block.biomesoplenty.ethereal_planks": "Tábuas de madeira etérea", + "block.biomesoplenty.ethereal_pressure_plate": "Placa de pressão de madeira etérea", + "block.biomesoplenty.ethereal_sapling": "Muda de árvore etérea", + "block.biomesoplenty.ethereal_slab": "Laje de madeira etérea", + "block.biomesoplenty.ethereal_stairs": "Escadas de madeira etérea", + "block.biomesoplenty.ethereal_trapdoor": "Alçapão de madeira etérea", + "block.biomesoplenty.ethereal_wood": "Madeira etérea", + "block.biomesoplenty.ethereal_wood_slab": "Laje de madeira etérea", + "block.biomesoplenty.fir_button": "Botão de abeto", + "block.biomesoplenty.fir_door": "Porta de abeto", + "block.biomesoplenty.fir_fence": "Cerca de abeto", + "block.biomesoplenty.fir_fence_gate": "Portão de abeto", + "block.biomesoplenty.fir_leaves": "Folhas de abeto", + "block.biomesoplenty.fir_log": "Tronco de abeto", + "block.biomesoplenty.fir_planks": "Tábuas de abeto", + "block.biomesoplenty.fir_pressure_plate": "Placa de pressão de abeto", + "block.biomesoplenty.fir_sapling": "Muda de abeto", + "block.biomesoplenty.fir_slab": "Laje de abeto", + "block.biomesoplenty.fir_stairs": "Escadas de abeto", + "block.biomesoplenty.fir_trapdoor": "Alçapão de abeto", + "block.biomesoplenty.fir_wood": "Madeira de abeto", + "block.biomesoplenty.fir_wood_slab": "Laje de abeto", + "block.biomesoplenty.flesh": "Carne podre", + "block.biomesoplenty.flowering_oak_leaves": "Folhas de carvalho florescente", + "block.biomesoplenty.flowering_oak_sapling": "Muda de carvalho florescente", + "block.biomesoplenty.glowflower": "Flor-luminosa", + "block.biomesoplenty.glowshroom": "Cogumelo verde", + "block.biomesoplenty.goldenrod": "Vara dourada", + "block.biomesoplenty.hellbark_button": "Hellbark Button", + "block.biomesoplenty.hellbark_door": "Hellbark Door", + "block.biomesoplenty.hellbark_fence": "Hellbark Fence", + "block.biomesoplenty.hellbark_fence_gate": "Hellbark Fence Gate", + "block.biomesoplenty.hellbark_leaves": "Hellbark Leaves", + "block.biomesoplenty.hellbark_log": "Hellbark Log", + "block.biomesoplenty.hellbark_planks": "Hellbark Planks", + "block.biomesoplenty.hellbark_pressure_plate": "Hellbark Pressure Plate", + "block.biomesoplenty.hellbark_sapling": "Hellbark Sapling", + "block.biomesoplenty.hellbark_slab": "Hellbark Slab", + "block.biomesoplenty.hellbark_stairs": "Hellbark Stairs", + "block.biomesoplenty.hellbark_trapdoor": "Hellbark Trapdoor", + "block.biomesoplenty.hellbark_wood": "Hellbark Wood", + "block.biomesoplenty.hellbark_wood_slab": "Hellbark Slab", + "block.biomesoplenty.ivy": "Hera", + "block.biomesoplenty.jacaranda_button": "Botão de jacarandá", + "block.biomesoplenty.jacaranda_door": "Porta de jacarandá", + "block.biomesoplenty.jacaranda_fence": "Cerca de jacarandá", + "block.biomesoplenty.jacaranda_fence_gate": "Portão de jacarandá", + "block.biomesoplenty.jacaranda_leaves": "Folhas de jacarandá", + "block.biomesoplenty.jacaranda_log": "Tronco de jacarandá", + "block.biomesoplenty.jacaranda_planks": "Tábuas de jacarandá", + "block.biomesoplenty.jacaranda_pressure_plate": "Placa de pressão de jacarandá", + "block.biomesoplenty.jacaranda_sapling": "Muda de jacarandá", + "block.biomesoplenty.jacaranda_slab": "Laje de jacarandá", + "block.biomesoplenty.jacaranda_stairs": "Escadas de jacarandá", + "block.biomesoplenty.jacaranda_trapdoor": "Alçapão de jacarandá", + "block.biomesoplenty.jacaranda_wood": "Madeira de jacarandá", + "block.biomesoplenty.jacaranda_wood_slab": "Laje de jacarandá", + "block.biomesoplenty.lavender": "Lavanda", + "block.biomesoplenty.loamy_dirt": "Terra lamacenta", + "block.biomesoplenty.loamy_farmland": "Loamy Farmland", + "block.biomesoplenty.loamy_grass_block": "Bloco de grama lamacenta", + "block.biomesoplenty.loamy_grass_path": "Caminho de grama lamacenta", + "block.biomesoplenty.magic_button": "Botão de madeira mágica", + "block.biomesoplenty.magic_door": "Porta de madeira mágica", + "block.biomesoplenty.magic_fence": "Cerca de madeira mágica", + "block.biomesoplenty.magic_fence_gate": "Portão de madeira mágica", + "block.biomesoplenty.magic_leaves": "Folhas de árvore mágica", + "block.biomesoplenty.magic_log": "Tronco de árvore mágica", + "block.biomesoplenty.magic_planks": "Tábuas de madeira mágica", + "block.biomesoplenty.magic_pressure_plate": "Placa de pressão de madeira mágica", + "block.biomesoplenty.magic_sapling": "Muda de árvore mágica", + "block.biomesoplenty.magic_slab": "Laje de madeira mágica", + "block.biomesoplenty.magic_stairs": "Escadas de madeira mágica", + "block.biomesoplenty.magic_trapdoor": "Alçapão de madeira mágica", + "block.biomesoplenty.magic_wood": "Madeira mágica", + "block.biomesoplenty.magic_wood_slab": "Laje de madeira mágica", + "block.biomesoplenty.mahogany_button": "Botão de mogno", + "block.biomesoplenty.mahogany_door": "Porta de mogno", + "block.biomesoplenty.mahogany_fence": "Cerca de mogno", + "block.biomesoplenty.mahogany_fence_gate": "Portão de mogno", + "block.biomesoplenty.mahogany_leaves": "Folhas de mogno", + "block.biomesoplenty.mahogany_log": "Tronco de mogno", + "block.biomesoplenty.mahogany_planks": "Tábuas de mogno", + "block.biomesoplenty.mahogany_pressure_plate": "Placa de pressão de mogno", + "block.biomesoplenty.mahogany_sapling": "Muda de mogno", + "block.biomesoplenty.mahogany_slab": "Laje de mogno", + "block.biomesoplenty.mahogany_stairs": "Escadas de mogno", + "block.biomesoplenty.mahogany_trapdoor": "Alçapão de mogno", + "block.biomesoplenty.mahogany_wood": "Madeira de mogno", + "block.biomesoplenty.mahogany_wood_slab": "Laje de mogno", + "block.biomesoplenty.maple_leaves": "Folhas de bordo", + "block.biomesoplenty.maple_sapling": "Muda de bordo", + "block.biomesoplenty.mud": "Barro", + "block.biomesoplenty.mud_brick_block": "Tijolos de barro", + "block.biomesoplenty.mud_brick_slab": "Laje de tijolos de barro", + "block.biomesoplenty.mud_brick_stairs": "Escadas de tijolos de barro", + "block.biomesoplenty.orange_autumn_leaves": "Folhas de outono laranja", + "block.biomesoplenty.orange_autumn_sapling": "Muda de outono laranja", + "block.biomesoplenty.orange_cosmos": "Orange Cosmos", + "block.biomesoplenty.origin_grass_block": "Bloco de grama primordial", + "block.biomesoplenty.origin_leaves": "Folhas primordiais", + "block.biomesoplenty.origin_sapling": "Muda primordial", + "block.biomesoplenty.palm_button": "Botão de palmeira", + "block.biomesoplenty.palm_door": "Porta de palmeira", + "block.biomesoplenty.palm_fence": "Cerca de palmeira", + "block.biomesoplenty.palm_fence_gate": "Portão de palmeira", + "block.biomesoplenty.palm_leaves": "Folhas de palmeira", + "block.biomesoplenty.palm_log": "Tronco de palmeira", + "block.biomesoplenty.palm_planks": "Tábuas de palmeira", + "block.biomesoplenty.palm_pressure_plate": "Placa de pressão de palmeira", + "block.biomesoplenty.palm_sapling": "Muda de palmeira", + "block.biomesoplenty.palm_slab": "Laje de palmeira", + "block.biomesoplenty.palm_stairs": "Escadas de palmeira", + "block.biomesoplenty.palm_trapdoor": "Alçapão de palmeira", + "block.biomesoplenty.palm_wood": "Madeira de palmeira", + "block.biomesoplenty.palm_wood_slab": "Laje de palmeira", + "block.biomesoplenty.pink_cherry_leaves": "Folhas de cerejeira rosa", + "block.biomesoplenty.pink_cherry_sapling": "Muda de cerejeira rosa", + "block.biomesoplenty.pink_daffodil": "Narciso-rosa", + "block.biomesoplenty.pink_hibiscus": "Hibisco-rosa", + "block.biomesoplenty.redwood_button": "Botão de pau-brasil", + "block.biomesoplenty.redwood_door": "Porta de pau-brasil", + "block.biomesoplenty.redwood_fence": "Cerca de pau-brasil", + "block.biomesoplenty.redwood_fence_gate": "Portão de pau-brasil", + "block.biomesoplenty.redwood_leaves": "Folhas de pau-brasil", + "block.biomesoplenty.redwood_log": "Tronco de pau-brasil", + "block.biomesoplenty.redwood_planks": "Tábuas de pau-brasil", + "block.biomesoplenty.redwood_pressure_plate": "Placa de pressão de pau-brasil", + "block.biomesoplenty.redwood_sapling": "Muda de pau-brasil", + "block.biomesoplenty.redwood_slab": "Laje de pau-brasil", + "block.biomesoplenty.redwood_stairs": "Escadas de pau-brasil", + "block.biomesoplenty.redwood_trapdoor": "Alçapão de pau-brasil", + "block.biomesoplenty.redwood_wood": "Madeira de pau-brasil", + "block.biomesoplenty.redwood_wood_slab": "Laje de pau-brasil", + "block.biomesoplenty.reed": "Junco", + "block.biomesoplenty.root": "Raiz", + "block.biomesoplenty.rose": "Rosa", + "block.biomesoplenty.sandy_dirt": "Terra arenosa", + "block.biomesoplenty.sandy_farmland": "Sandy Farmland", + "block.biomesoplenty.sandy_grass_block": "Bloco de grama arenosa", + "block.biomesoplenty.sandy_grass_path": "Caminho de grama arenosa", + "block.biomesoplenty.short_grass": "Grama baixa", + "block.biomesoplenty.silty_dirt": "Terra sedimentar", + "block.biomesoplenty.silty_farmland": "Silty Farmland", + "block.biomesoplenty.silty_grass_block": "Bloco de grama sedimentar", + "block.biomesoplenty.silty_grass_path": "Caminho de grama sedimentar", + "block.biomesoplenty.smooth_white_sandstone": "Arenito branco liso", + "block.biomesoplenty.spectral_fern": "Samambaia espectral", + "block.biomesoplenty.stripped_cherry_log": "Tronco de cerejeira descascado", + "block.biomesoplenty.stripped_cherry_wood": "Madeira de cerejeira descascada", + "block.biomesoplenty.stripped_dead_log": "Tronco de árvore morta descascado", + "block.biomesoplenty.stripped_dead_wood": "Madeira de árvore morta descascada", + "block.biomesoplenty.stripped_ethereal_log": "Tronco de árvore etérea descascado", + "block.biomesoplenty.stripped_ethereal_wood": "Madeira etérea descascada", + "block.biomesoplenty.stripped_fir_log": "Tronco de abeto descascado", + "block.biomesoplenty.stripped_fir_wood": "Madeira de abeto descascada", + "block.biomesoplenty.stripped_hellbark_log": "Stripped Hellbark Log", + "block.biomesoplenty.stripped_hellbark_wood": "Stripped Hellbark Wood", + "block.biomesoplenty.stripped_jacaranda_log": "Tronco de jacarandá descascado", + "block.biomesoplenty.stripped_jacaranda_wood": "Madeira de jacarandá descascada", + "block.biomesoplenty.stripped_magic_log": "Tronco de árvore mágica descascado", + "block.biomesoplenty.stripped_magic_wood": "Madeira mágica descascada", + "block.biomesoplenty.stripped_mahogany_log": "Tronco de mogno descascado", + "block.biomesoplenty.stripped_mahogany_wood": "Madeira de mogno descascado", + "block.biomesoplenty.stripped_palm_log": "Tronco de palmeira descascado", + "block.biomesoplenty.stripped_palm_wood": "Madeira de palmeira descascada", + "block.biomesoplenty.stripped_redwood_log": "Tronco de pau-brasil descascado", + "block.biomesoplenty.stripped_redwood_wood": "Madeira de pau-brasil descascada", + "block.biomesoplenty.stripped_umbran_log": "Tronco de árvore sinistra descascado", + "block.biomesoplenty.stripped_umbran_wood": "Madeira sinistra descascada", + "block.biomesoplenty.stripped_willow_log": "Tronco de salgueiro descascado", + "block.biomesoplenty.stripped_willow_wood": "Madeira de salgueiro descascada", + "block.biomesoplenty.tall_cattail": "Amento alto", + "block.biomesoplenty.thorn": "Espinhos", + "block.biomesoplenty.tiny_cactus": "Cacto pequeno", + "block.biomesoplenty.toadstool": "Cogumelo vermelho", + "block.biomesoplenty.umbran_button": "Botão de madeira sinistra", + "block.biomesoplenty.umbran_door": "Porta de madeira sinistra", + "block.biomesoplenty.umbran_fence": "Cerca de madeira sinistra", + "block.biomesoplenty.umbran_fence_gate": "Portão de madeira sinistra", + "block.biomesoplenty.umbran_leaves": "Folhas de madeira sinistra", + "block.biomesoplenty.umbran_log": "Tronco de madeira sinistra", + "block.biomesoplenty.umbran_planks": "Tábuas de madeira sinistra", + "block.biomesoplenty.umbran_pressure_plate": "Placa de pressão de madeira sinistra", + "block.biomesoplenty.umbran_sapling": "Muda de árvore sinistra", + "block.biomesoplenty.umbran_slab": "Laje de árvore sinistra", + "block.biomesoplenty.umbran_stairs": "Escadas de madeira sinistra", + "block.biomesoplenty.umbran_trapdoor": "Alçapão de madeira sinistra", + "block.biomesoplenty.umbran_wood": "Madeira sinistra", + "block.biomesoplenty.umbran_wood_slab": "Laje de madeira sinistra", + "block.biomesoplenty.violet": "Violeta", + "block.biomesoplenty.watergrass": "Capim-d'água", + "block.biomesoplenty.white_cherry_leaves": "Folhas de cerejeira branca", + "block.biomesoplenty.white_cherry_sapling": "Muda de cerejeira branca", + "block.biomesoplenty.white_sand": "Areia branca", + "block.biomesoplenty.white_sandstone": "Arenito branco", + "block.biomesoplenty.white_sandstone_slab": "Laje de arenito branco", + "block.biomesoplenty.white_sandstone_stairs": "Escadas de arenito branco", + "block.biomesoplenty.wildflower": "Flor-silvestre", + "block.biomesoplenty.willow_button": "Botão de salgueiro", + "block.biomesoplenty.willow_door": "Porta de salgueiro", + "block.biomesoplenty.willow_fence": "Cerca de salgueiro", + "block.biomesoplenty.willow_fence_gate": "Portão de salgueiro", + "block.biomesoplenty.willow_leaves": "Folhas de salgueiro", + "block.biomesoplenty.willow_log": "Tronco de salgueiro", + "block.biomesoplenty.willow_planks": "Tábuas de salgueiro", + "block.biomesoplenty.willow_pressure_plate": "Placa de pressão de salgueiro", + "block.biomesoplenty.willow_sapling": "Muda de salgueiro", + "block.biomesoplenty.willow_slab": "Laje de salgueiro", + "block.biomesoplenty.willow_stairs": "Escadas de salgueiro", + "block.biomesoplenty.willow_trapdoor": "Alçapão de salgueiro", + "block.biomesoplenty.willow_vine": "Trepadeira de salgueiro", + "block.biomesoplenty.willow_wood": "Madeira de salgueiro", + "block.biomesoplenty.willow_wood_slab": "Laje de salgueiro", + "block.biomesoplenty.wilted_lily": "Lírio-murcho", + "block.biomesoplenty.yellow_autumn_leaves": "Folhas de outono amarelo", + "block.biomesoplenty.yellow_autumn_sapling": "Muda de outono amarelo", + + "entity.biomesoplenty.mudball": "Bola de barro", + "entity.biomesoplenty.bop_boat": "Bote" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/ru_ru.json b/src/main/resources/assets/biomesoplenty/lang/ru_ru.json new file mode 100644 index 0000000000..89e8b9ee91 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/ru_ru.json @@ -0,0 +1,416 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Исследуйте мир вокруг себя", + "advancements.biomesoplenty.all_biomes.title": "Странник", + "advancements.biomesoplenty.all_biomes.description": "Найдите все биомы Biomes O' Plenty", + + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Альпы", + "biome.biomesoplenty.alps_foothills": "Предгорье Альп", + "biome.biomesoplenty.bamboo_blossom_grove": "Цветущая бамбуковая роща", + "biome.biomesoplenty.bayou": "Байу", + "biome.biomesoplenty.bayou_mangrove": "Байу в манговых зарослях", + "biome.biomesoplenty.burnt_forest": "Сожженный лес", + "biome.biomesoplenty.cherry_blossom_grove": "Цветущая вишнёвая роща", + "biome.biomesoplenty.cold_desert": "Холодная пустыня", + "biome.biomesoplenty.coniferous_forest": "Хвойный лес", + "biome.biomesoplenty.coniferous_lakes": "Озёра хвойного леса", + "biome.biomesoplenty.crystalline_chasm": "Кристаллическая пропасть", + "biome.biomesoplenty.dead_forest": "Мёртвый лес", + "biome.biomesoplenty.dead_swamp": "Мёртвое болото", + "biome.biomesoplenty.deep_bayou": "Мёртвое байу", + "biome.biomesoplenty.dryland": "Сухие земли", + "biome.biomesoplenty.dry_boneyard": "Сухой костный двор", + "biome.biomesoplenty.fir_clearing": "Пихтовая поляна", + "biome.biomesoplenty.flower_meadow": "Цветочный луг", + "biome.biomesoplenty.fungal_field": "Грибное поле", + "biome.biomesoplenty.fungal_jungle": "Грибные джунгли", + "biome.biomesoplenty.golden_prairie": "Золотая прерия", + "biome.biomesoplenty.gravel_beach": "Гравийный пляж", + "biome.biomesoplenty.grove": "Роща", + "biome.biomesoplenty.grove_clearing": "Очищенная роща", + "biome.biomesoplenty.grove_lakes": "Озёра роши", + "biome.biomesoplenty.highland": "Нагорье", + "biome.biomesoplenty.highland_crag": "Нагорный утёс", + "biome.biomesoplenty.highland_moor": "Влажное нагорье", + "biome.biomesoplenty.jade_cliffs": "Нефритовые скалы", + "biome.biomesoplenty.jade_grassland": "Нефритовый луг", + "biome.biomesoplenty.lavender_field": "Лавандовое поле", + "biome.biomesoplenty.lavender_forest": "Лавандовый лес", + "biome.biomesoplenty.lush_desert": "Пышная пустыня", + "biome.biomesoplenty.lush_savanna": "Пышная саванна", + "biome.biomesoplenty.meadow": "Луг", + "biome.biomesoplenty.meadow_forest": "Луговой лес", + "biome.biomesoplenty.mystic_grove": "Мистическая роща", + "biome.biomesoplenty.mystic_plains": "Мистические равнины", + "biome.biomesoplenty.ominous_mire": "Зловещее болото", + "biome.biomesoplenty.ominous_woods": "Зловещий лес", + "biome.biomesoplenty.orchard": "Плодовый сад", + "biome.biomesoplenty.origin_valley": "Долина зарождения", + "biome.biomesoplenty.overgrown_fungal_jungle": "Заросшие грибные джунгли", + "biome.biomesoplenty.prairie": "Прерия", + "biome.biomesoplenty.rainbow_hills": "Радужные холмы", + "biome.biomesoplenty.rainforest": "Дождевой лес", + "biome.biomesoplenty.rainforest_cliffs": "Скалы дождевого леса", + "biome.biomesoplenty.rainforest_floodplain": "Пойма дождевого леса", + "biome.biomesoplenty.redwood_forest": "Красный лес", + "biome.biomesoplenty.redwood_forest_edge": "Окраина красного леса", + "biome.biomesoplenty.redwood_hills": "Горы красного леса", + "biome.biomesoplenty.scrubland": "Малая кустарниковая степь", + "biome.biomesoplenty.seasonal_forest": "Сезонный лес", + "biome.biomesoplenty.seasonal_orchard": "Сезонный плодовый сад", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Сезонное тыквенное поле", + "biome.biomesoplenty.shrubland": "Большая кустарниковая степь", + "biome.biomesoplenty.shrubland_hills": "Горы большой кустарниковой степи", + "biome.biomesoplenty.silkglade": "Шёлковая поляна", + "biome.biomesoplenty.silkglade_nest": "Гнездо шёлковой поляны", + "biome.biomesoplenty.snowy_coniferous_forest": "Снежный хвойный лес", + "biome.biomesoplenty.snowy_fir_clearing": "Снежная пихтовая поляна", + "biome.biomesoplenty.snowy_maple_forest": "Снежный кленовый лес", + "biome.biomesoplenty.tropic_beach": "Тропический пляж", + "biome.biomesoplenty.tropic_plains": "Тропические равнины", + "biome.biomesoplenty.tropics": "Тропики", + "biome.biomesoplenty.tundra": "Тундра", + "biome.biomesoplenty.tundra_basin": "Тундровый бассейн", + "biome.biomesoplenty.tundra_bog": "Тундровое болото", + "biome.biomesoplenty.undergrowth": "Подлесок", + "biome.biomesoplenty.visceral_heap": "Висцеральная куча", + "biome.biomesoplenty.volcanic_plains": "Вулканические равнины", + "biome.biomesoplenty.volcano": "Вулкан", + "biome.biomesoplenty.wasteland": "Пустошь", + "biome.biomesoplenty.wetland": "Водно-болотное угодье", + "biome.biomesoplenty.wetland_marsh": "Болото водно-болотного угодья", + "biome.biomesoplenty.withered_abyss": "Иссохшая Бездна", + "biome.biomesoplenty.wooded_scrubland": "Лесистая малая кустарниковая степь", + "biome.biomesoplenty.wooded_wasteland": "Лесистая пустошь", + + "item.biomesoplenty.bop_icon": "BOP Icon", + "item.biomesoplenty.cherry_boat": "Вишнёвая лодка", + "item.biomesoplenty.dead_boat": "Мёртвая лодка", + "item.biomesoplenty.fir_boat": "Пихтовая лодка", + "item.biomesoplenty.hellbark_boat": "Лодка из адской коры", + "item.biomesoplenty.jacaranda_boat": "Жакарандовая лодка", + "item.biomesoplenty.magic_boat": "Магическая лодка", + "item.biomesoplenty.mahogany_boat": "Махагониевая лодка", + "item.biomesoplenty.mud_ball": "Комок грязи", + "item.biomesoplenty.mud_brick": "Кирпич из грязи", + "item.biomesoplenty.music_disc_wanderer": "Пластинка", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Пальмовая лодка", + "item.biomesoplenty.redwood_boat": "Лодка из красного дерева", + "item.biomesoplenty.umbran_boat": "Зловещая лодка", + "item.biomesoplenty.willow_boat": "Ивовая лодка", + + "block.biomesoplenty.barley": "Ячмень", + "block.biomesoplenty.black_sand": "Чёрный песок", + "block.biomesoplenty.black_sandstone": "Чёрный песчаник", + "block.biomesoplenty.black_sandstone_slab": "Чёрная песчаниковая плита", + "block.biomesoplenty.black_sandstone_stairs": "Чёрные песчаниковые ступеньки", + "block.biomesoplenty.black_sandstone_wall": "Чёрная песчаниковая ограда", + "block.biomesoplenty.blue_hydrangea": "Голубая гортензия", + "block.biomesoplenty.bramble": "Шипастый корень", + "block.biomesoplenty.burning_blossom": "Огнецвет", + "block.biomesoplenty.bush": "Куст", + "block.biomesoplenty.cattail": "Рогоз", + "block.biomesoplenty.cherry_button": "Вишнёвая кнопка", + "block.biomesoplenty.cherry_door": "Вишнёвая дверь", + "block.biomesoplenty.cherry_fence": "Вишнёвый забор", + "block.biomesoplenty.cherry_fence_gate": "Вишнёвая калитка", + "block.biomesoplenty.cherry_log": "Вишнёвое бревно", + "block.biomesoplenty.cherry_planks": "Вишнёвые доски", + "block.biomesoplenty.cherry_pressure_plate": "Вишнёвая нажимная плита", + "block.biomesoplenty.cherry_sign": "Вишнёвая табличка", + "block.biomesoplenty.cherry_slab": "Вишнёвая плита", + "block.biomesoplenty.cherry_stairs": "Вишнёвые ступеньки", + "block.biomesoplenty.cherry_trapdoor": "Вишнёвый люк", + "block.biomesoplenty.cherry_wall_sign": "Вишнёвая настенная табличка", + "block.biomesoplenty.cherry_wood": "Вишня", + "block.biomesoplenty.chiseled_black_sandstone": "Чёрный резной песчаник", + "block.biomesoplenty.cut_black_sandstone": "Чёрный пиленый песчаник", + "block.biomesoplenty.cut_black_sandstone_slab": "Чёрная плита из пиленого песчаника", + "block.biomesoplenty.chiseled_orange_sandstone": "Оранжевый резной песчаник", + "block.biomesoplenty.cut_orange_sandstone": "Оранжевый пиленый песчаник", + "block.biomesoplenty.cut_orange_sandstone_slab": "Оранжевая плита из пиленого песчаника", + "block.biomesoplenty.chiseled_white_sandstone": "Белоснежный резной песчаник", + "block.biomesoplenty.cut_white_sandstone": "Белоснежный пиленый песчаник", + "block.biomesoplenty.cut_white_sandstone_slab": "Белоснежная плита из пиленого песчаника", + "block.biomesoplenty.dead_branch": "Мёртвая ветвь", + "block.biomesoplenty.dead_button": "Мёртвая кнопка", + "block.biomesoplenty.dead_door": "Мёртвая дверь", + "block.biomesoplenty.dead_fence": "Мёртвый забор", + "block.biomesoplenty.dead_fence_gate": "Мёртвая калитка", + "block.biomesoplenty.dead_grass": "Мёртвая трава", + "block.biomesoplenty.dead_leaves": "Мёртвые листья", + "block.biomesoplenty.dead_log": "Мёртвое бревно", + "block.biomesoplenty.dead_planks": "Мёртвые доски", + "block.biomesoplenty.dead_pressure_plate": "Мёртвая нажимная плита", + "block.biomesoplenty.dead_sapling": "Мёртвый саженец", + "block.biomesoplenty.dead_sign": "Мёртвая табличка", + "block.biomesoplenty.dead_slab": "Мёртвая плита", + "block.biomesoplenty.dead_stairs": "Мёртвые ступньки", + "block.biomesoplenty.dead_trapdoor": "Мёртвый люк", + "block.biomesoplenty.dead_wall_sign": "Мёртвая настенная табличка", + "block.biomesoplenty.dead_wood": "Мёртвое дерево", + "block.biomesoplenty.desert_grass": "Пустынная трава", + "block.biomesoplenty.dried_salt": "Сухая соль", + "block.biomesoplenty.dune_grass": "Дюнная трава", + "block.biomesoplenty.fir_button": "Пихтовая кнопка", + "block.biomesoplenty.fir_door": "Пихтовая дверь", + "block.biomesoplenty.fir_fence": "Пихтовый забор", + "block.biomesoplenty.fir_fence_gate": "Пихтовая калитка", + "block.biomesoplenty.fir_leaves": "Пихтовые листья", + "block.biomesoplenty.fir_log": "Пихтовое бревно", + "block.biomesoplenty.fir_planks": "Пихтовые доски", + "block.biomesoplenty.fir_pressure_plate": "Пихтовая нажимная плита", + "block.biomesoplenty.fir_sapling": "Пихтовый саженец", + "block.biomesoplenty.fir_sign": "Пихтовая табличка", + "block.biomesoplenty.fir_slab": "Пихтовая плита", + "block.biomesoplenty.fir_stairs": "Пихтовые ступеньки", + "block.biomesoplenty.fir_trapdoor": "Пихтовый люк", + "block.biomesoplenty.fir_wall_sign": "Пихтовая настенная табличка", + "block.biomesoplenty.fir_wood": "Пихтовое дерево", + "block.biomesoplenty.flesh": "Плоть", + "block.biomesoplenty.flowering_oak_leaves": "Листья цветущего дуба", + "block.biomesoplenty.flowering_oak_sapling": "Саженец цветущего дуба", + "block.biomesoplenty.glowflower": "Светоцвет", + "block.biomesoplenty.glowshroom": "Светогриб", + "block.biomesoplenty.glowshroom_block": "Блок светогриба", + "block.biomesoplenty.goldenrod": "Золотарник", + "block.biomesoplenty.hellbark_button": "Кнопка из адской коры", + "block.biomesoplenty.hellbark_door": "Дверь из адской коры", + "block.biomesoplenty.hellbark_fence": "Забор из адской коры", + "block.biomesoplenty.hellbark_fence_gate": "Калитка из адской коры", + "block.biomesoplenty.hellbark_leaves": "Адские листья", + "block.biomesoplenty.hellbark_log": "Адское бревно", + "block.biomesoplenty.hellbark_planks": "Доски из адской коры", + "block.biomesoplenty.hellbark_pressure_plate": "Нажимная плита из адской коры", + "block.biomesoplenty.hellbark_sapling": "Адский саженец", + "block.biomesoplenty.hellbark_sign": "Табличка из адской коры", + "block.biomesoplenty.hellbark_slab": "Плита из адской коры", + "block.biomesoplenty.hellbark_stairs": "Ступеньки из адской коры", + "block.biomesoplenty.hellbark_trapdoor": "Люк из адской коры", + "block.biomesoplenty.hellbark_wall_sign": "Настенная табличка из адской коры", + "block.biomesoplenty.hellbark_wood": "Адское дерево", + "block.biomesoplenty.jacaranda_button": "Жакарандовая кнопка", + "block.biomesoplenty.jacaranda_door": "Жакарандовая дверь", + "block.biomesoplenty.jacaranda_fence": "Жакарандовый забор", + "block.biomesoplenty.jacaranda_fence_gate": "Жакарандовая калитка", + "block.biomesoplenty.jacaranda_leaves": "Жакарандовое цветение", + "block.biomesoplenty.jacaranda_log": "Жакарандовое бревно", + "block.biomesoplenty.jacaranda_planks": "Жакарандовые доски", + "block.biomesoplenty.jacaranda_pressure_plate": "Жакарандовая нажимная плита", + "block.biomesoplenty.jacaranda_sapling": "Жакарандовый саженец", + "block.biomesoplenty.jacaranda_sign": "Жакарандовая табличка", + "block.biomesoplenty.jacaranda_slab": "Жакарандовая плита", + "block.biomesoplenty.jacaranda_stairs": "Жакарандовые ступеньки", + "block.biomesoplenty.jacaranda_trapdoor": "Жакарандовый люк", + "block.biomesoplenty.jacaranda_wall_sign": "Жакарандовая настенная табличка", + "block.biomesoplenty.jacaranda_wood": "Жакаранда", + "block.biomesoplenty.lavender": "Лаванда", + "block.biomesoplenty.magic_button": "Магическая кнопка", + "block.biomesoplenty.magic_door": "Магическая дверь", + "block.biomesoplenty.magic_fence": "Магический забор", + "block.biomesoplenty.magic_fence_gate": "Магическая калитка", + "block.biomesoplenty.magic_leaves": "Магические листья", + "block.biomesoplenty.magic_log": "Магическое бревно", + "block.biomesoplenty.magic_planks": "Магические доски", + "block.biomesoplenty.magic_pressure_plate": "Магическая нажимная плита", + "block.biomesoplenty.magic_sapling": "Магический саженец", + "block.biomesoplenty.magic_sign": "Магическая табличка", + "block.biomesoplenty.magic_slab": "Магическая плита", + "block.biomesoplenty.magic_stairs": "Магические ступеньки", + "block.biomesoplenty.magic_trapdoor": "Магический люк", + "block.biomesoplenty.magic_wall_sign": "Магическая настенная табличка", + "block.biomesoplenty.magic_wood": "Магическое дерево", + "block.biomesoplenty.mahogany_button": "Махагониевая кнопка", + "block.biomesoplenty.mahogany_door": "Махагониевая дверь", + "block.biomesoplenty.mahogany_fence": "Махагониевый забор", + "block.biomesoplenty.mahogany_fence_gate": "Махагониевая калитка", + "block.biomesoplenty.mahogany_leaves": "Листья махагони", + "block.biomesoplenty.mahogany_log": "Махагониевое бревно", + "block.biomesoplenty.mahogany_planks": "Махагониевые доски", + "block.biomesoplenty.mahogany_pressure_plate": "Махагониевая нажимная плита", + "block.biomesoplenty.mahogany_sapling": "Махагониевый саженец", + "block.biomesoplenty.mahogany_sign": "Махагониевая табличка", + "block.biomesoplenty.mahogany_slab": "Махагониевая плита", + "block.biomesoplenty.mahogany_stairs": "Махагониевые ступеньки", + "block.biomesoplenty.mahogany_trapdoor": "Махагониевый люк", + "block.biomesoplenty.mahogany_wall_sign": "Махагониевая настенная табличка", + "block.biomesoplenty.mahogany_wood": "Махагони", + "block.biomesoplenty.mangrove_root": "Мангровый корень", + "block.biomesoplenty.maple_leaves": "Кленовые листья", + "block.biomesoplenty.maple_sapling": "Кленовый саженец", + "block.biomesoplenty.mud": "Грязь", + "block.biomesoplenty.mud_brick_slab": "Кирпичная плита из грязи", + "block.biomesoplenty.mud_brick_stairs": "Кирпичные ступеньки из грязи", + "block.biomesoplenty.mud_brick_wall": "Кирпичная ограда из грязи", + "block.biomesoplenty.mud_bricks": "Кирпичи из грязи", + "block.biomesoplenty.nether_crystal": "Незерский кристалл", + "block.biomesoplenty.nether_crystal_block": "Незерский кристальный блок", + "block.biomesoplenty.orange_autumn_leaves": "Оранжевые осенние листья", + "block.biomesoplenty.orange_autumn_sapling": "Саженец осеннего тёмного дуба", + "block.biomesoplenty.orange_cosmos": "Оранжевая космея", + "block.biomesoplenty.orange_sand": "Оранжевый песок", + "block.biomesoplenty.orange_sandstone": "Оранжевый песчаник", + "block.biomesoplenty.orange_sandstone_slab": "Оранжевая плита из песчаника", + "block.biomesoplenty.orange_sandstone_stairs": "Оранжевые ступеньки из песчаника", + "block.biomesoplenty.orange_sandstone_wall": "Оранжевая ограда из песчаника", + "block.biomesoplenty.origin_grass_block": "Блок травы зарождения", + "block.biomesoplenty.origin_leaves": "Листья зарождения", + "block.biomesoplenty.origin_sapling": "Саженец зарождения", + "block.biomesoplenty.palm_button": "Пальмовая кнопка", + "block.biomesoplenty.palm_door": "Пальмовая дверь", + "block.biomesoplenty.palm_fence": "Пальмовый забор", + "block.biomesoplenty.palm_fence_gate": "Пальмовая калитка", + "block.biomesoplenty.palm_leaves": "Пальмовые листья", + "block.biomesoplenty.palm_log": "Пальмовое бревно", + "block.biomesoplenty.palm_planks": "Пальмовые доски", + "block.biomesoplenty.palm_pressure_plate": "Пальмовая нажимная плита", + "block.biomesoplenty.palm_sapling": "Пальмовый саженец", + "block.biomesoplenty.palm_sign": "Пальмовая табличка", + "block.biomesoplenty.palm_slab": "Пальмовая плита", + "block.biomesoplenty.palm_stairs": "Пальмовые ступеньки", + "block.biomesoplenty.palm_trapdoor": "Пальмовый люк", + "block.biomesoplenty.palm_wall_sign": "Пальмовая настенная табличка", + "block.biomesoplenty.palm_wood": "Пальма", + "block.biomesoplenty.pink_cherry_leaves": "Розовое вишнёвое цветение", + "block.biomesoplenty.pink_cherry_sapling": "Саженец розовой вишни", + "block.biomesoplenty.pink_daffodil": "Розовый нарцисс", + "block.biomesoplenty.pink_hibiscus": "Розовый гибискус", + "block.biomesoplenty.potted_burning_blossom": "Огнецвет в горшке", + "block.biomesoplenty.potted_dead_sapling": "Мёртвый саженец в горшке", + "block.biomesoplenty.potted_fir_sapling": "Пихтовый саженец в горшке", + "block.biomesoplenty.potted_flowering_oak_sapling": "Саженец цветущего дуба в горшке", + "block.biomesoplenty.potted_glowflower": "Светоцвет в горшке", + "block.biomesoplenty.potted_glowshroom": "Светогриб в горшке", + "block.biomesoplenty.potted_hellbark_sapling": "Адский саженец в горшке", + "block.biomesoplenty.potted_jacaranda_sapling": "Саженец жакаранды в горшке", + "block.biomesoplenty.potted_lavender": "Лаванда в горшке", + "block.biomesoplenty.potted_magic_sapling": "Магический саженец в горшке", + "block.biomesoplenty.potted_mahogany_sapling": "Махагониевый саженец в горшке", + "block.biomesoplenty.potted_maple_sapling": "Кленовый саженец в горшке", + "block.biomesoplenty.potted_orange_autumn_sapling": "Саженец осеннего тёмного дуба в горшке", + "block.biomesoplenty.potted_orange_cosmos": "Оранжевая космея в горшке", + "block.biomesoplenty.potted_origin_sapling": "Саженец зарождения в горшке", + "block.biomesoplenty.potted_palm_sapling": "Пальмовый саженец в горшке", + "block.biomesoplenty.potted_pink_cherry_sapling": "Саженец розовой вишни в горшке", + "block.biomesoplenty.potted_pink_daffodil": "Розовый нарцисс в горшке", + "block.biomesoplenty.potted_pink_hibiscus": "Розовый гибискус в горшке", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Саженец радужной берёзы в горшке", + "block.biomesoplenty.potted_redwood_sapling": "Саженец красного дерева в горшке", + "block.biomesoplenty.potted_rose": "Роза в горшке", + "block.biomesoplenty.potted_sprout": "Отросток в горшке", + "block.biomesoplenty.potted_toadstool": "Поганка в горшке", + "block.biomesoplenty.potted_umbran_sapling": "Зловещий саженец в горшке", + "block.biomesoplenty.potted_violet": "Фиалка в горшке", + "block.biomesoplenty.potted_white_cherry_sapling": "Саженец белой вишни в горшке", + "block.biomesoplenty.potted_wildflower": "Полевой цветок в горшке", + "block.biomesoplenty.potted_willow_sapling": "Ивовый саженец в горшке", + "block.biomesoplenty.potted_wilted_lily": "Увядшая лилия в горшке", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Саженец осенней берёзы в горшке", + "block.biomesoplenty.rainbow_birch_leaves": "Листья радужной берёзы", + "block.biomesoplenty.rainbow_birch_sapling": "Саженец радужной берёзы", + "block.biomesoplenty.redwood_button": "Кнопка из красного дерева", + "block.biomesoplenty.redwood_door": "Дверь из красного дерева", + "block.biomesoplenty.redwood_fence": "Забор из красного дерева", + "block.biomesoplenty.redwood_fence_gate": "Калитка из красного дерева", + "block.biomesoplenty.redwood_leaves": "Листья красного дерева", + "block.biomesoplenty.redwood_log": "Бревно красного дерева", + "block.biomesoplenty.redwood_planks": "Доски из красного дерева", + "block.biomesoplenty.redwood_pressure_plate": "Нажимная плита из красного дерева", + "block.biomesoplenty.redwood_sapling": "Саженец красного дерева", + "block.biomesoplenty.redwood_sign": "Табличка из красного дерева", + "block.biomesoplenty.redwood_slab": "Плита из красного дерева", + "block.biomesoplenty.redwood_stairs": "Ступеньки из красного дерева", + "block.biomesoplenty.redwood_trapdoor": "Люк из красного дерева", + "block.biomesoplenty.redwood_wall_sign": "Настенная табличка из красного дерева", + "block.biomesoplenty.redwood_wood": "Красное дерево", + "block.biomesoplenty.reed": "Камыш", + "block.biomesoplenty.rose": "Роза", + "block.biomesoplenty.smooth_black_sandstone": "Чёрный гладкий песчаник", + "block.biomesoplenty.smooth_black_sandstone_slab": "Чёрная плита из гладкого песчаника", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Чёрные ступеньки из гладкого песчаника", + "block.biomesoplenty.smooth_orange_sandstone": "Оранжевый гладкий песчаник", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Оранжевая плита из гладкого песчаника", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Оранжевые ступеньки из гладкого песчаника", + "block.biomesoplenty.smooth_white_sandstone": "Белоснежный гладкий песчаник", + "block.biomesoplenty.smooth_white_sandstone_slab": "Белоснежная плита из гладкого песчаника", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Белоснежные ступеньки из гладкого песчаника", + "block.biomesoplenty.sprout": "Отросток", + "block.biomesoplenty.stripped_cherry_log": "Обтёсанное вишнёвое бревно", + "block.biomesoplenty.stripped_cherry_wood": "Обтёсанная вишнёвая древесина", + "block.biomesoplenty.stripped_dead_log": "Обтёсанное мёртвое бревно", + "block.biomesoplenty.stripped_dead_wood": "Обтёсанная мёртвая древесина", + "block.biomesoplenty.stripped_fir_log": "Обтёсанное пихтовое бревно", + "block.biomesoplenty.stripped_fir_wood": "Обтёсанная пихтовая древесина", + "block.biomesoplenty.stripped_hellbark_log": "Обтёсанное адское бревно", + "block.biomesoplenty.stripped_hellbark_wood": "Обтёсанная адская древесина", + "block.biomesoplenty.stripped_jacaranda_log": "Обтёсанное жакарандовое бревно", + "block.biomesoplenty.stripped_jacaranda_wood": "Обтёсанная жакарандовая древесина", + "block.biomesoplenty.stripped_magic_log": "Обтёсанное магическое бревно", + "block.biomesoplenty.stripped_magic_wood": "Обтёсанная магическая древесина", + "block.biomesoplenty.stripped_mahogany_log": "Обтёсанное махагониевое бревно", + "block.biomesoplenty.stripped_mahogany_wood": "Обтёсанная махагониевая древесина", + "block.biomesoplenty.stripped_palm_log": "Обтёсанное пальмовое бревно", + "block.biomesoplenty.stripped_palm_wood": "Обтёсанная пальмовая древесина", + "block.biomesoplenty.stripped_redwood_log": "Обтёсанное бревно красного дерева", + "block.biomesoplenty.stripped_redwood_wood": "Обтёсанная древесина красного дерева", + "block.biomesoplenty.stripped_umbran_log": "Обтёсанное зловещее бревно", + "block.biomesoplenty.stripped_umbran_wood": "Обтёсанная зловещая древесина", + "block.biomesoplenty.stripped_willow_log": "Обтёсанное ивовое бревно", + "block.biomesoplenty.stripped_willow_wood": "Обтёсанная ивовая древесина", + "block.biomesoplenty.toadstool": "Поганка", + "block.biomesoplenty.toadstool_block": "Блок поганки", + "block.biomesoplenty.umbran_button": "Зловещая кнопка", + "block.biomesoplenty.umbran_door": "Зловещая дверь", + "block.biomesoplenty.umbran_fence": "Зловещий забор", + "block.biomesoplenty.umbran_fence_gate": "Зловещая калитка", + "block.biomesoplenty.umbran_leaves": "Зловещие листья", + "block.biomesoplenty.umbran_log": "Зловещее бревно", + "block.biomesoplenty.umbran_planks": "Зловещие доски", + "block.biomesoplenty.umbran_pressure_plate": "Зловещая нажимная плита", + "block.biomesoplenty.umbran_sapling": "Зловещий саженец", + "block.biomesoplenty.umbran_sign": "Зловещая табличка", + "block.biomesoplenty.umbran_slab": "Зловещая плита", + "block.biomesoplenty.umbran_stairs": "Зловещие ступеньки", + "block.biomesoplenty.umbran_trapdoor": "Зловещий люк", + "block.biomesoplenty.umbran_wall_sign": "Зловещая настенная табличка", + "block.biomesoplenty.umbran_wood": "Зловещее дерево", + "block.biomesoplenty.violet": "Фиалка", + "block.biomesoplenty.watergrass": "Водная трава", + "block.biomesoplenty.white_cherry_leaves": "Белое вишнёвое цветение", + "block.biomesoplenty.white_cherry_sapling": "Саженец белой вишни", + "block.biomesoplenty.white_sand": "Белоснежный песок", + "block.biomesoplenty.white_sandstone": "Белоснежный песчаник", + "block.biomesoplenty.white_sandstone_slab": "Белоснежная песчаниковая плита", + "block.biomesoplenty.white_sandstone_stairs": "Белоснежные песчаниковые ступеньки", + "block.biomesoplenty.white_sandstone_wall": "Белоснежная песчаниковая ограда", + "block.biomesoplenty.wildflower": "Полевой цветок", + "block.biomesoplenty.willow_button": "Ивовая кнопка", + "block.biomesoplenty.willow_door": "Ивовая дверь", + "block.biomesoplenty.willow_fence": "Ивовый забор", + "block.biomesoplenty.willow_fence_gate": "Ивовая калитка", + "block.biomesoplenty.willow_leaves": "Ивовые листья", + "block.biomesoplenty.willow_log": "Ивовое бревно", + "block.biomesoplenty.willow_planks": "Ивовые доски", + "block.biomesoplenty.willow_pressure_plate": "Ивовая нажимная плита", + "block.biomesoplenty.willow_sapling": "Ивовый саженец", + "block.biomesoplenty.willow_sign": "Ивовая табличка", + "block.biomesoplenty.willow_slab": "Ивовая плита", + "block.biomesoplenty.willow_stairs": "Ивовые ступеньки", + "block.biomesoplenty.willow_trapdoor": "Ивовый люк", + "block.biomesoplenty.willow_vine": "Ивовые лианы", + "block.biomesoplenty.willow_wall_sign": "Ивовая настенная табличка", + "block.biomesoplenty.willow_wood": "Ива", + "block.biomesoplenty.wilted_lily": "Увядшая лилия", + "block.biomesoplenty.yellow_autumn_leaves": "Жёлтые осенние листья", + "block.biomesoplenty.yellow_autumn_sapling": "Саженец осенней берёзы", + + "argument.biomesoplenty.biome.invalid": "Неверный аргумент для биома", + "commands.biomesoplenty.tpbiome.success": "%s телепортирован в биом %s в точку (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "Биом %s не обнаружен!", + + "entity.biomesoplenty.boat_bop": "Барка" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/sv_se.json b/src/main/resources/assets/biomesoplenty/lang/sv_se.json new file mode 100644 index 0000000000..4a15b456a0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/sv_se.json @@ -0,0 +1,384 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Utforskarens dröm...", + "advancements.biomesoplenty.evergreen_biomes.title": "När barren tystnar", + "advancements.biomesoplenty.evergreen_biomes.description": "Upptäck alla biomer med barrträd i Biomes O' Plenty", + "advancements.biomesoplenty.swamp_biomes.title": "Träskfeber", + "advancements.biomesoplenty.swamp_biomes.description": "Upptäck alla träskbiomer i Biomes O' Plenty", + "advancements.biomesoplenty.beach_island_biomes.title": "Segla iväg", + "advancements.biomesoplenty.beach_island_biomes.description": "Upptäck alla ö- och sandbiomer i Biomes O' Plenty", + "advancements.biomesoplenty.magic_biomes.title": "Yin och yang", + "advancements.biomesoplenty.magic_biomes.description": "Upptäck båda magibiomer i Biomes O' Plenty", + "advancements.biomesoplenty.wasteland_biome.title": "Ödemark", + "advancements.biomesoplenty.wasteland_biome.description": "Upptäck ödemarksbiomen i Biomes O' Plenty", + "advancements.biomesoplenty.nether_biomes.title": "Nether", + "advancements.biomesoplenty.nether_biomes.description": "Upptäck alla netherbiomer i Biomes O' Plenty", + "advancements.biomesoplenty.all_biomes.title": "Vandrare", + "advancements.biomesoplenty.all_biomes.description": "Upptäck alla biomer i Biomes O' Plenty", + + "generator.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + "item.forge.bucketFilled": "%shink", + + "biome.biomesoplenty.alps": "Alper", + "biome.biomesoplenty.alps_foothills": "Alputlöpare", + "biome.biomesoplenty.bayou": "Vattendrag", + "biome.biomesoplenty.bog": "Kärr", + "biome.biomesoplenty.boreal_forest": "Borealskog", + "biome.biomesoplenty.brushland": "Buskskog", + "biome.biomesoplenty.chaparral": "Macchia", + "biome.biomesoplenty.cherry_blossom_grove": "Körsbärslund", + "biome.biomesoplenty.cold_desert": "Kall öken", + "biome.biomesoplenty.coniferous_forest": "Barrskog", + "biome.biomesoplenty.corrupted_sands": "Korrupt sand", + "biome.biomesoplenty.crag": "Skrovliga klippor", + "biome.biomesoplenty.dead_forest": "Död skog", + "biome.biomesoplenty.dead_plains": "Döda slätter", + "biome.biomesoplenty.dead_swamp": "Dött träsk", + "biome.biomesoplenty.fen": "Sumpmark", + "biome.biomesoplenty.floodplains": "Flodslätt", + "biome.biomesoplenty.flower_meadow": "Blomäng", + "biome.biomesoplenty.frosted_tundra": "Fryst tundra", + "biome.biomesoplenty.fungi_forest": "Svampskog", + "biome.biomesoplenty.grassland": "Gräsmark", + "biome.biomesoplenty.gravel_beach": "Grusstrand", + "biome.biomesoplenty.grove": "Lund", + "biome.biomesoplenty.highland": "Högland", + "biome.biomesoplenty.highland_moor": "Höglandshed", + "biome.biomesoplenty.lake": "Sjö", + "biome.biomesoplenty.lavender_fields": "Lavendelfält", + "biome.biomesoplenty.lush_swamp": "Grönskande träsk", + "biome.biomesoplenty.mangrove": "Mangroveträsk", + "biome.biomesoplenty.maple_woods": "Lönnskog", + "biome.biomesoplenty.marsh": "Myr", + "biome.biomesoplenty.meadow": "Äng", + "biome.biomesoplenty.mire": "Leråker", + "biome.biomesoplenty.mystic_grove": "Mystiska lunden", + "biome.biomesoplenty.oasis": "Oas", + "biome.biomesoplenty.ominous_woods": "Hotfull skog", + "biome.biomesoplenty.orchard": "Trädgård", + "biome.biomesoplenty.origin_beach": "Ursprungsstrand", + "biome.biomesoplenty.origin_island": "Ursprungsö", + "biome.biomesoplenty.outback": "Vildmark", + "biome.biomesoplenty.overgrown_cliffs": "Övervuxna klippor", + "biome.biomesoplenty.pasture": "Betesmark", + "biome.biomesoplenty.phantasmagoric_inferno": "Sagolikt inferno", + "biome.biomesoplenty.prairie": "Prärie", + "biome.biomesoplenty.rainforest": "Regnskog", + "biome.biomesoplenty.redwood_forest": "Mammutträdskog", + "biome.biomesoplenty.redwood_forest_edge": "Utkant av mammutträdskog", + "biome.biomesoplenty.scrubland": "Buskterräng", + "biome.biomesoplenty.seasonal_forest": "Säsongsbetonad skog", + "biome.biomesoplenty.shield": "Stenig skog", + "biome.biomesoplenty.shrubland": "Busklandskap", + "biome.biomesoplenty.snowy_coniferous_forest": "Snöig barrskog", + "biome.biomesoplenty.snowy_forest": "Snöig skog", + "biome.biomesoplenty.steppe": "Stäpp", + "biome.biomesoplenty.temperate_rainforest": "Tempererad regnskog", + "biome.biomesoplenty.tropical_island": "Tropisk ö", + "biome.biomesoplenty.tropical_rainforest": "Tropisk regnskog", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.undergarden": "Underjordisk trädgård", + "biome.biomesoplenty.visceral_heap": "Underjordisk terräng", + "biome.biomesoplenty.volcanic_island": "Vulkanisk ö", + "biome.biomesoplenty.wasteland": "Ödemark", + "biome.biomesoplenty.wetland": "Våtmark", + "biome.biomesoplenty.white_beach": "Vit strand", + "biome.biomesoplenty.woodland": "Skogsland", + "biome.biomesoplenty.xeric_shrubland": "Buskig öken", + + "effect.biomesoplenty.curse": "Förbannelse", + + "item.biomesoplenty.bop_icon": "BOP-ikon", + "item.biomesoplenty.cherry_boat": "Körsbärsträbåt", + "item.biomesoplenty.chunk_of_flesh": "Köttbit", + "item.biomesoplenty.dead_boat": "Död båt", + "item.biomesoplenty.ethereal_boat": "Eterisk träbåt", + "item.biomesoplenty.fir_boat": "Ädelgransbåt", + "item.biomesoplenty.hellbark_boat": "Helvetesbarkbåt", + "item.biomesoplenty.jacaranda_boat": "Jakarandaträbåt", + "item.biomesoplenty.magic_boat": "Magiträbåt", + "item.biomesoplenty.mahogany_boat": "Mahognybåt", + "item.biomesoplenty.mud_brick": "Lertegelsten", + "item.biomesoplenty.mudball": "Lerboll", + "item.biomesoplenty.palm_boat": "Palmträbåt", + "item.biomesoplenty.pile_of_ashes": "Askhög", + "item.biomesoplenty.record_wanderer": "Musikskiva", + "item.biomesoplenty.record_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.redwood_boat": "Mammutträbåt", + "item.biomesoplenty.umbran_boat": "Umbranbåt", + "item.biomesoplenty.willow_boat": "Pilträbåt", + + "block.biomesoplenty.ash_block": "Askblock", + "block.biomesoplenty.barley": "Korn", + "block.biomesoplenty.blue_fire": "Blå eld", + "block.biomesoplenty.blue_hydrangea": "Blå hortensia", + "block.biomesoplenty.bramble": "Björnbärsbuske", + "block.biomesoplenty.burning_blossom": "Eldblomster", + "block.biomesoplenty.bush": "Buske", + "block.biomesoplenty.cattail": "Bredkaveldun", + "block.biomesoplenty.cherry_button": "Körsbärsträknapp", + "block.biomesoplenty.cherry_door": "Körsbärsträdörr", + "block.biomesoplenty.cherry_fence": "Körsbärsträstaket", + "block.biomesoplenty.cherry_fence_gate": "Körsbärsträstaketgrind", + "block.biomesoplenty.cherry_log": "Körsbärsstam", + "block.biomesoplenty.cherry_planks": "Körsbärsträplankor", + "block.biomesoplenty.cherry_pressure_plate": "Körsbärsträtryckplatta", + "block.biomesoplenty.cherry_slab": "Körsbärsträplatta", + "block.biomesoplenty.cherry_stairs": "Körsbärsträtrappa", + "block.biomesoplenty.cherry_trapdoor": "Körsbärsfallucka", + "block.biomesoplenty.cherry_wood": "Körsbärsträ", + "block.biomesoplenty.cherry_wood_slab": "Körsbärsträplatta", + "block.biomesoplenty.chiseled_white_sandstone": "Mejslad vit sandsten", + "block.biomesoplenty.coarse_loamy_dirt": "Grusig lerig jord", + "block.biomesoplenty.coarse_sandy_dirt": "Grusig sandig jord", + "block.biomesoplenty.coarse_silty_dirt": "Grusig siltig jord", + "block.biomesoplenty.cut_white_sandstone": "Skuren vit sandsten", + "block.biomesoplenty.dead_button": "Död träknapp", + "block.biomesoplenty.dead_door": "Död trädörr", + "block.biomesoplenty.dead_fence": "Dött trästaket", + "block.biomesoplenty.dead_fence_gate": "Död staketgrind", + "block.biomesoplenty.dead_grass": "Dött gräs", + "block.biomesoplenty.dead_leaf_pile": "Död lövhög", + "block.biomesoplenty.dead_leaves": "Döda löv", + "block.biomesoplenty.dead_log": "Död trädstam", + "block.biomesoplenty.dead_planks": "Döda träplankor", + "block.biomesoplenty.dead_pressure_plate": "Död tryckplatta", + "block.biomesoplenty.dead_sapling": "Död trädplanta", + "block.biomesoplenty.dead_slab": "Död platta", + "block.biomesoplenty.dead_stairs": "Död trätrappa", + "block.biomesoplenty.dead_trapdoor": "Död träfallucka", + "block.biomesoplenty.dead_wood": "Dött trä", + "block.biomesoplenty.dead_wood_slab": "Död träplatta", + "block.biomesoplenty.deathbloom": "Dödsblomma", + "block.biomesoplenty.desert_grass": "Ökengräs", + "block.biomesoplenty.devilweed": "Demongräs", + "block.biomesoplenty.dried_sand": "Torkad sand", + "block.biomesoplenty.dune_grass": "Dyngräs", + "block.biomesoplenty.ethereal_button": "Eterisk träknapp", + "block.biomesoplenty.ethereal_door": "Eterisk trädörr", + "block.biomesoplenty.ethereal_fence": "Eteriskt trästaket", + "block.biomesoplenty.ethereal_fence_gate": "Eterisk trästaketgrind", + "block.biomesoplenty.ethereal_leaves": "Eteriska trälöv", + "block.biomesoplenty.ethereal_log": "Eterisk trädstam", + "block.biomesoplenty.ethereal_planks": "Eteriska träplankor", + "block.biomesoplenty.ethereal_pressure_plate": "Eterisk tryckplatta", + "block.biomesoplenty.ethereal_sapling": "Eterisk trädplanta", + "block.biomesoplenty.ethereal_slab": "Eterisk platta", + "block.biomesoplenty.ethereal_stairs": "Eterisk trätrappa", + "block.biomesoplenty.ethereal_trapdoor": "Eterisk fallucka", + "block.biomesoplenty.ethereal_wood": "Eteriskt trä", + "block.biomesoplenty.ethereal_wood_slab": "Eterisk träplatta", + "block.biomesoplenty.fir_button": "Ädelgransknapp", + "block.biomesoplenty.fir_door": "Ädelgransdörr", + "block.biomesoplenty.fir_fence": "Ädelgranträstaket", + "block.biomesoplenty.fir_fence_gate": "Ädelgranträstaketgrind", + "block.biomesoplenty.fir_leaves": "Ädelgranslöv", + "block.biomesoplenty.fir_log": "Ädelgransstam", + "block.biomesoplenty.fir_planks": "Ädelgransträplankor", + "block.biomesoplenty.fir_pressure_plate": "Ädelgranstryckplatta", + "block.biomesoplenty.fir_sapling": "Ädelgranplanta", + "block.biomesoplenty.fir_slab": "Ädelgranplatta", + "block.biomesoplenty.fir_stairs": "Ädelgranträtrappa", + "block.biomesoplenty.fir_trapdoor": "Ädelgranfallucka", + "block.biomesoplenty.fir_wood": "Ädelgransträ", + "block.biomesoplenty.fir_wood_slab": "Ädelgranträplatta", + "block.biomesoplenty.flesh": "Kött", + "block.biomesoplenty.flowering_oak_leaves": "Blommiga eklöv", + "block.biomesoplenty.flowering_oak_sapling": "Blommig ekplanta", + "block.biomesoplenty.glowflower": "Glödblomma", + "block.biomesoplenty.glowshroom": "Glödsvamp", + "block.biomesoplenty.goldenrod": "Gullris", + "block.biomesoplenty.hellbark_button": "Helvetesbarkknapp", + "block.biomesoplenty.hellbark_door": "Helvetesbarkdörr", + "block.biomesoplenty.hellbark_fence": "Helvetesbarkstaket", + "block.biomesoplenty.hellbark_fence_gate": "Helvetesbarkstaketgrind", + "block.biomesoplenty.hellbark_leaves": "Helvetesbarklöv", + "block.biomesoplenty.hellbark_log": "Helvetesbarkstam", + "block.biomesoplenty.hellbark_planks": "Helvetesbarkträplankor", + "block.biomesoplenty.hellbark_pressure_plate": "Helvetesbarktryckplatta", + "block.biomesoplenty.hellbark_sapling": "Helvetesbarkplanta", + "block.biomesoplenty.hellbark_slab": "Helvetesbarkplatta", + "block.biomesoplenty.hellbark_stairs": "Helvetesbarktrappa", + "block.biomesoplenty.hellbark_trapdoor": "Helvetesbarkfallucka", + "block.biomesoplenty.hellbark_wood": "Helvetesbarkträ", + "block.biomesoplenty.hellbark_wood_slab": "Helvetesbarkplatta", + "block.biomesoplenty.ivy": "Murgröna", + "block.biomesoplenty.jacaranda_button": "Jakarandaträknapp", + "block.biomesoplenty.jacaranda_door": "Jakarandaträdörr", + "block.biomesoplenty.jacaranda_fence": "Jakarandaträstaket", + "block.biomesoplenty.jacaranda_fence_gate": "Jakarandaträstaketgrind", + "block.biomesoplenty.jacaranda_leaves": "Jakarandaträlöv", + "block.biomesoplenty.jacaranda_log": "Jakarandastam", + "block.biomesoplenty.jacaranda_planks": "Jakarandaträplankor", + "block.biomesoplenty.jacaranda_pressure_plate": "Jakarandaträtryckplatta", + "block.biomesoplenty.jacaranda_sapling": "Jakarandaträdplanta", + "block.biomesoplenty.jacaranda_slab": "Jakarandaplatta", + "block.biomesoplenty.jacaranda_stairs": "Jakarandaträtrappa", + "block.biomesoplenty.jacaranda_trapdoor": "Jakarandaträfallucka", + "block.biomesoplenty.jacaranda_wood": "Jakarandaträ", + "block.biomesoplenty.jacaranda_wood_slab": "Jakarandaträplatta", + "block.biomesoplenty.lavender": "Lavendel", + "block.biomesoplenty.loamy_dirt": "Lerig jord", + "block.biomesoplenty.loamy_farmland": "Lerig åkerjord", + "block.biomesoplenty.loamy_grass_block": "Lerigt gräsblock", + "block.biomesoplenty.loamy_grass_path": "Lerig grässtig", + "block.biomesoplenty.magic_button": "Magiträknapp", + "block.biomesoplenty.magic_door": "Magiträdörr", + "block.biomesoplenty.magic_fence": "Magiträstaket", + "block.biomesoplenty.magic_fence_gate": "Magiträstaketgrind", + "block.biomesoplenty.magic_leaves": "Magiträlöv", + "block.biomesoplenty.magic_log": "Magiträdstam", + "block.biomesoplenty.magic_planks": "Magiträplankor", + "block.biomesoplenty.magic_pressure_plate": "Magiträtryckplatta", + "block.biomesoplenty.magic_sapling": "Magiträdplanta", + "block.biomesoplenty.magic_slab": "Magiplatta", + "block.biomesoplenty.magic_stairs": "Magiträtrappa", + "block.biomesoplenty.magic_trapdoor": "Magiträfallucka", + "block.biomesoplenty.magic_wood": "Magiträ", + "block.biomesoplenty.magic_wood_slab": "Magiträplatta", + "block.biomesoplenty.mahogany_button": "Mahognyträknapp", + "block.biomesoplenty.mahogany_door": "Mahognydörr", + "block.biomesoplenty.mahogany_fence": "Mahognyträstaket", + "block.biomesoplenty.mahogany_fence_gate": "Mahognyträstaketgrind", + "block.biomesoplenty.mahogany_leaves": "Mahognylöv", + "block.biomesoplenty.mahogany_log": "Mahognyträdstam", + "block.biomesoplenty.mahogany_planks": "Mahognyträplankor", + "block.biomesoplenty.mahogany_pressure_plate": "Mahognyträtryckplatta", + "block.biomesoplenty.mahogany_sapling": "Mahognyplanta", + "block.biomesoplenty.mahogany_slab": "Mahognyplatta", + "block.biomesoplenty.mahogany_stairs": "Mahognyträtrappa", + "block.biomesoplenty.mahogany_trapdoor": "Mahognyträfallucka", + "block.biomesoplenty.mahogany_wood": "Mahognyträ", + "block.biomesoplenty.mahogany_wood_slab": "Mahognyträplatta", + "block.biomesoplenty.maple_leaves": "Lönnträlöv", + "block.biomesoplenty.maple_sapling": "Lönnträdplanta", + "block.biomesoplenty.mud": "Lera", + "block.biomesoplenty.mud_brick_block": "Lertegelstenar", + "block.biomesoplenty.mud_brick_slab": "Lertegelstensplatta", + "block.biomesoplenty.mud_brick_stairs": "Lertegelstenstrappa", + "block.biomesoplenty.orange_autumn_leaves": "Orangea höstlöv", + "block.biomesoplenty.orange_autumn_sapling": "Orange höstplanta", + "block.biomesoplenty.orange_cosmos": "Orange rosenskära", + "block.biomesoplenty.origin_grass_block": "Ursprungsgräsblock", + "block.biomesoplenty.origin_leaves": "Ursprungslöv", + "block.biomesoplenty.origin_sapling": "Ursprungsplanta", + "block.biomesoplenty.palm_button": "Palmträknapp", + "block.biomesoplenty.palm_door": "Palmträdörr", + "block.biomesoplenty.palm_fence": "Palmträstaket", + "block.biomesoplenty.palm_fence_gate": "Palmträstaketgrind", + "block.biomesoplenty.palm_leaves": "Palmträlöv", + "block.biomesoplenty.palm_log": "Palmstam", + "block.biomesoplenty.palm_planks": "Palmträplankor", + "block.biomesoplenty.palm_pressure_plate": "Palmträtryckplatta", + "block.biomesoplenty.palm_sapling": "Palmträdplanta", + "block.biomesoplenty.palm_slab": "Palmplatta", + "block.biomesoplenty.palm_stairs": "Palmträtrappa", + "block.biomesoplenty.palm_trapdoor": "Palmträfallucka", + "block.biomesoplenty.palm_wood": "Palmträ", + "block.biomesoplenty.palm_wood_slab": "Palmträplatta", + "block.biomesoplenty.pink_cherry_leaves": "Rosa körsbärsträlöv", + "block.biomesoplenty.pink_cherry_sapling": "Rosa körsbärsträdplanta", + "block.biomesoplenty.pink_daffodil": "Rosa strandlilja", + "block.biomesoplenty.pink_hibiscus": "Rosa hibiskus", + "block.biomesoplenty.redwood_button": "Mammutträknapp", + "block.biomesoplenty.redwood_door": "Mammutträdörr", + "block.biomesoplenty.redwood_fence": "Mammutträstaket", + "block.biomesoplenty.redwood_fence_gate": "Mammutträstaketgrind", + "block.biomesoplenty.redwood_leaves": "Mammutträlöv", + "block.biomesoplenty.redwood_log": "Mammutträdstam", + "block.biomesoplenty.redwood_planks": "Mammutträplankor", + "block.biomesoplenty.redwood_pressure_plate": "Mammutträtryckplatta", + "block.biomesoplenty.redwood_sapling": "Mammutträdplanta", + "block.biomesoplenty.redwood_slab": "Mammutplatta", + "block.biomesoplenty.redwood_stairs": "Mammutträtrappa", + "block.biomesoplenty.redwood_trapdoor": "Mammutträfallucka", + "block.biomesoplenty.redwood_wood": "Mammutträ", + "block.biomesoplenty.redwood_wood_slab": "Mammutträplatta", + "block.biomesoplenty.reed": "Vass", + "block.biomesoplenty.root": "Rot", + "block.biomesoplenty.rose": "Ros", + "block.biomesoplenty.sandy_dirt": "Sandig jord", + "block.biomesoplenty.sandy_farmland": "Sandig åkerjord", + "block.biomesoplenty.sandy_grass_block": "Sandigt gräsblock", + "block.biomesoplenty.sandy_grass_path": "Sandig grässtig", + "block.biomesoplenty.short_grass": "Kort gräs", + "block.biomesoplenty.silty_dirt": "Siltig jord", + "block.biomesoplenty.silty_farmland": "Siltig åkerjord", + "block.biomesoplenty.silty_grass_block": "Siltigt gräsblock", + "block.biomesoplenty.silty_grass_path": "Siltigt grässtig", + "block.biomesoplenty.smooth_white_sandstone": "Len vit sandsten", + "block.biomesoplenty.spectral_fern": "Spektral ormbunke", + "block.biomesoplenty.stripped_cherry_log": "Avbarkad körsbärsstam", + "block.biomesoplenty.stripped_cherry_wood": "Avbarkat körsbärsträ", + "block.biomesoplenty.stripped_dead_log": "Avbarkad död stam", + "block.biomesoplenty.stripped_dead_wood": "Avbarkat dött trä", + "block.biomesoplenty.stripped_ethereal_log": "Avbarkad eterisk stam", + "block.biomesoplenty.stripped_ethereal_wood": "Avbarkat eteriskt trä", + "block.biomesoplenty.stripped_fir_log": "Avbarkad ädelgransstam", + "block.biomesoplenty.stripped_fir_wood": "Avbarkat ädelgransträ", + "block.biomesoplenty.stripped_hellbark_log": "Avbarkad helvetesbarkstam", + "block.biomesoplenty.stripped_hellbark_wood": "Avbarkat helvetesbarkträ", + "block.biomesoplenty.stripped_jacaranda_log": "Avbarkad jakarandastam", + "block.biomesoplenty.stripped_jacaranda_wood": "Avbarkat jakarandaträ", + "block.biomesoplenty.stripped_magic_log": "Avbarkad magistam", + "block.biomesoplenty.stripped_magic_wood": "Avbarkat magiträ", + "block.biomesoplenty.stripped_mahogany_log": "Avbarkad mahognystam", + "block.biomesoplenty.stripped_mahogany_wood": "Avbarkat mahognyträ", + "block.biomesoplenty.stripped_palm_log": "Avbarkad palmstam", + "block.biomesoplenty.stripped_palm_wood": "Avbarkat palmträ", + "block.biomesoplenty.stripped_redwood_log": "Avbarkad mammutstam", + "block.biomesoplenty.stripped_redwood_wood": "Avbarkat mammutträ", + "block.biomesoplenty.stripped_umbran_log": "Avbarkad umbranstam", + "block.biomesoplenty.stripped_umbran_wood": "Avbarkat umbranträ", + "block.biomesoplenty.stripped_willow_log": "Avbarkad pilträdstam", + "block.biomesoplenty.stripped_willow_wood": "Avbarkat pilträ", + "block.biomesoplenty.tall_cattail": "Högt bredkaveldun", + "block.biomesoplenty.thorn": "Törnar", + "block.biomesoplenty.tiny_cactus": "Liten kaktus", + "block.biomesoplenty.toadstool": "Svamp", + "block.biomesoplenty.umbran_button": "Umbranträknapp", + "block.biomesoplenty.umbran_door": "Umbrandörr", + "block.biomesoplenty.umbran_fence": "Umbranträstaket", + "block.biomesoplenty.umbran_fence_gate": "Umbranträstaketgrind", + "block.biomesoplenty.umbran_leaves": "Umbranlöv", + "block.biomesoplenty.umbran_log": "Umbranträ", + "block.biomesoplenty.umbran_planks": "Umbranträplankor", + "block.biomesoplenty.umbran_pressure_plate": "Umbranträtryckplatta", + "block.biomesoplenty.umbran_sapling": "Umbranplanta", + "block.biomesoplenty.umbran_slab": "Umbranplatta", + "block.biomesoplenty.umbran_stairs": "Umbranträtrappa", + "block.biomesoplenty.umbran_trapdoor": "Umbranträfallucka", + "block.biomesoplenty.umbran_wood": "Umbranträ", + "block.biomesoplenty.umbran_wood_slab": "Umbranträplatta", + "block.biomesoplenty.violet": "Viol", + "block.biomesoplenty.watergrass": "Vattengräs", + "block.biomesoplenty.white_cherry_leaves": "Vita körsbärsträlöv", + "block.biomesoplenty.white_cherry_sapling": "Vit körsbärsträdplanta", + "block.biomesoplenty.white_sand": "Vit sand", + "block.biomesoplenty.white_sandstone": "Vit sandsten", + "block.biomesoplenty.white_sandstone_slab": "Vit sandstensplatta", + "block.biomesoplenty.white_sandstone_stairs": "Vit sandstenstrappa", + "block.biomesoplenty.wildflower": "Vildblomma", + "block.biomesoplenty.willow_button": "Pilträknapp", + "block.biomesoplenty.willow_door": "Pilträdörr", + "block.biomesoplenty.willow_fence": "Pilträstaket", + "block.biomesoplenty.willow_fence_gate": "Pilträstaketgrind", + "block.biomesoplenty.willow_leaves": "Pilträlöv", + "block.biomesoplenty.willow_log": "Pilträ", + "block.biomesoplenty.willow_planks": "Pilträplankor", + "block.biomesoplenty.willow_pressure_plate": "Pilträtryckplatta", + "block.biomesoplenty.willow_sapling": "Pilträdplanta", + "block.biomesoplenty.willow_slab": "Pilträplatta", + "block.biomesoplenty.willow_stairs": "Pilträtrappa", + "block.biomesoplenty.willow_trapdoor": "Pilträfallucka", + "block.biomesoplenty.willow_vine": "Pilträklätterväxt", + "block.biomesoplenty.willow_wood": "Pilträ", + "block.biomesoplenty.willow_wood_slab": "Pilträplatta", + "block.biomesoplenty.wilted_lily": "Vissnad lilja", + "block.biomesoplenty.yellow_autumn_leaves": "Gula höstlöv", + "block.biomesoplenty.yellow_autumn_sapling": "Gul höstplanta", + + "entity.biomesoplenty.mudball": "Lerboll", + "entity.biomesoplenty.bop_boat": "Båt" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/uk_ua.json b/src/main/resources/assets/biomesoplenty/lang/uk_ua.json new file mode 100644 index 0000000000..d126104a71 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/uk_ua.json @@ -0,0 +1,416 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Досліджуйте світ навколо себе!", + "advancements.biomesoplenty.all_biomes.title": "Мандрівник", + "advancements.biomesoplenty.all_biomes.description": "Знайдіть усі біоми Biomes O' Plenty", + + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Альпи", + "biome.biomesoplenty.alps_foothills": "Передгір'я альп", + "biome.biomesoplenty.bamboo_blossom_grove": "Квітучий бамбуковий гай", + "biome.biomesoplenty.bayou": "Баю", + "biome.biomesoplenty.bayou_mangrove": "Баю в мангових зарослях", + "biome.biomesoplenty.burnt_forest": "Згорілий ліс", + "biome.biomesoplenty.cherry_blossom_grove": "Квітучий вишневий гай", + "biome.biomesoplenty.cold_desert": "Холодна пустеля", + "biome.biomesoplenty.coniferous_forest": "Хвойний ліс", + "biome.biomesoplenty.coniferous_lakes": "Озера хвойного лісу", + "biome.biomesoplenty.crystalline_chasm": "Кристалічна прірва", + "biome.biomesoplenty.dead_forest": "Мертвий ліс", + "biome.biomesoplenty.dead_swamp": "Мертве болото", + "biome.biomesoplenty.deep_bayou": "Мертве баю", + "biome.biomesoplenty.dryland": "Сухі землі", + "biome.biomesoplenty.dry_boneyard": "Сухий кістковий двір", + "biome.biomesoplenty.fir_clearing": "Піхтова поляна", + "biome.biomesoplenty.flower_meadow": "Квітковий луг", + "biome.biomesoplenty.fungal_field": "Грибне поле", + "biome.biomesoplenty.fungal_jungle": "Грибні джунглі", + "biome.biomesoplenty.golden_prairie": "Золота прерія", + "biome.biomesoplenty.gravel_beach": "Гравійний пляж", + "biome.biomesoplenty.grove": "Гай", + "biome.biomesoplenty.grove_clearing": "Очищений гай", + "biome.biomesoplenty.grove_lakes": "Озерний гай", + "biome.biomesoplenty.highland": "Нагір'я", + "biome.biomesoplenty.highland_crag": "Нагірна скеля", + "biome.biomesoplenty.highland_moor": "Вологе нагір'я", + "biome.biomesoplenty.jade_cliffs": "Нефритові скелі", + "biome.biomesoplenty.jade_grassland": "Нефритовий луг", + "biome.biomesoplenty.lavender_field": "Лавандове поле", + "biome.biomesoplenty.lavender_forest": "Лавандовий ліс", + "biome.biomesoplenty.lush_desert": "Пишна пустеля", + "biome.biomesoplenty.lush_savanna": "Пишна савана", + "biome.biomesoplenty.meadow": "Луг", + "biome.biomesoplenty.meadow_forest": "Луговий ліс", + "biome.biomesoplenty.mystic_grove": "Містичний гай", + "biome.biomesoplenty.mystic_plains": "Містичні рівнини", + "biome.biomesoplenty.ominous_mire": "Зловіще болото", + "biome.biomesoplenty.ominous_woods": "Зловіщий ліс", + "biome.biomesoplenty.orchard": "Фруктовий сад", + "biome.biomesoplenty.origin_valley": "Долина зародження", + "biome.biomesoplenty.overgrown_fungal_jungle": "Зарослі грибні джунглі", + "biome.biomesoplenty.prairie": "Прерія", + "biome.biomesoplenty.rainbow_hills": "Райдужні пагорби", + "biome.biomesoplenty.rainforest": "Дощовий ліс", + "biome.biomesoplenty.rainforest_cliffs": "Скелі дощового лісу", + "biome.biomesoplenty.rainforest_floodplain": "Заплава дощового лісу", + "biome.biomesoplenty.redwood_forest": "Червоний ліс", + "biome.biomesoplenty.redwood_forest_edge": "Околиця червоного лісу", + "biome.biomesoplenty.redwood_hills": "Гори червоного лісу", + "biome.biomesoplenty.scrubland": "Малий чагарниковий степ", + "biome.biomesoplenty.seasonal_forest": "Сезонний ліс", + "biome.biomesoplenty.seasonal_orchard": "Сезонний фруктовий сад", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Сезонне гарбузове поле", + "biome.biomesoplenty.shrubland": "Великий чагарниковий степ", + "biome.biomesoplenty.shrubland_hills": "Гори великого чагарникового степу", + "biome.biomesoplenty.silkglade": "Шовкова поляна", + "biome.biomesoplenty.silkglade_nest": "Гніздо шовковиці", + "biome.biomesoplenty.snowy_coniferous_forest": "Засніжений хвойний ліс", + "biome.biomesoplenty.snowy_fir_clearing": "Засніжена піхтова поляна", + "biome.biomesoplenty.snowy_maple_forest": "Засніжений кленовий ліс", + "biome.biomesoplenty.tropic_beach": "Тропічний пляж", + "biome.biomesoplenty.tropic_plains": "Тропічні рівнини", + "biome.biomesoplenty.tropics": "Тропіки", + "biome.biomesoplenty.tundra": "Тундра", + "biome.biomesoplenty.tundra_basin": "Тундровий басейн", + "biome.biomesoplenty.tundra_bog": "Тундрове болото", + "biome.biomesoplenty.undergrowth": "Підлісок", + "biome.biomesoplenty.visceral_heap": "Вісцеральна купа", + "biome.biomesoplenty.volcanic_plains": "Вулканічні рівнини", + "biome.biomesoplenty.volcano": "Вулкан", + "biome.biomesoplenty.wasteland": "Пустка", + "biome.biomesoplenty.wetland": "Заболочена місцевість", + "biome.biomesoplenty.wetland_marsh": "Болото в заболоченій місцевості", + "biome.biomesoplenty.withered_abyss": "Всохла прірва", + "biome.biomesoplenty.wooded_scrubland": "Лісистий малий чагарниковий степ", + "biome.biomesoplenty.wooded_wasteland": "Лісиста прірва", + + "item.biomesoplenty.bop_icon": "BOP Icon", + "item.biomesoplenty.cherry_boat": "Вишневий човен", + "item.biomesoplenty.dead_boat": "Мертвий човен", + "item.biomesoplenty.fir_boat": "Піхтовий човен", + "item.biomesoplenty.hellbark_boat": "Човен із пекельної кори", + "item.biomesoplenty.jacaranda_boat": "Жакарандовий човен", + "item.biomesoplenty.magic_boat": "Човен із магічного дерева", + "item.biomesoplenty.mahogany_boat": "Махагонієвий човен", + "item.biomesoplenty.mud_ball": "Грудка багна", + "item.biomesoplenty.mud_brick": "Цеглина із багна", + "item.biomesoplenty.music_disc_wanderer": "Пластинка", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Пальмовий човен", + "item.biomesoplenty.redwood_boat": "Човен із червоного дерева", + "item.biomesoplenty.umbran_boat": "Зловіщий човен", + "item.biomesoplenty.willow_boat": "Вербовий човен", + + "block.biomesoplenty.barley": "Ячмінь", + "block.biomesoplenty.black_sand": "Чорний пісок", + "block.biomesoplenty.black_sandstone": "Чорний піщаник", + "block.biomesoplenty.black_sandstone_slab": "Плита із чорного пісковику", + "block.biomesoplenty.black_sandstone_stairs": "Сходи із чорного пісковику", + "block.biomesoplenty.black_sandstone_wall": "Стінка із чорного пісковику", + "block.biomesoplenty.blue_hydrangea": "Голуба гортензія", + "block.biomesoplenty.bramble": "Шиповий корінь", + "block.biomesoplenty.burning_blossom": "Вогнецвіт", + "block.biomesoplenty.bush": "Кущ", + "block.biomesoplenty.cattail": "Рогоза", + "block.biomesoplenty.cherry_button": "Вишнева кнопка", + "block.biomesoplenty.cherry_door": "Вишневі двері", + "block.biomesoplenty.cherry_fence": "Вишневий паркан", + "block.biomesoplenty.cherry_fence_gate": "Вишнева хвіртка", + "block.biomesoplenty.cherry_log": "Вишнева колода", + "block.biomesoplenty.cherry_planks": "Вишневі дошки", + "block.biomesoplenty.cherry_pressure_plate": "Вишнева натисна плита", + "block.biomesoplenty.cherry_sign": "Вишнева табличка", + "block.biomesoplenty.cherry_slab": "Вишнева плита", + "block.biomesoplenty.cherry_stairs": "Вишневі сходи", + "block.biomesoplenty.cherry_trapdoor": "Вишневий люк", + "block.biomesoplenty.cherry_wall_sign": "Вишнева настінна табличка", + "block.biomesoplenty.cherry_wood": "Вишня", + "block.biomesoplenty.chiseled_black_sandstone": "Чорний різьблений піщаник", + "block.biomesoplenty.cut_black_sandstone": "Чорний пилений пісковик", + "block.biomesoplenty.cut_black_sandstone_slab": "Чорна плита із пиленого пісковику", + "block.biomesoplenty.chiseled_orange_sandstone": "Помаранчевий різьблений пісковик", + "block.biomesoplenty.cut_orange_sandstone": "Помаранчевий пилений пісковик", + "block.biomesoplenty.cut_orange_sandstone_slab": "Помаранчева плита із пиленого пісковику", + "block.biomesoplenty.chiseled_white_sandstone": "Білосніжний різьблений пісковик", + "block.biomesoplenty.cut_white_sandstone": "Білосніжний пилений пісковик", + "block.biomesoplenty.cut_white_sandstone_slab": "Білосніжна плита із пиленого пісковику", + "block.biomesoplenty.dead_branch": "Мертва гілка", + "block.biomesoplenty.dead_button": "Мертва кнопка", + "block.biomesoplenty.dead_door": "Мертві двері", + "block.biomesoplenty.dead_fence": "Мертвий паркан", + "block.biomesoplenty.dead_fence_gate": "Мертва хвіртка", + "block.biomesoplenty.dead_grass": "Мертва трава", + "block.biomesoplenty.dead_leaves": "Мертве листя", + "block.biomesoplenty.dead_log": "Мертва колода", + "block.biomesoplenty.dead_planks": "Мертві дошки", + "block.biomesoplenty.dead_pressure_plate": "Мертва натикна плита", + "block.biomesoplenty.dead_sapling": "Саджанець мертвого дерева", + "block.biomesoplenty.dead_sign": "Мертва табличка", + "block.biomesoplenty.dead_slab": "Мертва плита", + "block.biomesoplenty.dead_stairs": "Мертві сходи", + "block.biomesoplenty.dead_trapdoor": "Мертвий люк", + "block.biomesoplenty.dead_wall_sign": "Мертва настінна табличка", + "block.biomesoplenty.dead_wood": "Мертве дерево", + "block.biomesoplenty.desert_grass": "Пустельна трава", + "block.biomesoplenty.dried_salt": "Суха сіль", + "block.biomesoplenty.dune_grass": "Дюнна трава", + "block.biomesoplenty.fir_button": "Піхтова кнопка", + "block.biomesoplenty.fir_door": "Піхтові двері", + "block.biomesoplenty.fir_fence": "Піхтовий паркан", + "block.biomesoplenty.fir_fence_gate": "Піхтова хвіртка", + "block.biomesoplenty.fir_leaves": "Пітове листя", + "block.biomesoplenty.fir_log": "Піхтова колода", + "block.biomesoplenty.fir_planks": "Піхтові дошки", + "block.biomesoplenty.fir_pressure_plate": "Піхтова натисна плита", + "block.biomesoplenty.fir_sapling": "Саджанець піхтового дерева", + "block.biomesoplenty.fir_sign": "Піхтова табличка", + "block.biomesoplenty.fir_slab": "Піхтова плита", + "block.biomesoplenty.fir_stairs": "Піхтові сходи", + "block.biomesoplenty.fir_trapdoor": "Піхтовий люк", + "block.biomesoplenty.fir_wall_sign": "Піхтова настінна табличка", + "block.biomesoplenty.fir_wood": "Піхтове дерево", + "block.biomesoplenty.flesh": "Плоть", + "block.biomesoplenty.flowering_oak_leaves": "Листя квітучого дуба", + "block.biomesoplenty.flowering_oak_sapling": "Саджанець квітучого дуба", + "block.biomesoplenty.glowflower": "Світоцвіт", + "block.biomesoplenty.glowshroom": "Світогриб", + "block.biomesoplenty.glowshroom_block": "Блок світогриба", + "block.biomesoplenty.goldenrod": "Золотарник", + "block.biomesoplenty.hellbark_button": "Кнопка із пекельної кори", + "block.biomesoplenty.hellbark_door": "Двері із пекельної кори", + "block.biomesoplenty.hellbark_fence": "Паркан із пекельної кори", + "block.biomesoplenty.hellbark_fence_gate": "Хвіртка із пекельної кори", + "block.biomesoplenty.hellbark_leaves": "Пекельне листя", + "block.biomesoplenty.hellbark_log": "Пекельна колода", + "block.biomesoplenty.hellbark_planks": "Дошки із пекельної кори", + "block.biomesoplenty.hellbark_pressure_plate": "Натисна плита із пекельної кори", + "block.biomesoplenty.hellbark_sapling": "Саджанець із пекельного дерева", + "block.biomesoplenty.hellbark_sign": "Табличка із пекельної кори", + "block.biomesoplenty.hellbark_slab": "Плита із пекельної кори", + "block.biomesoplenty.hellbark_stairs": "Сходи із пекельної кори", + "block.biomesoplenty.hellbark_trapdoor": "Люк із пекельної кори", + "block.biomesoplenty.hellbark_wall_sign": "Настінна табличка із пекельної кори", + "block.biomesoplenty.hellbark_wood": "Пекельне дерево", + "block.biomesoplenty.jacaranda_button": "Жакарандова кнопка", + "block.biomesoplenty.jacaranda_door": "Жакарандові двері", + "block.biomesoplenty.jacaranda_fence": "Жакарандовий паркан", + "block.biomesoplenty.jacaranda_fence_gate": "Жакарандова хвіртка", + "block.biomesoplenty.jacaranda_leaves": "Жакарандове листя", + "block.biomesoplenty.jacaranda_log": "Жакарандова колода", + "block.biomesoplenty.jacaranda_planks": "Жакарандові дошки", + "block.biomesoplenty.jacaranda_pressure_plate": "Жакарандова натисна плита", + "block.biomesoplenty.jacaranda_sapling": "Саджанець жакарандового дерева", + "block.biomesoplenty.jacaranda_sign": "Жакарандова табличка", + "block.biomesoplenty.jacaranda_slab": "Жакарандова плита", + "block.biomesoplenty.jacaranda_stairs": "Жакарандові сходи", + "block.biomesoplenty.jacaranda_trapdoor": "Жакарандовий люк", + "block.biomesoplenty.jacaranda_wall_sign": "Жакарандова настінна табличка", + "block.biomesoplenty.jacaranda_wood": "Жакаранда", + "block.biomesoplenty.lavender": "Лаванда", + "block.biomesoplenty.magic_button": "Магічна кнопка", + "block.biomesoplenty.magic_door": "Магічні двері", + "block.biomesoplenty.magic_fence": "Магічний паркан", + "block.biomesoplenty.magic_fence_gate": "Магічна хвіртка", + "block.biomesoplenty.magic_leaves": "Магічне листя", + "block.biomesoplenty.magic_log": "Магічна колода", + "block.biomesoplenty.magic_planks": "Магічні дошки", + "block.biomesoplenty.magic_pressure_plate": "Магічна натисна плита", + "block.biomesoplenty.magic_sapling": "Саджанець магічного дерева", + "block.biomesoplenty.magic_sign": "Магічна табличка", + "block.biomesoplenty.magic_slab": "Магічна плита", + "block.biomesoplenty.magic_stairs": "Магічні сходи", + "block.biomesoplenty.magic_trapdoor": "Магічний люк", + "block.biomesoplenty.magic_wall_sign": "Магічна настінна табличка", + "block.biomesoplenty.magic_wood": "Магічне дерево", + "block.biomesoplenty.mahogany_button": "Махагонієва кнопка", + "block.biomesoplenty.mahogany_door": "Махагонієві двері", + "block.biomesoplenty.mahogany_fence": "Махагонієвий паркан", + "block.biomesoplenty.mahogany_fence_gate": "Махагонієва хвіртка", + "block.biomesoplenty.mahogany_leaves": "Листя махагонії", + "block.biomesoplenty.mahogany_log": "Махагонієва колода", + "block.biomesoplenty.mahogany_planks": "Махагонієві дошки", + "block.biomesoplenty.mahogany_pressure_plate": "Махагонієва натисна плита", + "block.biomesoplenty.mahogany_sapling": "Саджанець махагонії", + "block.biomesoplenty.mahogany_sign": "Махагонієва табличка", + "block.biomesoplenty.mahogany_slab": "Махагонієва плита", + "block.biomesoplenty.mahogany_stairs": "Махагонієві сходи", + "block.biomesoplenty.mahogany_trapdoor": "Махагонієвий люк", + "block.biomesoplenty.mahogany_wall_sign": "Махагонієва настінна табличка", + "block.biomesoplenty.mahogany_wood": "Махагонія", + "block.biomesoplenty.mangrove_root": "Мангровий корінь", + "block.biomesoplenty.maple_leaves": "Кленове листя", + "block.biomesoplenty.maple_sapling": "Саджанець клену", + "block.biomesoplenty.mud": "Багно", + "block.biomesoplenty.mud_brick_slab": "Цегляна плита із багна", + "block.biomesoplenty.mud_brick_stairs": "Цегляні сходи із багна", + "block.biomesoplenty.mud_brick_wall": "Цегляна стінка із багна", + "block.biomesoplenty.mud_bricks": "Цегла із багна", + "block.biomesoplenty.nether_crystal": "Незерський кристал", + "block.biomesoplenty.nether_crystal_block": "Незерський кристалевий блок", + "block.biomesoplenty.orange_autumn_leaves": "Помаранчеве осіннє листя", + "block.biomesoplenty.orange_autumn_sapling": "Саджанець осіннього темного дуба", + "block.biomesoplenty.orange_cosmos": "Помаранчева космея", + "block.biomesoplenty.orange_sand": "Помаранчевий пісок", + "block.biomesoplenty.orange_sandstone": "Помаранчевий пісковик", + "block.biomesoplenty.orange_sandstone_slab": "Помаранчева плита із пісковику", + "block.biomesoplenty.orange_sandstone_stairs": "Помаранчеві сходи із пісковику", + "block.biomesoplenty.orange_sandstone_wall": "Помаранчева стінка із пісковику", + "block.biomesoplenty.origin_grass_block": "Блок трави зародження", + "block.biomesoplenty.origin_leaves": "Листя зародження", + "block.biomesoplenty.origin_sapling": "Саджанець зародження", + "block.biomesoplenty.palm_button": "Пальмова кнопка", + "block.biomesoplenty.palm_door": "Пальмові двері", + "block.biomesoplenty.palm_fence": "Пальмовий паркан", + "block.biomesoplenty.palm_fence_gate": "Пальмова хвіртка", + "block.biomesoplenty.palm_leaves": "Пальмове листя", + "block.biomesoplenty.palm_log": "Пальмова колода", + "block.biomesoplenty.palm_planks": "Пальмові дошки", + "block.biomesoplenty.palm_pressure_plate": "Пальмова натисна плита", + "block.biomesoplenty.palm_sapling": "Саджанець пальми", + "block.biomesoplenty.palm_sign": "Пальмова табличка", + "block.biomesoplenty.palm_slab": "Пальмова плита", + "block.biomesoplenty.palm_stairs": "Пальмові сходи", + "block.biomesoplenty.palm_trapdoor": "Пальмовий люк", + "block.biomesoplenty.palm_wall_sign": "Пальмова настінна табличка", + "block.biomesoplenty.palm_wood": "Пальма", + "block.biomesoplenty.pink_cherry_leaves": "Листя рожевої вишні", + "block.biomesoplenty.pink_cherry_sapling": "Саджанець рожевої вишні", + "block.biomesoplenty.pink_daffodil": "Рожевий нарцис", + "block.biomesoplenty.pink_hibiscus": "Рожевий гібіскус", + "block.biomesoplenty.potted_burning_blossom": "Вогнецвіт у горшку", + "block.biomesoplenty.potted_dead_sapling": "Мертвий саджанець в горшку", + "block.biomesoplenty.potted_fir_sapling": "Піхтовий саджанець в горшку", + "block.biomesoplenty.potted_flowering_oak_sapling": "Саджанець квітучого дуба в горшку", + "block.biomesoplenty.potted_glowflower": "Світоцвіт в горшку", + "block.biomesoplenty.potted_glowshroom": "Світогриб в горшку", + "block.biomesoplenty.potted_hellbark_sapling": "Пекельний саджанець в горшку", + "block.biomesoplenty.potted_jacaranda_sapling": "Саджанець жакаранди в горшку", + "block.biomesoplenty.potted_lavender": "Лаванда в горшку", + "block.biomesoplenty.potted_magic_sapling": "Магічний саджанець в горшку", + "block.biomesoplenty.potted_mahogany_sapling": "Махагонієвий саджанець в горшку", + "block.biomesoplenty.potted_maple_sapling": "Кленовий саджанець в горшку", + "block.biomesoplenty.potted_orange_autumn_sapling": "Саджанець осіннього темного дуба в горшку", + "block.biomesoplenty.potted_orange_cosmos": "Помаранчева космея в горшку", + "block.biomesoplenty.potted_origin_sapling": "Саджанець зарождення в горшку", + "block.biomesoplenty.potted_palm_sapling": "Пальмовий саджанець в горшку", + "block.biomesoplenty.potted_pink_cherry_sapling": "Саджанець рожевої вишні в горшку", + "block.biomesoplenty.potted_pink_daffodil": "Рожевий нарцис в горшку", + "block.biomesoplenty.potted_pink_hibiscus": "Рожевий гібіскус в горшку", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Саджанець райдужної берези в горшку", + "block.biomesoplenty.potted_redwood_sapling": "Саджанець червоного дерева в горшку", + "block.biomesoplenty.potted_rose": "Троянда в горшку", + "block.biomesoplenty.potted_sprout": "Відросток в горшку", + "block.biomesoplenty.potted_toadstool": "Поганка в горшку", + "block.biomesoplenty.potted_umbran_sapling": "Зловіщий саджанець в горшку", + "block.biomesoplenty.potted_violet": "Фіалка в горшку", + "block.biomesoplenty.potted_white_cherry_sapling": "Саджанець білої вишні в горшку", + "block.biomesoplenty.potted_wildflower": "Польова квітка в горшку", + "block.biomesoplenty.potted_willow_sapling": "Саджанець верби в горшку", + "block.biomesoplenty.potted_wilted_lily": "Зів'яла лілія в горшку", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Саджанець осінньої берези в горшку", + "block.biomesoplenty.rainbow_birch_leaves": "Листя райдужної берези", + "block.biomesoplenty.rainbow_birch_sapling": "Саджанець райдужної берези", + "block.biomesoplenty.redwood_button": "Кнопка із червоного дерева", + "block.biomesoplenty.redwood_door": "Двері із червоного дерева", + "block.biomesoplenty.redwood_fence": "Паркан із червоного дерева", + "block.biomesoplenty.redwood_fence_gate": "Хвіртка із червоного дерева", + "block.biomesoplenty.redwood_leaves": "Листя червоного дерева", + "block.biomesoplenty.redwood_log": "Колода червоного дерева", + "block.biomesoplenty.redwood_planks": "Дошки із червоного дерева", + "block.biomesoplenty.redwood_pressure_plate": "Натисна плита із червоного дерева", + "block.biomesoplenty.redwood_sapling": "Саджанець червоного дерева", + "block.biomesoplenty.redwood_sign": "Табличка із червоного дерева", + "block.biomesoplenty.redwood_slab": "Плита із червоного дерева", + "block.biomesoplenty.redwood_stairs": "Сходи із червоного дерева", + "block.biomesoplenty.redwood_trapdoor": "Люк із червоного дерева", + "block.biomesoplenty.redwood_wall_sign": "Настінна табличка із червоного дерева", + "block.biomesoplenty.redwood_wood": "Червоне дерево", + "block.biomesoplenty.reed": "Комиш", + "block.biomesoplenty.rose": "Троянда", + "block.biomesoplenty.smooth_black_sandstone": "Чорний гладкий пісковик", + "block.biomesoplenty.smooth_black_sandstone_slab": "Чорна плита із гладкого пісковику", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Чорні сходи із гладкого пісковику", + "block.biomesoplenty.smooth_orange_sandstone": "Помаранчевий гладкий пісковик", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Помаранчева плита із гладкого пісковику", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Помаранчеві сходи із гладкого пісковику", + "block.biomesoplenty.smooth_white_sandstone": "Білосніжний гладкий пісковик", + "block.biomesoplenty.smooth_white_sandstone_slab": "Білосніжна плита із гладкого пісковику", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Білосніжні сходи із гладкого пісковику", + "block.biomesoplenty.sprout": "Відросток", + "block.biomesoplenty.stripped_cherry_log": "Обтесана вишнева колода", + "block.biomesoplenty.stripped_cherry_wood": "Обтесана вишнева деревина", + "block.biomesoplenty.stripped_dead_log": "Обтесана мертва колода", + "block.biomesoplenty.stripped_dead_wood": "Обтесана мертва деревина", + "block.biomesoplenty.stripped_fir_log": "Обтесана піхтова колода", + "block.biomesoplenty.stripped_fir_wood": "Обтесана піхтова деревина", + "block.biomesoplenty.stripped_hellbark_log": "Обтесана пекельна колода", + "block.biomesoplenty.stripped_hellbark_wood": "Обтесана пекельна деревина", + "block.biomesoplenty.stripped_jacaranda_log": "Обтесана жакарандова колода", + "block.biomesoplenty.stripped_jacaranda_wood": "Обтесана жакарандова деревина", + "block.biomesoplenty.stripped_magic_log": "Обтесана магічна колода", + "block.biomesoplenty.stripped_magic_wood": "Обтесана магічна деревина", + "block.biomesoplenty.stripped_mahogany_log": "Обтесана махагонієва колода", + "block.biomesoplenty.stripped_mahogany_wood": "Обтесана махагонієва деревина", + "block.biomesoplenty.stripped_palm_log": "Обтесана пальмова колода", + "block.biomesoplenty.stripped_palm_wood": "Обтесана пальмова деревина", + "block.biomesoplenty.stripped_redwood_log": "Обтесана колода червоного дерева", + "block.biomesoplenty.stripped_redwood_wood": "Обтесана деревина червоного дерева", + "block.biomesoplenty.stripped_umbran_log": "Обтесана зловіща колода", + "block.biomesoplenty.stripped_umbran_wood": "Обтесана зловіща деревина", + "block.biomesoplenty.stripped_willow_log": "Обтесана вербова колода", + "block.biomesoplenty.stripped_willow_wood": "Обтесана вербова деревина", + "block.biomesoplenty.toadstool": "Поганка", + "block.biomesoplenty.toadstool_block": "Блок поганки", + "block.biomesoplenty.umbran_button": "Зловіща кнопка", + "block.biomesoplenty.umbran_door": "Зловіщі двері", + "block.biomesoplenty.umbran_fence": "Зловіщий паркан", + "block.biomesoplenty.umbran_fence_gate": "Зловіща хвіртка", + "block.biomesoplenty.umbran_leaves": "Зловіще листя", + "block.biomesoplenty.umbran_log": "Зловіще колода", + "block.biomesoplenty.umbran_planks": "Зловіщі дошки", + "block.biomesoplenty.umbran_pressure_plate": "Зловіща натисна плита", + "block.biomesoplenty.umbran_sapling": "Саджанець зловіщого дерева", + "block.biomesoplenty.umbran_sign": "Зловіща табличка", + "block.biomesoplenty.umbran_slab": "Зловіща плита", + "block.biomesoplenty.umbran_stairs": "Зловіщі сходи", + "block.biomesoplenty.umbran_trapdoor": "Зловіщий люк", + "block.biomesoplenty.umbran_wall_sign": "Зловіща настінна табличка", + "block.biomesoplenty.umbran_wood": "Зловіще дерево", + "block.biomesoplenty.violet": "Фіалка", + "block.biomesoplenty.watergrass": "Водна трава", + "block.biomesoplenty.white_cherry_leaves": "Листя білої вишні", + "block.biomesoplenty.white_cherry_sapling": "Саджанець білої вишні", + "block.biomesoplenty.white_sand": "Білосніжний песок", + "block.biomesoplenty.white_sandstone": "Білосніжний пісковик", + "block.biomesoplenty.white_sandstone_slab": "Плита із білосніжного пісковику", + "block.biomesoplenty.white_sandstone_stairs": "Сходи із білосніжного пісковику", + "block.biomesoplenty.white_sandstone_wall": "Стінка із білосніжного пісковику", + "block.biomesoplenty.wildflower": "Польова квітка", + "block.biomesoplenty.willow_button": "Вербова кнопка", + "block.biomesoplenty.willow_door": "Вербові двері", + "block.biomesoplenty.willow_fence": "Вербовий паркан", + "block.biomesoplenty.willow_fence_gate": "Вербова хвіртка", + "block.biomesoplenty.willow_leaves": "Вербове листя", + "block.biomesoplenty.willow_log": "Вербова колода", + "block.biomesoplenty.willow_planks": "Вербові дошки", + "block.biomesoplenty.willow_pressure_plate": "Вербова натисна плита", + "block.biomesoplenty.willow_sapling": "Саджанець верби", + "block.biomesoplenty.willow_sign": "Вербова табличка", + "block.biomesoplenty.willow_slab": "Вербова плита", + "block.biomesoplenty.willow_stairs": "Вербові сходи", + "block.biomesoplenty.willow_trapdoor": "Вербовий люк", + "block.biomesoplenty.willow_vine": "Вербові ліани", + "block.biomesoplenty.willow_wall_sign": "Вербова настінна табличка", + "block.biomesoplenty.willow_wood": "Верба", + "block.biomesoplenty.wilted_lily": "Зів'яла лілія", + "block.biomesoplenty.yellow_autumn_leaves": "Жовте осіннє листя", + "block.biomesoplenty.yellow_autumn_sapling": "Саджанець осінньої берези", + + "argument.biomesoplenty.biome.invalid": "ННеправильний аргумент для біому", + "commands.biomesoplenty.tpbiome.success": "%s телепортовано в біом %s у точку (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "Біом %s не знайдено!", + + "entity.biomesoplenty.boat_bop": "Барка" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/zh_cn.json b/src/main/resources/assets/biomesoplenty/lang/zh_cn.json new file mode 100644 index 0000000000..4719c24f07 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/zh_cn.json @@ -0,0 +1,449 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "每个探险家的梦想...", + "advancements.biomesoplenty.all_biomes.title": "环球旅行", + "advancements.biomesoplenty.all_biomes.description": "探索完 BOP 的每一个群系", + "generator.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + "biome.biomesoplenty.alps": "阿尔卑斯山", + "biome.biomesoplenty.alps_foothills": "阿尔卑斯山麓", + "biome.biomesoplenty.ashen_inferno": "灰烬地狱", + "biome.biomesoplenty.bayou": "海湾", + "block.biomesoplenty.black_sand": "黑沙", + "block.biomesoplenty.black_sandstone": "黑砂岩", + "block.biomesoplenty.black_sandstone_slab": "黑砂岩台阶", + "block.biomesoplenty.black_sandstone_stairs": "黑砂岩楼梯", + "block.biomesoplenty.black_sandstone_wall": "黑砂岩墙", + "biome.biomesoplenty.bog": "沼泽", + "biome.biomesoplenty.boreal_forest": "北方森林", + "biome.biomesoplenty.brushland": "丛林地", + "biome.biomesoplenty.chaparral": "灌木丛林", + "biome.biomesoplenty.cherry_blossom_grove": "樱树林", + "biome.biomesoplenty.cold_desert": "冻原", + "biome.biomesoplenty.coniferous_forest": "针叶林", + "biome.biomesoplenty.dead_forest": "垂死树森林", + "biome.biomesoplenty.fir_clearing": "杉木林", + "biome.biomesoplenty.floodplain": "泛滥平原", + "biome.biomesoplenty.flower_meadow": "花草地", + "biome.biomesoplenty.fungal_jungle": "真菌丛林", + "biome.biomesoplenty.ghost_forest": "闹鬼森林", + "biome.biomesoplenty.grassland": "草原", + "biome.biomesoplenty.gravel_beach": "砾滩", + "biome.biomesoplenty.grove": "树林", + "biome.biomesoplenty.highland": "高地", + "biome.biomesoplenty.highland_moor": "高地沼泽", + "biome.biomesoplenty.lavender_field": "薰衣草田", + "biome.biomesoplenty.lush_grassland": "葱郁草地", + "biome.biomesoplenty.lush_swamp": "葱郁沼泽", + "biome.biomesoplenty.mangrove": "红树林", + "biome.biomesoplenty.maple_woods": "枫树林", + "biome.biomesoplenty.marsh": "湿地", + "biome.biomesoplenty.meadow": "草地", + "biome.biomesoplenty.mire": "泥潭", + "biome.biomesoplenty.mystic_grove": "神秘树林", + "biome.biomesoplenty.oasis": "绿洲", + "biome.biomesoplenty.ominous_woods": "不祥树林", + "biome.biomesoplenty.orchard": "果林", + "biome.biomesoplenty.origin_beach": "起源海滩", + "biome.biomesoplenty.origin_hills": "起源丘陵", + "biome.biomesoplenty.outback": "内陆", + "biome.biomesoplenty.overgrown_cliffs": "杂草丛生的悬崖", + "biome.biomesoplenty.pasture": "牧场", + "biome.biomesoplenty.poppy_field": "罂粟花田", + "biome.biomesoplenty.prairie": "草原", + "biome.biomesoplenty.pumpkin_patch": "南瓜园", + "biome.biomesoplenty.rainbow_valley": "彩虹谷", + "biome.biomesoplenty.rainforest": "雨林", + "biome.biomesoplenty.redwood_forest": "红木森林", + "biome.biomesoplenty.redwood_forest_edge": "红木森林边缘", + "biome.biomesoplenty.scrubland": "灌木丛林地", + "biome.biomesoplenty.seasonal_forest": "季节性森林", + "biome.biomesoplenty.shield": "Shield", + "biome.biomesoplenty.shrubland": "灌木地", + "biome.biomesoplenty.silkglade": "丝地", + "biome.biomesoplenty.snowy_coniferous_forest": "白雪皑皑的针叶林", + "biome.biomesoplenty.snowy_fir_clearing": "白雪皑皑的杉木林", + "biome.biomesoplenty.snowy_forest": "雪皑森林", + "biome.biomesoplenty.steppe": "干草原", + "biome.biomesoplenty.temperate_rainforest": "温带雨林", + "biome.biomesoplenty.temperate_rainforest_hills": "热带雨林丘陵", + "biome.biomesoplenty.tropical_rainforest": "热带雨林", + "biome.biomesoplenty.tropics": "热带地区", + "biome.biomesoplenty.tundra": "冰原", + "biome.biomesoplenty.undergarden": "地下花园", + "biome.biomesoplenty.visceral_heap": "内脏堆", + "biome.biomesoplenty.volcano": "火山", + "biome.biomesoplenty.volcano_edge": "火山边缘", + "biome.biomesoplenty.wasteland": "荒地", + "biome.biomesoplenty.wetland": "湿地", + "biome.biomesoplenty.white_beach": "白色沙滩", + "biome.biomesoplenty.woodland": "林地", + "biome.biomesoplenty.xeric_shrubland": "干旱的灌木地", + "item.biomesoplenty.bop_icon": "BOP图标", + "item.biomesoplenty.cherry_boat": "樱木船", + "item.biomesoplenty.dead_boat": "垂死木木船", + "item.biomesoplenty.fir_boat": "杉木船", + "item.biomesoplenty.hellbark_boat": "地狱皮木船", + "item.biomesoplenty.jacaranda_boat": "蓝花楹木船", + "item.biomesoplenty.magic_boat": "魔法木船", + "item.biomesoplenty.mahogany_boat": "桃花心木船", + "item.biomesoplenty.mud_brick": "泥砖", + "item.biomesoplenty.mud_ball": "泥球", + "item.biomesoplenty.music_disc_wanderer": "音乐唱片", + "item.biomesoplenty.palm_boat": "棕榈木船", + "item.biomesoplenty.redwood_boat": "红木船", + "item.biomesoplenty.umbran_boat": "暗影木船", + "item.biomesoplenty.willow_boat": "柳木船", + "block.biomesoplenty.ash_block": "灰烬块", + "block.biomesoplenty.blue_hydrangea": "蓝绣球花", + "block.biomesoplenty.bramble": "荆棘", + "block.biomesoplenty.burning_blossom": "火焰花", + "block.biomesoplenty.bush": "灌木丛", + "block.biomesoplenty.cattail": "香蒲", + "block.biomesoplenty.cherry_button": "樱木按钮", + "block.biomesoplenty.cherry_door": "樱木门", + "block.biomesoplenty.cherry_fence": "樱木栅栏", + "block.biomesoplenty.cherry_fence_gate": "樱木栅栏门", + "block.biomesoplenty.cherry_log": "樱木原木", + "block.biomesoplenty.cherry_planks": "樱木木板", + "block.biomesoplenty.cherry_pressure_plate": "樱木压力板", + "block.biomesoplenty.cherry_sign": "樱木告示牌", + "block.biomesoplenty.cherry_slab": "樱木台阶", + "block.biomesoplenty.cherry_stairs": "樱木楼梯", + "block.biomesoplenty.cherry_trapdoor": "樱木活板门", + "block.biomesoplenty.cherry_wall_sign": "樱木墙壁告示牌", + "block.biomesoplenty.cherry_wood": "樱木", + "block.biomesoplenty.chiseled_white_sandstone": "錾制白砂岩", + "block.biomesoplenty.cut_white_sandstone": "切制白砂岩", + "block.biomesoplenty.cut_white_sandstone_slab": "切制白砂岩台阶", + "block.biomesoplenty.dead_branch": "垂死木树枝", + "block.biomesoplenty.dead_button": "垂死木按钮", + "block.biomesoplenty.dead_door": "垂死木门", + "block.biomesoplenty.dead_fence": "垂死木栅栏", + "block.biomesoplenty.dead_fence_gate": "垂死木栅栏门", + "block.biomesoplenty.dead_grass": "垂死木草", + "block.biomesoplenty.dead_leaves": "垂死树树叶", + "block.biomesoplenty.dead_log": "垂死木原木", + "block.biomesoplenty.dead_planks": "垂死木木板", + "block.biomesoplenty.dead_pressure_plate": "垂死木压力板", + "block.biomesoplenty.dead_sapling": "垂死树树苗", + "block.biomesoplenty.dead_sign": "垂死木告示牌", + "block.biomesoplenty.dead_slab": "垂死木台阶", + "block.biomesoplenty.dead_stairs": "垂死木楼梯", + "block.biomesoplenty.dead_trapdoor": "垂死木活板门", + "block.biomesoplenty.dead_wall_sign": "垂死木墙壁告示牌", + "block.biomesoplenty.dead_wood": "垂死木", + "block.biomesoplenty.desert_grass": "沙漠草", + "block.biomesoplenty.dried_salt": "干盐", + "block.biomesoplenty.dune_grass": "沙丘草", + "block.biomesoplenty.fir_button": "杉木按钮", + "block.biomesoplenty.fir_door": "杉木门", + "block.biomesoplenty.fir_fence": "杉木栅栏", + "block.biomesoplenty.fir_fence_gate": "杉木栅栏门", + "block.biomesoplenty.fir_leaves": "杉树树叶", + "block.biomesoplenty.fir_log": "杉木原木", + "block.biomesoplenty.fir_planks": "杉木板", + "block.biomesoplenty.fir_pressure_plate": "杉木压力板", + "block.biomesoplenty.fir_sapling": "杉木树苗", + "block.biomesoplenty.fir_sign": "杉木告示牌", + "block.biomesoplenty.fir_slab": "杉木台阶", + "block.biomesoplenty.fir_stairs": "杉木楼梯", + "block.biomesoplenty.fir_trapdoor": "杉木活板门", + "block.biomesoplenty.fir_wall_sign": "杉木墙壁告示牌", + "block.biomesoplenty.fir_wood": "杉木", + "block.biomesoplenty.flesh": "肉块", + "block.biomesoplenty.flowering_oak_leaves": "花橡树叶", + "block.biomesoplenty.flowering_oak_sapling": "花橡树苗", + "block.biomesoplenty.glowflower": "夜光花", + "block.biomesoplenty.glowshroom": "夜光菇", + "block.biomesoplenty.glowshroom_block": "夜光菇方块", + "block.biomesoplenty.goldenrod": "秋麒麟草", + "block.biomesoplenty.hellbark_button": "地狱皮木按钮", + "block.biomesoplenty.hellbark_door": "地狱皮木门", + "block.biomesoplenty.hellbark_fence": "地狱皮木栅栏", + "block.biomesoplenty.hellbark_fence_gate": "地狱皮木栅栏门", + "block.biomesoplenty.hellbark_leaves": "地狱皮树树叶", + "block.biomesoplenty.hellbark_log": "地狱皮木原木", + "block.biomesoplenty.hellbark_planks": "地狱皮木板", + "block.biomesoplenty.hellbark_pressure_plate": "地狱皮木压力板", + "block.biomesoplenty.hellbark_sapling": "地狱皮树树苗", + "block.biomesoplenty.hellbark_sign": "地狱皮木告示牌", + "block.biomesoplenty.hellbark_slab": "地狱皮木台阶", + "block.biomesoplenty.hellbark_stairs": "地狱皮木楼梯", + "block.biomesoplenty.hellbark_trapdoor": "地狱皮木活板门", + "block.biomesoplenty.hellbark_wall_sign": "地狱皮木墙壁告示牌", + "block.biomesoplenty.hellbark_wood": "地狱皮木", + "block.biomesoplenty.jacaranda_button": "蓝花楹木按钮", + "block.biomesoplenty.jacaranda_door": "蓝花楹木门", + "block.biomesoplenty.jacaranda_fence": "蓝花楹木栅栏", + "block.biomesoplenty.jacaranda_fence_gate": "蓝花楹木栅栏门", + "block.biomesoplenty.jacaranda_leaves": "蓝花楹树花朵", + "block.biomesoplenty.jacaranda_log": "蓝花楹木原木", + "block.biomesoplenty.jacaranda_planks": "蓝花楹木板", + "block.biomesoplenty.jacaranda_pressure_plate": "蓝花楹木压力板", + "block.biomesoplenty.jacaranda_sapling": "蓝花楹树树苗", + "block.biomesoplenty.jacaranda_sign": "蓝花楹木告示牌", + "block.biomesoplenty.jacaranda_slab": "蓝花楹木台阶", + "block.biomesoplenty.jacaranda_stairs": "蓝花楹木楼梯", + "block.biomesoplenty.jacaranda_trapdoor": "蓝花楹木活板门", + "block.biomesoplenty.jacaranda_wall_sign": "蓝花楹木墙壁告示牌", + "block.biomesoplenty.jacaranda_wood": "蓝花楹木", + "block.biomesoplenty.lavender": "熏衣草", + "block.biomesoplenty.magic_button": "魔法木按钮", + "block.biomesoplenty.magic_door": "魔法木门", + "block.biomesoplenty.magic_fence": "魔法木栅栏", + "block.biomesoplenty.magic_fence_gate": "魔法木栅栏门", + "block.biomesoplenty.magic_leaves": "魔法树树叶", + "block.biomesoplenty.magic_log": "魔法木原木", + "block.biomesoplenty.magic_planks": "魔法木板", + "block.biomesoplenty.magic_pressure_plate": "魔法木压力板", + "block.biomesoplenty.magic_sapling": "魔法树树苗", + "block.biomesoplenty.magic_sign": "魔法木告示牌", + "block.biomesoplenty.magic_slab": "魔法木台阶", + "block.biomesoplenty.magic_stairs": "魔法木楼梯", + "block.biomesoplenty.magic_trapdoor": "魔法木活板门", + "block.biomesoplenty.magic_wall_sign": "魔法木墙壁告示牌", + "block.biomesoplenty.magic_wood": "魔法木", + "block.biomesoplenty.mahogany_button": "桃花心木按钮", + "block.biomesoplenty.mahogany_door": "桃花心木门", + "block.biomesoplenty.mahogany_fence": "桃花心木栅栏", + "block.biomesoplenty.mahogany_fence_gate": "桃花心木栅栏门", + "block.biomesoplenty.mahogany_leaves": "桃花心树树叶", + "block.biomesoplenty.mahogany_log": "桃花心木原木", + "block.biomesoplenty.mahogany_planks": "桃花心木板", + "block.biomesoplenty.mahogany_pressure_plate": "桃花心木压力板", + "block.biomesoplenty.mahogany_sapling": "桃花心树树苗", + "block.biomesoplenty.mahogany_sign": "桃花心木告示牌", + "block.biomesoplenty.mahogany_slab": "桃花心木台阶", + "block.biomesoplenty.mahogany_stairs": "桃花心木楼梯", + "block.biomesoplenty.mahogany_trapdoor": "桃花心木活板门", + "block.biomesoplenty.mahogany_wall_sign": "桃花心木墙壁告示牌", + "block.biomesoplenty.mahogany_wood": "桃花心木", + "block.biomesoplenty.mangrove_root": "红树根", + "block.biomesoplenty.maple_leaves": "枫树树叶", + "block.biomesoplenty.maple_sapling": "枫树树苗", + "block.biomesoplenty.mud": "泥巴", + "block.biomesoplenty.mud_brick_slab": "泥砖台阶", + "block.biomesoplenty.mud_brick_stairs": "泥砖楼梯", + "block.biomesoplenty.mud_brick_wall": "泥砖墙", + "block.biomesoplenty.mud_bricks": "泥砖", + "block.biomesoplenty.nether_crystal": "下界水晶", + "block.biomesoplenty.nether_crystal_block": "下界水晶块", + "block.biomesoplenty.orange_autumn_leaves": "橙秋树树叶", + "block.biomesoplenty.orange_autumn_sapling": "橙秋树树苗", + "block.biomesoplenty.orange_cosmos": "橙色波斯菊", + "block.biomesoplenty.origin_leaves": "原始树树叶", + "block.biomesoplenty.origin_sapling": "原始树树苗", + "block.biomesoplenty.palm_button": "棕榈木按钮", + "block.biomesoplenty.palm_door": "棕榈木门", + "block.biomesoplenty.palm_fence": "棕榈木栅栏", + "block.biomesoplenty.palm_fence_gate": "棕榈木栅栏门", + "block.biomesoplenty.palm_leaves": "棕榈树树叶", + "block.biomesoplenty.palm_log": "棕榈木原木", + "block.biomesoplenty.palm_planks": "棕榈木板", + "block.biomesoplenty.palm_pressure_plate": "棕榈木压力板", + "block.biomesoplenty.palm_sapling": "棕榈树树苗", + "block.biomesoplenty.palm_sign": "棕榈木告示牌", + "block.biomesoplenty.palm_slab": "棕榈木台阶", + "block.biomesoplenty.palm_stairs": "棕榈木楼梯", + "block.biomesoplenty.palm_trapdoor": "棕榈木活板门", + "block.biomesoplenty.palm_wall_sign": "棕榈木墙壁告示牌", + "block.biomesoplenty.palm_wood": "棕榈木", + "block.biomesoplenty.pink_cherry_leaves": "粉色樱树树叶", + "block.biomesoplenty.pink_cherry_sapling": "粉色樱树树苗", + "block.biomesoplenty.pink_daffodil": "粉水仙", + "block.biomesoplenty.pink_hibiscus": "粉木槿", + "block.biomesoplenty.potted_burning_blossom": "火焰花盆栽", + "block.biomesoplenty.potted_dead_sapling": "垂死树苗盆栽", + "block.biomesoplenty.potted_fir_sapling": "杉木树苗盆栽", + "block.biomesoplenty.potted_flowering_oak_sapling": "花橡树苗盆栽", + "block.biomesoplenty.potted_glowflower": "夜光花盆栽", + "block.biomesoplenty.potted_glowshroom": "夜光菇盆栽", + "block.biomesoplenty.potted_hellbark_sapling": "地狱皮树苗盆栽", + "block.biomesoplenty.potted_jacaranda_sapling": "蓝花楹树苗盆栽", + "block.biomesoplenty.potted_lavender": "薰衣草盆栽", + "block.biomesoplenty.potted_magic_sapling": "魔法树苗盆栽", + "block.biomesoplenty.potted_mahogany_sapling": "桃花心树苗盆栽", + "block.biomesoplenty.potted_maple_sapling": "枫树苗盆栽", + "block.biomesoplenty.potted_orange_autumn_sapling": "橙秋树苗盆栽", + "block.biomesoplenty.potted_orange_cosmos": "橙色波斯菊盆栽", + "block.biomesoplenty.potted_origin_sapling": "原始树苗盆栽", + "block.biomesoplenty.potted_palm_sapling": "棕榈树苗盆栽", + "block.biomesoplenty.potted_pink_cherry_sapling": "粉色樱树树苗盆栽", + "block.biomesoplenty.potted_pink_daffodil": "粉水仙盆栽", + "block.biomesoplenty.potted_pink_hibiscus": "粉木槿盆栽", + "block.biomesoplenty.potted_rainbow_birch_sapling": "彩虹白桦树苗盆栽", + "block.biomesoplenty.potted_redwood_sapling": "红木树苗盆栽", + "block.biomesoplenty.potted_rose": "玫瑰盆栽", + "block.biomesoplenty.potted_sprout": "盆栽萌芽", + "block.biomesoplenty.potted_toadstool": "伞菌盆栽", + "block.biomesoplenty.potted_umbran_sapling": "暗影树苗盆栽", + "block.biomesoplenty.potted_violet": "紫罗兰盆栽", + "block.biomesoplenty.potted_white_cherry_sapling": "白色樱树树苗盆栽", + "block.biomesoplenty.potted_wildflower": "野花盆栽", + "block.biomesoplenty.potted_willow_sapling": "柳树苗盆栽", + "block.biomesoplenty.potted_wilted_lily": "枯萎百合盆栽", + "block.biomesoplenty.potted_yellow_autumn_sapling": "黄秋树苗盆栽", + "block.biomesoplenty.rainbow_birch_leaves": "彩虹白桦树叶", + "block.biomesoplenty.rainbow_birch_sapling": "彩虹白桦树苗", + "block.biomesoplenty.redwood_button": "红木按钮", + "block.biomesoplenty.redwood_door": "红木门", + "block.biomesoplenty.redwood_fence": "红木栅栏", + "block.biomesoplenty.redwood_fence_gate": "红木栅栏门", + "block.biomesoplenty.redwood_leaves": "红木树叶", + "block.biomesoplenty.redwood_log": "红木原木", + "block.biomesoplenty.redwood_planks": "红木木板", + "block.biomesoplenty.redwood_pressure_plate": "红木压力板", + "block.biomesoplenty.redwood_sapling": "红木树苗", + "block.biomesoplenty.redwood_sign": "红木告示牌", + "block.biomesoplenty.redwood_slab": "红木台阶", + "block.biomesoplenty.redwood_stairs": "红木楼梯", + "block.biomesoplenty.redwood_trapdoor": "红木活板门", + "block.biomesoplenty.redwood_wall_sign": "红木墙壁告示牌", + "block.biomesoplenty.redwood_wood": "红木", + "block.biomesoplenty.reed": "芦苇", + "block.biomesoplenty.root": "生根", + "block.biomesoplenty.rose": "玫瑰", + "block.biomesoplenty.smooth_white_sandstone": "平滑白砂岩", + "block.biomesoplenty.smooth_white_sandstone_slab": "平滑白砂岩台阶", + "block.biomesoplenty.smooth_white_sandstone_stairs": "平滑白砂岩楼梯", + "block.biomesoplenty.sprout": "萌芽", + "block.biomesoplenty.stripped_cherry_log": "去皮樱木原木", + "block.biomesoplenty.stripped_cherry_wood": "去皮樱木", + "block.biomesoplenty.stripped_dead_log": "去皮垂死木原木", + "block.biomesoplenty.stripped_dead_wood": "去皮垂死木", + "block.biomesoplenty.stripped_fir_log": "去皮杉木原木", + "block.biomesoplenty.stripped_fir_wood": "去皮杉木", + "block.biomesoplenty.stripped_hellbark_log": "去皮地狱皮木原木", + "block.biomesoplenty.stripped_hellbark_wood": "去皮地狱皮木", + "block.biomesoplenty.stripped_jacaranda_log": "去皮蓝花楹木原木", + "block.biomesoplenty.stripped_jacaranda_wood": "去皮蓝花楹木", + "block.biomesoplenty.stripped_magic_log": "去皮魔法木原木", + "block.biomesoplenty.stripped_magic_wood": "去皮魔法木", + "block.biomesoplenty.stripped_mahogany_log": "去皮桃花心木原木", + "block.biomesoplenty.stripped_mahogany_wood": "去皮桃花心木", + "block.biomesoplenty.stripped_palm_log": "去皮棕榈木原木", + "block.biomesoplenty.stripped_palm_wood": "去皮棕榈木", + "block.biomesoplenty.stripped_redwood_log": "去皮红木原木", + "block.biomesoplenty.stripped_redwood_wood": "去皮红木", + "block.biomesoplenty.stripped_umbran_log": "去皮暗影木原木", + "block.biomesoplenty.stripped_umbran_wood": "去皮暗影木", + "block.biomesoplenty.stripped_willow_log": "去皮柳木原木", + "block.biomesoplenty.stripped_willow_wood": "去皮柳木", + "block.biomesoplenty.tall_cattail": "高香蒲", + "block.biomesoplenty.tall_wheat": "高挑小麦", + "block.biomesoplenty.toadstool": "伞菌", + "block.biomesoplenty.toadstool_block": "伞菌方块", + "block.biomesoplenty.umbran_button": "暗影木按钮", + "block.biomesoplenty.umbran_door": "暗影木门", + "block.biomesoplenty.umbran_fence": "暗影木栅栏", + "block.biomesoplenty.umbran_fence_gate": "暗影木栅栏门", + "block.biomesoplenty.umbran_leaves": "暗影树树叶", + "block.biomesoplenty.umbran_log": "暗影木原木", + "block.biomesoplenty.umbran_planks": "暗影木木板", + "block.biomesoplenty.umbran_pressure_plate": "暗影木压力板", + "block.biomesoplenty.umbran_sapling": "暗影树树苗", + "block.biomesoplenty.umbran_sign": "暗影木告示牌", + "block.biomesoplenty.umbran_slab": "暗影木台阶", + "block.biomesoplenty.umbran_stairs": "暗影木楼梯", + "block.biomesoplenty.umbran_trapdoor": "暗影木活板门", + "block.biomesoplenty.umbran_wall_sign": "暗影木墙壁告示牌", + "block.biomesoplenty.umbran_wood": "暗影木", + "block.biomesoplenty.violet": "紫罗兰", + "block.biomesoplenty.watergrass": "水草", + "block.biomesoplenty.white_cherry_leaves": "白色樱树树叶", + "block.biomesoplenty.white_cherry_sapling": "白色樱树树苗", + "block.biomesoplenty.white_sand": "白沙", + "block.biomesoplenty.white_sandstone": "白砂岩", + "block.biomesoplenty.white_sandstone_slab": "白砂岩台阶", + "block.biomesoplenty.white_sandstone_stairs": "白砂岩楼梯", + "block.biomesoplenty.white_sandstone_wall": "白砂岩墙", + "block.biomesoplenty.wildflower": "野花", + "block.biomesoplenty.willow_button": "柳木按钮", + "block.biomesoplenty.willow_door": "柳木门", + "block.biomesoplenty.willow_fence": "柳木栅栏", + "block.biomesoplenty.willow_fence_gate": "柳木栅栏门", + "block.biomesoplenty.willow_leaves": "柳树树叶", + "block.biomesoplenty.willow_log": "柳木原木", + "block.biomesoplenty.willow_planks": "柳木木板", + "block.biomesoplenty.willow_pressure_plate": "柳木压力板", + "block.biomesoplenty.willow_sapling": "柳树树苗", + "block.biomesoplenty.willow_sign": "柳木告示牌", + "block.biomesoplenty.willow_slab": "柳木台阶", + "block.biomesoplenty.willow_stairs": "柳木楼梯", + "block.biomesoplenty.willow_trapdoor": "柳木活板门", + "block.biomesoplenty.willow_vine": "柳树藤", + "block.biomesoplenty.willow_wall_sign": "柳木墙壁告示牌", + "block.biomesoplenty.willow_wood": "柳木", + "block.biomesoplenty.wilted_lily": "枯萎的百合", + "block.biomesoplenty.yellow_autumn_leaves": "黄秋树树叶", + "block.biomesoplenty.yellow_autumn_sapling": "黄秋树树苗", + "argument.biomesoplenty.biome.invalid": "无效的生物群系参数", + "commands.biomesoplenty.tpbiome.success": "玩家 %s 已被传送到 %s 生物群系,坐标 (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "未找到 %s 生物群系!", + "entity.biomesoplenty.boat_bop": "船", + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "biome.biomesoplenty.bamboo_blossom_grove": "竹花林", + "biome.biomesoplenty.bayou_mangrove": "河口红树林", + "biome.biomesoplenty.burnt_forest": "烧毁的森林", + "biome.biomesoplenty.coniferous_lakes": "针叶林湖泊", + "biome.biomesoplenty.crystalline_chasm": "结晶裂隙", + "biome.biomesoplenty.dead_swamp": "死亡沼泽", + "biome.biomesoplenty.deep_bayou": "深河口", + "biome.biomesoplenty.dryland": "旱地", + "biome.biomesoplenty.dry_boneyard": "干骨场", + "biome.biomesoplenty.fungal_field": "真菌地", + "biome.biomesoplenty.golden_prairie": "金色大草原", + "biome.biomesoplenty.grove_clearing": "林中空地", + "biome.biomesoplenty.grove_lakes": "林中湖泊", + "biome.biomesoplenty.highland_crag": "高地岩", + "biome.biomesoplenty.jade_cliffs": "玉石悬崖", + "biome.biomesoplenty.jade_grassland": "玉石草原", + "biome.biomesoplenty.lavender_forest": "薰衣草林", + "biome.biomesoplenty.lush_desert": "茂密的沙漠", + "biome.biomesoplenty.lush_savanna": "茂密的热带草原", + "biome.biomesoplenty.meadow_forest": "草甸林", + "biome.biomesoplenty.mystic_plains": "神秘平原", + "biome.biomesoplenty.ominous_mire": "不祥的泥沼", + "biome.biomesoplenty.origin_valley": "起源谷", + "biome.biomesoplenty.overgrown_fungal_jungle": "茂盛的真菌丛林", + "biome.biomesoplenty.rainbow_hills": "彩虹山", + "biome.biomesoplenty.rainforest_cliffs": "雨林悬崖", + "biome.biomesoplenty.rainforest_floodplain": "雨林漫滩", + "biome.biomesoplenty.redwood_hills": "红木山", + "biome.biomesoplenty.seasonal_orchard": "时令果园", + "biome.biomesoplenty.seasonal_pumpkin_patch": "时令南瓜地", + "biome.biomesoplenty.shrubland_hills": "灌木丘陵", + "biome.biomesoplenty.silkglade_nest": "丝绸巢穴", + "biome.biomesoplenty.snowy_maple_forest": "雪枫林", + "biome.biomesoplenty.tropic_beach": "热带海滩", + "biome.biomesoplenty.tropic_plains": "热带平原", + "biome.biomesoplenty.tundra_basin": "冻原盆地", + "biome.biomesoplenty.tundra_bog": "冻原沼泽", + "biome.biomesoplenty.undergrowth": "灌木丛", + "biome.biomesoplenty.volcanic_plains": "火山平原", + "biome.biomesoplenty.wetland_marsh": "湿地沼泽", + "biome.biomesoplenty.withered_abyss": "枯萎的深渊", + "biome.biomesoplenty.wooded_scrubland": "灌木丛", + "biome.biomesoplenty.wooded_wasteland": "荒地", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "block.biomesoplenty.barley": "大麦", + "block.biomesoplenty.chiseled_black_sandstone": "凿过的黑色砂岩", + "block.biomesoplenty.cut_black_sandstone": "切割的黑色砂岩", + "block.biomesoplenty.cut_black_sandstone_slab": "切割的黑色砂岩台阶", + "block.biomesoplenty.chiseled_orange_sandstone": "凿过的橙色砂岩", + "block.biomesoplenty.cut_orange_sandstone": "切割的橙色砂岩", + "block.biomesoplenty.cut_orange_sandstone_slab": "切割的橙色砂岩台阶", + "block.biomesoplenty.orange_sand": "橙色沙子", + "block.biomesoplenty.orange_sandstone": "橙色砂岩", + "block.biomesoplenty.orange_sandstone_slab": "橙色砂岩台阶", + "block.biomesoplenty.orange_sandstone_stairs": "橙色砂岩楼梯", + "block.biomesoplenty.orange_sandstone_wall": "橙色砂岩墙", + "block.biomesoplenty.origin_grass_block": "原点草块", + "block.biomesoplenty.smooth_black_sandstone": "光滑的黑色砂岩", + "block.biomesoplenty.smooth_black_sandstone_slab": "光滑的黑色砂岩台阶", + "block.biomesoplenty.smooth_black_sandstone_stairs": "光滑的黑色砂岩楼梯", + "block.biomesoplenty.smooth_orange_sandstone": "光滑的橙色砂岩", + "block.biomesoplenty.smooth_orange_sandstone_slab": "光滑的橙色砂岩台阶", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "光滑的橙色砂岩楼梯" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/zh_tw.json b/src/main/resources/assets/biomesoplenty/lang/zh_tw.json new file mode 100644 index 0000000000..a49ad41f03 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/zh_tw.json @@ -0,0 +1,381 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "探索全世界", + "advancements.biomesoplenty.all_biomes.title": "浪人", + "advancements.biomesoplenty.all_biomes.description": "發現每一個 Biomes O' Plenty 的生態域", + + "generator.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "阿爾卑斯山", + "biome.biomesoplenty.alps_foothills": "阿爾卑斯山麓", + "biome.biomesoplenty.ashen_inferno": "灰暗地獄", + "biome.biomesoplenty.bayou": "河口", + "biome.biomesoplenty.bog": "沼澤", + "biome.biomesoplenty.boreal_forest": "北方森林", + "biome.biomesoplenty.brushland": "叢林地", + "biome.biomesoplenty.chaparral": "灌木叢林", + "biome.biomesoplenty.cherry_blossom_grove": "櫻花林", + "biome.biomesoplenty.cold_desert": "凍原", + "biome.biomesoplenty.coniferous_forest": "針葉林", + "biome.biomesoplenty.dead_forest": "垂死森林", + "biome.biomesoplenty.fir_clearing": "Fir Clearing", + "biome.biomesoplenty.floodplain": "氾濫平原", + "biome.biomesoplenty.flower_meadow": "Flower Meadow", + "biome.biomesoplenty.fungi_forest": "Fungi Forest", + "biome.biomesoplenty.glowstone_grotto": "Glowstone Grotto", + "biome.biomesoplenty.grassland": "Grassland", + "biome.biomesoplenty.gravel_beach": "Gravel Beach", + "biome.biomesoplenty.grove": "Grove", + "biome.biomesoplenty.highland": "高地", + "biome.biomesoplenty.highland_moor": "Highland Moor", + "biome.biomesoplenty.lavender_field": "薰衣草田", + "biome.biomesoplenty.lush_grassland": "Lush Grassland", + "biome.biomesoplenty.lush_swamp": "Lush Swamp", + "biome.biomesoplenty.mangrove": "Mangrove", + "biome.biomesoplenty.maple_woods": "Maple Woods", + "biome.biomesoplenty.marsh": "Marsh", + "biome.biomesoplenty.meadow": "Meadow", + "biome.biomesoplenty.mire": "Mire", + "biome.biomesoplenty.mystic_grove": "Mystic Grove", + "biome.biomesoplenty.oasis": "Oasis", + "biome.biomesoplenty.ominous_woods": "Ominous Woods", + "biome.biomesoplenty.orchard": "Orchard", + "biome.biomesoplenty.origin_beach": "起源海灘", + "biome.biomesoplenty.origin_hills": "起源丘陵", + "biome.biomesoplenty.outback": "內陸", + "biome.biomesoplenty.overgrown_cliffs": "雜草叢生的懸崖", + "biome.biomesoplenty.pasture": "牧場", + "biome.biomesoplenty.poppy_field": "Poppy Field", + "biome.biomesoplenty.prairie": "Prairie", + "biome.biomesoplenty.pumpkin_patch": "Pumpkin Patch", + "biome.biomesoplenty.rainbow_valley": "虹谷", + "biome.biomesoplenty.rainforest": "雨林", + "biome.biomesoplenty.redwood_forest": "紅木林", + "biome.biomesoplenty.redwood_forest_edge": "Redwood Forest Edge", + "biome.biomesoplenty.scrubland": "Scrubland", + "biome.biomesoplenty.seasonal_forest": "Seasonal Forest", + "biome.biomesoplenty.shield": "Shield", + "biome.biomesoplenty.shrubland": "灌木地", + "biome.biomesoplenty.silkglade": "Silkglade", + "biome.biomesoplenty.snowy_coniferous_forest": "白雪皚皚的針葉林", + "biome.biomesoplenty.snowy_fir_clearing": "Snowy Fir Clearing", + "biome.biomesoplenty.snowy_forest": "Snowy Forest", + "biome.biomesoplenty.steppe": "乾草原", + "biome.biomesoplenty.temperate_rainforest": "溫帶雨林", + "biome.biomesoplenty.temperate_rainforest_hills": "Temperate Rainforest Hills", + "biome.biomesoplenty.tropical_rainforest": "熱帶雨林", + "biome.biomesoplenty.tropics": "熱帶地區", + "biome.biomesoplenty.tundra": "冰原", + "biome.biomesoplenty.undergarden": "地下花園", + "biome.biomesoplenty.visceral_heap": "Visceral Heap", + "biome.biomesoplenty.volcano": "火山", + "biome.biomesoplenty.volcano_edge": "火山邊緣", + "biome.biomesoplenty.wasteland": "荒地", + "biome.biomesoplenty.wetland": "濕地", + "biome.biomesoplenty.white_beach": "白色沙灘", + "biome.biomesoplenty.woodland": "林地", + "biome.biomesoplenty.xeric_shrubland": "乾旱的灌木地", + + "item.biomesoplenty.bop_icon": "BOP 圖示", + "item.biomesoplenty.cherry_boat": "櫻花木船", + "item.biomesoplenty.dead_boat": "垂死木船", + "item.biomesoplenty.fir_boat": "冷杉木船", + "item.biomesoplenty.hellbark_boat": "地獄皮木船", + "item.biomesoplenty.jacaranda_boat": "藍花楹木船", + "item.biomesoplenty.magic_boat": "魔法木船", + "item.biomesoplenty.mahogany_boat": "桃花心木船", + "item.biomesoplenty.mud_brick": "泥磚", + "item.biomesoplenty.mud_ball": "泥球", + "item.biomesoplenty.music_disc_wanderer": "音樂唱片", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "棕櫚木船", + "item.biomesoplenty.redwood_boat": "紅木船", + "item.biomesoplenty.umbran_boat": "暗影木船", + "item.biomesoplenty.willow_boat": "柳木船", + + "block.biomesoplenty.ash_block": "灰燼塊", + "block.biomesoplenty.barley": "大麥", + "block.biomesoplenty.blue_hydrangea": "藍色繡球花", + "block.biomesoplenty.bramble": "荊棘", + "block.biomesoplenty.burning_blossom": "火焰花", + "block.biomesoplenty.bush": "灌木叢", + "block.biomesoplenty.cattail": "香蒲", + "block.biomesoplenty.cherry_button": "櫻花木按鈕", + "block.biomesoplenty.cherry_door": "櫻花木門", + "block.biomesoplenty.cherry_fence": "櫻花木柵欄", + "block.biomesoplenty.cherry_fence_gate": "櫻花木柵欄門", + "block.biomesoplenty.cherry_log": "櫻花木原木", + "block.biomesoplenty.cherry_planks": "櫻花木木材", + "block.biomesoplenty.cherry_pressure_plate": "櫻花木壓力板", + "block.biomesoplenty.cherry_sign": "櫻花木告示牌", + "block.biomesoplenty.cherry_slab": "櫻花木半磚", + "block.biomesoplenty.cherry_stairs": "櫻花木階梯", + "block.biomesoplenty.cherry_trapdoor": "櫻花木地板門", + "block.biomesoplenty.cherry_wall_sign": "櫻花木牆壁告示牌", + "block.biomesoplenty.cherry_wood": "櫻花木塊", + "block.biomesoplenty.chiseled_white_sandstone": "浮雕白砂岩", + "block.biomesoplenty.cut_white_sandstone": "鑿製白砂岩", + "block.biomesoplenty.cut_white_sandstone_slab": "鑿製白砂岩半磚", + "block.biomesoplenty.dead_button": "垂死木按鈕", + "block.biomesoplenty.dead_door": "垂死木門", + "block.biomesoplenty.dead_fence": "垂死木柵欄", + "block.biomesoplenty.dead_fence_gate": "垂死木柵欄門", + "block.biomesoplenty.dead_grass": "垂死木草", + "block.biomesoplenty.dead_leaves": "垂死木樹葉", + "block.biomesoplenty.dead_log": "垂死木原木", + "block.biomesoplenty.dead_planks": "垂死木木材", + "block.biomesoplenty.dead_pressure_plate": "垂死木壓力板", + "block.biomesoplenty.dead_sapling": "垂死木樹苗", + "block.biomesoplenty.dead_sign": "垂死木告示牌", + "block.biomesoplenty.dead_slab": "垂死木半磚", + "block.biomesoplenty.dead_stairs": "垂死木階梯", + "block.biomesoplenty.dead_trapdoor": "垂死木地板門", + "block.biomesoplenty.dead_wall_sign": "垂死木牆壁告示牌", + "block.biomesoplenty.dead_wood": "垂死木塊", + "block.biomesoplenty.desert_grass": "沙漠草", + "block.biomesoplenty.dried_sand": "乾沙", + "block.biomesoplenty.dune_grass": "沙丘草", + "block.biomesoplenty.fir_button": "冷杉木按鈕", + "block.biomesoplenty.fir_door": "冷杉木門", + "block.biomesoplenty.fir_fence": "冷杉木柵欄", + "block.biomesoplenty.fir_fence_gate": "冷杉木柵欄門", + "block.biomesoplenty.fir_leaves": "冷杉木樹葉", + "block.biomesoplenty.fir_log": "冷杉木原木", + "block.biomesoplenty.fir_planks": "冷杉木木材", + "block.biomesoplenty.fir_pressure_plate": "冷杉木壓力板", + "block.biomesoplenty.fir_sapling": "冷杉木樹苗", + "block.biomesoplenty.fir_sign": "冷杉木告示牌", + "block.biomesoplenty.fir_slab": "冷杉木半磚", + "block.biomesoplenty.fir_stairs": "冷杉木階梯", + "block.biomesoplenty.fir_trapdoor": "冷杉木地板門", + "block.biomesoplenty.fir_wall_sign": "冷杉木牆壁告示牌", + "block.biomesoplenty.fir_wood": "冷杉木塊", + "block.biomesoplenty.flesh": "肉塊", + "block.biomesoplenty.flowering_oak_leaves": "花橡木樹葉", + "block.biomesoplenty.flowering_oak_sapling": "花橡木樹苗", + "block.biomesoplenty.glowflower": "螢光花", + "block.biomesoplenty.glowshroom": "螢光菇", + "block.biomesoplenty.goldenrod": "秋麒麟草", + "block.biomesoplenty.hellbark_button": "地獄皮木按鈕", + "block.biomesoplenty.hellbark_door": "地獄皮木門", + "block.biomesoplenty.hellbark_fence": "地獄皮木柵欄", + "block.biomesoplenty.hellbark_fence_gate": "地獄皮木柵欄門", + "block.biomesoplenty.hellbark_leaves": "地獄皮木樹葉", + "block.biomesoplenty.hellbark_log": "地獄皮木原木", + "block.biomesoplenty.hellbark_planks": "地獄皮木木材", + "block.biomesoplenty.hellbark_pressure_plate": "地獄皮木壓力板", + "block.biomesoplenty.hellbark_sapling": "地獄皮木樹苗", + "block.biomesoplenty.hellbark_sign": "地獄皮木告示牌", + "block.biomesoplenty.hellbark_slab": "地獄皮木半磚", + "block.biomesoplenty.hellbark_stairs": "地獄皮木階梯", + "block.biomesoplenty.hellbark_trapdoor": "地獄皮木地板門", + "block.biomesoplenty.hellbark_wall_sign": "地獄皮木牆壁告示牌", + "block.biomesoplenty.hellbark_wood": "地獄皮木塊", + "block.biomesoplenty.jacaranda_button": "藍花楹木按鈕", + "block.biomesoplenty.jacaranda_door": "藍花楹木門", + "block.biomesoplenty.jacaranda_fence": "藍花楹木柵欄", + "block.biomesoplenty.jacaranda_fence_gate": "藍花楹木柵欄門", + "block.biomesoplenty.jacaranda_leaves": "藍花楹木樹葉", + "block.biomesoplenty.jacaranda_log": "藍花楹木原木", + "block.biomesoplenty.jacaranda_planks": "藍花楹木木材", + "block.biomesoplenty.jacaranda_pressure_plate": "藍花楹木壓力板", + "block.biomesoplenty.jacaranda_sapling": "藍花楹木樹苗", + "block.biomesoplenty.jacaranda_sign": "藍花楹木告示牌", + "block.biomesoplenty.jacaranda_slab": "藍花楹木半磚", + "block.biomesoplenty.jacaranda_stairs": "藍花楹木階梯", + "block.biomesoplenty.jacaranda_trapdoor": "藍花楹木地板門", + "block.biomesoplenty.jacaranda_wall_sign": "藍花楹木牆壁告示牌", + "block.biomesoplenty.jacaranda_wood": "藍花楹木塊", + "block.biomesoplenty.lavender": "薰衣草", + "block.biomesoplenty.magic_button": "魔法木按鈕", + "block.biomesoplenty.magic_door": "魔法木門", + "block.biomesoplenty.magic_fence": "魔法木柵欄", + "block.biomesoplenty.magic_fence_gate": "魔法木柵欄門", + "block.biomesoplenty.magic_leaves": "魔法木樹葉", + "block.biomesoplenty.magic_log": "魔法木原木", + "block.biomesoplenty.magic_planks": "魔法木木材", + "block.biomesoplenty.magic_pressure_plate": "魔法木壓力板", + "block.biomesoplenty.magic_sapling": "魔法木樹苗", + "block.biomesoplenty.magic_sign": "魔法木告示牌", + "block.biomesoplenty.magic_slab": "魔法木半磚", + "block.biomesoplenty.magic_stairs": "魔法木階梯", + "block.biomesoplenty.magic_trapdoor": "魔法木地板門", + "block.biomesoplenty.magic_wall_sign": "魔法木牆壁告示牌", + "block.biomesoplenty.magic_wood": "魔法木塊", + "block.biomesoplenty.mahogany_button": "桃花心木按鈕", + "block.biomesoplenty.mahogany_door": "桃花心木門", + "block.biomesoplenty.mahogany_fence": "桃花心木柵欄", + "block.biomesoplenty.mahogany_fence_gate": "桃花心木柵欄門", + "block.biomesoplenty.mahogany_leaves": "桃花心木樹葉", + "block.biomesoplenty.mahogany_log": "桃花心木原木", + "block.biomesoplenty.mahogany_planks": "桃花心木木材", + "block.biomesoplenty.mahogany_pressure_plate": "桃花心木壓力板", + "block.biomesoplenty.mahogany_sapling": "桃花心木樹苗", + "block.biomesoplenty.mahogany_sign": "桃花心木告示牌", + "block.biomesoplenty.mahogany_slab": "桃花心木半磚", + "block.biomesoplenty.mahogany_stairs": "桃花心木階梯", + "block.biomesoplenty.mahogany_trapdoor": "桃花心木地板門", + "block.biomesoplenty.mahogany_wall_sign": "桃花心木牆壁告示牌", + "block.biomesoplenty.mahogany_wood": "桃花心木塊", + "block.biomesoplenty.mangrove_root": "紅樹根", + "block.biomesoplenty.maple_leaves": "楓木樹葉", + "block.biomesoplenty.maple_sapling": "楓木樹苗", + "block.biomesoplenty.mud": "泥巴", + "block.biomesoplenty.mud_brick_slab": "泥磚半磚", + "block.biomesoplenty.mud_brick_stairs": "泥磚階梯", + "block.biomesoplenty.mud_brick_wall": "泥磚牆", + "block.biomesoplenty.mud_bricks": "泥磚", + "block.biomesoplenty.orange_autumn_leaves": "橙色秋木樹葉", + "block.biomesoplenty.orange_autumn_sapling": "橙色秋木樹苗", + "block.biomesoplenty.orange_cosmos": "橙色波斯菊", + "block.biomesoplenty.origin_leaves": "原始木樹葉", + "block.biomesoplenty.origin_sapling": "原始木樹苗", + "block.biomesoplenty.palm_button": "棕櫚木按鈕", + "block.biomesoplenty.palm_door": "棕櫚木門", + "block.biomesoplenty.palm_fence": "棕櫚木柵欄", + "block.biomesoplenty.palm_fence_gate": "棕櫚木柵欄門", + "block.biomesoplenty.palm_leaves": "棕櫚木樹葉", + "block.biomesoplenty.palm_log": "棕櫚木原木", + "block.biomesoplenty.palm_planks": "棕櫚木木材", + "block.biomesoplenty.palm_pressure_plate": "棕櫚木壓力板", + "block.biomesoplenty.palm_sapling": "棕櫚木樹苗", + "block.biomesoplenty.palm_sign": "棕櫚木告示牌", + "block.biomesoplenty.palm_slab": "棕櫚木半磚", + "block.biomesoplenty.palm_stairs": "棕櫚木階梯", + "block.biomesoplenty.palm_trapdoor": "棕櫚木地板門", + "block.biomesoplenty.palm_wall_sign": "棕櫚木牆壁告示牌", + "block.biomesoplenty.palm_wood": "棕櫚木塊", + "block.biomesoplenty.pink_cherry_leaves": "粉色櫻花木樹葉", + "block.biomesoplenty.pink_cherry_sapling": "粉色櫻花木樹苗", + "block.biomesoplenty.pink_daffodil": "粉色水仙", + "block.biomesoplenty.pink_hibiscus": "粉色木槿", + "block.biomesoplenty.potted_burning_blossom": "火焰花盆栽", + "block.biomesoplenty.potted_dead_sapling": "垂死木樹苗盆栽", + "block.biomesoplenty.potted_fir_sapling": "冷杉木樹苗盆栽", + "block.biomesoplenty.potted_flowering_oak_sapling": "花橡木樹苗盆栽", + "block.biomesoplenty.potted_glowflower": "螢光花盆栽", + "block.biomesoplenty.potted_glowshroom": "螢光菇盆栽", + "block.biomesoplenty.potted_hellbark_sapling": "地獄皮木樹苗盆栽", + "block.biomesoplenty.potted_jacaranda_sapling": "藍花楹木樹苗盆栽", + "block.biomesoplenty.potted_lavender": "薰衣草盆栽", + "block.biomesoplenty.potted_magic_sapling": "魔法木樹苗盆栽", + "block.biomesoplenty.potted_mahogany_sapling": "桃花心木樹苗盆栽", + "block.biomesoplenty.potted_maple_sapling": "楓木樹苗盆栽", + "block.biomesoplenty.potted_orange_autumn_sapling": "橙色秋木樹苗盆栽", + "block.biomesoplenty.potted_orange_cosmos": "橙色波斯菊盆栽", + "block.biomesoplenty.potted_origin_sapling": "原始木樹苗盆栽", + "block.biomesoplenty.potted_palm_sapling": "棕櫚木樹苗盆栽", + "block.biomesoplenty.potted_pink_cherry_sapling": "粉色櫻花木樹苗盆栽", + "block.biomesoplenty.potted_pink_daffodil": "粉色水仙盆栽", + "block.biomesoplenty.potted_pink_hibiscus": "粉色木槿盆栽", + "block.biomesoplenty.potted_rainbow_birch_sapling": "彩虹樺木樹苗盆栽", + "block.biomesoplenty.potted_redwood_sapling": "紅木樹苗盆栽", + "block.biomesoplenty.potted_rose": "玫瑰盆栽", + "block.biomesoplenty.potted_sprout": "芽盆栽", + "block.biomesoplenty.potted_toadstool": "毒蕈盆栽", + "block.biomesoplenty.potted_umbran_sapling": "暗影木樹苗盆栽", + "block.biomesoplenty.potted_violet": "紫羅蘭盆栽", + "block.biomesoplenty.potted_white_cherry_sapling": "白色櫻花木樹苗盆栽", + "block.biomesoplenty.potted_wildflower": "野花盆栽", + "block.biomesoplenty.potted_willow_sapling": "柳木樹苗盆栽", + "block.biomesoplenty.potted_wilted_lily": "枯百合盆栽", + "block.biomesoplenty.potted_yellow_autumn_sapling": "黃色秋木樹苗盆栽", + "block.biomesoplenty.rainbow_birch_leaves": "彩虹樺木樹葉", + "block.biomesoplenty.rainbow_birch_sapling": "彩虹樺木樹苗", + "block.biomesoplenty.redwood_button": "紅木按鈕", + "block.biomesoplenty.redwood_door": "紅木門", + "block.biomesoplenty.redwood_fence": "紅木柵欄", + "block.biomesoplenty.redwood_fence_gate": "紅木柵欄門", + "block.biomesoplenty.redwood_leaves": "紅木樹葉", + "block.biomesoplenty.redwood_log": "紅木原木", + "block.biomesoplenty.redwood_planks": "紅木木材", + "block.biomesoplenty.redwood_pressure_plate": "紅木壓力板", + "block.biomesoplenty.redwood_sapling": "紅木樹苗", + "block.biomesoplenty.redwood_sign": "紅木告示牌", + "block.biomesoplenty.redwood_slab": "紅木半磚", + "block.biomesoplenty.redwood_stairs": "紅木階梯", + "block.biomesoplenty.redwood_trapdoor": "紅木地板門", + "block.biomesoplenty.redwood_wall_sign": "紅木牆壁告示牌", + "block.biomesoplenty.redwood_wood": "紅木塊", + "block.biomesoplenty.reed": "蘆葦", + "block.biomesoplenty.rose": "玫瑰", + "block.biomesoplenty.smooth_white_sandstone": "平滑白砂岩", + "block.biomesoplenty.smooth_white_sandstone_slab": "平滑白砂岩半磚", + "block.biomesoplenty.smooth_white_sandstone_stairs": "平滑白砂岩階梯", + "block.biomesoplenty.sprout": "芽", + "block.biomesoplenty.stripped_cherry_log": "剝皮櫻花木原木", + "block.biomesoplenty.stripped_cherry_wood": "剝皮櫻花木塊", + "block.biomesoplenty.stripped_dead_log": "剝皮垂死木原木", + "block.biomesoplenty.stripped_dead_wood": "剝皮垂死木塊", + "block.biomesoplenty.stripped_fir_log": "剝皮冷杉木原木", + "block.biomesoplenty.stripped_fir_wood": "剝皮冷杉木塊", + "block.biomesoplenty.stripped_hellbark_log": "剝皮地獄皮木原木", + "block.biomesoplenty.stripped_hellbark_wood": "剝皮地獄皮木塊", + "block.biomesoplenty.stripped_jacaranda_log": "剝皮藍花楹木原木", + "block.biomesoplenty.stripped_jacaranda_wood": "剝皮藍花楹木塊", + "block.biomesoplenty.stripped_magic_log": "剝皮魔法木原木", + "block.biomesoplenty.stripped_magic_wood": "剝皮魔法木塊", + "block.biomesoplenty.stripped_mahogany_log": "剝皮桃花心木原木", + "block.biomesoplenty.stripped_mahogany_wood": "剝皮桃花心木塊", + "block.biomesoplenty.stripped_palm_log": "剝皮棕櫚木原木", + "block.biomesoplenty.stripped_palm_wood": "剝皮棕櫚木塊", + "block.biomesoplenty.stripped_redwood_log": "剝皮紅木原木", + "block.biomesoplenty.stripped_redwood_wood": "剝皮紅木塊", + "block.biomesoplenty.stripped_umbran_log": "剝皮暗影木原木", + "block.biomesoplenty.stripped_umbran_wood": "剝皮暗影木塊", + "block.biomesoplenty.stripped_willow_log": "剝皮柳木原木", + "block.biomesoplenty.stripped_willow_wood": "剝皮柳木塊", + "block.biomesoplenty.tall_cattail": "高香蒲", + "block.biomesoplenty.toadstool": "毒蕈", + "block.biomesoplenty.umbran_button": "暗影木按鈕", + "block.biomesoplenty.umbran_door": "暗影木門", + "block.biomesoplenty.umbran_fence": "暗影木柵欄", + "block.biomesoplenty.umbran_fence_gate": "暗影木柵欄門", + "block.biomesoplenty.umbran_leaves": "暗影木樹葉", + "block.biomesoplenty.umbran_log": "暗影木原木", + "block.biomesoplenty.umbran_planks": "暗影木木材", + "block.biomesoplenty.umbran_pressure_plate": "暗影木壓力板", + "block.biomesoplenty.umbran_sapling": "暗影木樹苗", + "block.biomesoplenty.umbran_sign": "暗影木告示牌", + "block.biomesoplenty.umbran_slab": "暗影木半磚", + "block.biomesoplenty.umbran_stairs": "暗影木階梯", + "block.biomesoplenty.umbran_trapdoor": "暗影木地板門", + "block.biomesoplenty.umbran_wall_sign": "暗影木牆壁告示牌", + "block.biomesoplenty.umbran_wood": "暗影木塊", + "block.biomesoplenty.violet": "紫羅蘭", + "block.biomesoplenty.watergrass": "水草", + "block.biomesoplenty.white_cherry_leaves": "白色櫻花木樹葉", + "block.biomesoplenty.white_cherry_sapling": "白色櫻花木樹苗", + "block.biomesoplenty.white_sand": "白沙", + "block.biomesoplenty.white_sandstone": "白砂岩", + "block.biomesoplenty.white_sandstone_slab": "白砂岩半磚", + "block.biomesoplenty.white_sandstone_stairs": "白砂岩階梯", + "block.biomesoplenty.white_sandstone_wall": "白砂岩牆", + "block.biomesoplenty.wildflower": "野花", + "block.biomesoplenty.willow_button": "柳木按鈕", + "block.biomesoplenty.willow_door": "柳木門", + "block.biomesoplenty.willow_fence": "柳木柵欄", + "block.biomesoplenty.willow_fence_gate": "柳木柵欄門", + "block.biomesoplenty.willow_leaves": "柳木樹葉", + "block.biomesoplenty.willow_log": "柳木原木", + "block.biomesoplenty.willow_planks": "柳木木材", + "block.biomesoplenty.willow_pressure_plate": "柳木壓力板", + "block.biomesoplenty.willow_sapling": "柳木樹苗", + "block.biomesoplenty.willow_sign": "柳木告示牌", + "block.biomesoplenty.willow_slab": "柳木半磚", + "block.biomesoplenty.willow_stairs": "柳木階梯", + "block.biomesoplenty.willow_trapdoor": "柳木地板門", + "block.biomesoplenty.willow_vine": "柳樹藤", + "block.biomesoplenty.willow_wall_sign": "柳木牆壁告示牌", + "block.biomesoplenty.willow_wood": "柳木塊", + "block.biomesoplenty.wilted_lily": "枯萎的百合", + "block.biomesoplenty.yellow_autumn_leaves": "黃秋木樹葉", + "block.biomesoplenty.yellow_autumn_sapling": "黃秋木樹苗", + + "argument.biomesoplenty.biome.invalid": "無效的生態域參數", + "commands.biomesoplenty.tpbiome.success": "玩家 %s 傳送到生態域:%s,座標(%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "未找到生態域:%s!", + + "entity.biomesoplenty.boat_bop": "船" +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/barley_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/barley_bottom.json new file mode 100644 index 0000000000..490dee426b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/barley_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/barley_bottom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/barley_top.json b/src/main/resources/assets/biomesoplenty/models/block/barley_top.json new file mode 100644 index 0000000000..22ce6e9ef2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/barley_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/barley_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sand.json b/src/main/resources/assets/biomesoplenty/models/block/black_sand.json new file mode 100644 index 0000000000..5e9fc79c4e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/black_sand" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone.json new file mode 100644 index 0000000000..5893261e74 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "block/cube_bottom_top", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_bottom", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_slab.json new file mode 100644 index 0000000000..688354a638 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_bottom", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_slab_top.json new file mode 100644 index 0000000000..597a673d27 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_bottom", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs.json new file mode 100644 index 0000000000..be28de47d8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_bottom", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs_inner.json new file mode 100644 index 0000000000..a2734b1555 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_bottom", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs_outer.json new file mode 100644 index 0000000000..75ab0d8710 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_bottom", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_inventory.json new file mode 100644 index 0000000000..75edb79c11 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "biomesoplenty:block/black_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_post.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_post.json new file mode 100644 index 0000000000..60246b8cdc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "biomesoplenty:block/black_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_side.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_side.json new file mode 100644 index 0000000000..e1f0b86197 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "biomesoplenty:block/black_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_side_tall.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_side_tall.json new file mode 100644 index 0000000000..3962ab5667 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "biomesoplenty:block/black_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/blue_hydrangea_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/blue_hydrangea_bottom.json new file mode 100644 index 0000000000..cc55427713 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/blue_hydrangea_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/blue_hydrangea_bottom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/blue_hydrangea_top.json b/src/main/resources/assets/biomesoplenty/models/block/blue_hydrangea_top.json new file mode 100644 index 0000000000..b8a29e520a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/blue_hydrangea_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/blue_hydrangea_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/bramble.json b/src/main/resources/assets/biomesoplenty/models/block/bramble.json new file mode 100644 index 0000000000..6ddcbf7278 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/bramble.json @@ -0,0 +1,39 @@ +{ "parent": "block/block", + "ambientocclusion": false, + "textures": { + "plant": "biomesoplenty:block/bramble", + "thorns": "biomesoplenty:block/bramble_thorns", + "particle": "biomesoplenty:block/bramble" + }, + "elements": [ + { "from": [ 0.8, 0, 8 ], + "to": [ 15.2, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#thorns" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#thorns" } + } + }, + { "from": [ 8, 0, 0.8 ], + "to": [ 8, 16, 15.2 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#thorns" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#thorns" } + } + }, + { "from": [ 4, 4, 4 ], + "to": [ 12, 12, 12 ], + "faces": { + "down": { "uv": [ 12, 12, 4, 4 ], "texture": "#plant" }, + "up": { "uv": [ 4, 4, 12, 12 ], "texture": "#plant" }, + "north": { "uv": [ 4, 4, 12, 12 ], "texture": "#plant" }, + "south": { "uv": [ 4, 4, 12, 12 ], "texture": "#plant" }, + "west": { "uv": [ 4, 4, 12, 12 ], "texture": "#plant" }, + "east": { "uv": [ 4, 4, 12, 12 ], "texture": "#plant" } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/bramble_side.json b/src/main/resources/assets/biomesoplenty/models/block/bramble_side.json new file mode 100644 index 0000000000..338d8ea979 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/bramble_side.json @@ -0,0 +1,19 @@ +{ + "ambientocclusion": false, + "textures": { + "texture": "biomesoplenty:block/bramble", + "particle": "biomesoplenty:block/bramble" + }, + "elements": [ + { "from": [ 4, 4, 0 ], + "to": [ 12, 12, 4 ], + "faces": { + "down": { "texture": "#texture" }, + "up": { "texture": "#texture" }, + "north": { "texture": "#texture", "cullface":"north" }, + "west": { "texture": "#texture" }, + "east": { "texture": "#texture" } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/burning_blossom.json b/src/main/resources/assets/biomesoplenty/models/block/burning_blossom.json new file mode 100644 index 0000000000..cbededa016 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/burning_blossom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/burning_blossom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/bush.json b/src/main/resources/assets/biomesoplenty/models/block/bush.json new file mode 100644 index 0000000000..77dc4b0796 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/bush.json @@ -0,0 +1,6 @@ +{ + "parent": "block/tinted_cross", + "textures": { + "cross": "biomesoplenty:block/bush" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cattail_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/cattail_bottom.json new file mode 100644 index 0000000000..d02078dff7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cattail_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/cattail_bottom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cattail_top.json b/src/main/resources/assets/biomesoplenty/models/block/cattail_top.json new file mode 100644 index 0000000000..6f47b53f80 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cattail_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/cattail_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_button.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_button.json new file mode 100644 index 0000000000..89ae8d0789 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_button_inventory.json new file mode 100644 index 0000000000..82aadd7898 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_button_pressed.json new file mode 100644 index 0000000000..3c93ae88b7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_door_bottom.json new file mode 100644 index 0000000000..998fb8af02 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/cherry_door_bottom", + "top": "biomesoplenty:block/cherry_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_door_bottom_hinge.json new file mode 100644 index 0000000000..49c5eefac2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/cherry_door_bottom", + "top": "biomesoplenty:block/cherry_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_door_top.json new file mode 100644 index 0000000000..ab78ca028e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/cherry_door_bottom", + "top": "biomesoplenty:block/cherry_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_door_top_hinge.json new file mode 100644 index 0000000000..e3a35867ad --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/cherry_door_bottom", + "top": "biomesoplenty:block/cherry_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate.json new file mode 100644 index 0000000000..d057dcc12c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_open.json new file mode 100644 index 0000000000..f1aa4e88dc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_wall.json new file mode 100644 index 0000000000..05d4a08db8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_wall_open.json new file mode 100644 index 0000000000..5eb1874627 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_inventory.json new file mode 100644 index 0000000000..ab5e0e53aa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_post.json new file mode 100644 index 0000000000..da67e945b2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_side.json new file mode 100644 index 0000000000..8ccd9920b9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_log.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_log.json new file mode 100644 index 0000000000..fd5f2078d7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/cherry_log_top", + "side": "biomesoplenty:block/cherry_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_planks.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_planks.json new file mode 100644 index 0000000000..9a8b844796 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_pressure_plate.json new file mode 100644 index 0000000000..660da402a6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_pressure_plate_down.json new file mode 100644 index 0000000000..8727cca0f4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_sign.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_sign.json new file mode 100644 index 0000000000..22e37061dc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_slab.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_slab.json new file mode 100644 index 0000000000..20277ad914 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/cherry_planks", + "top": "biomesoplenty:block/cherry_planks", + "side": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_slab_top.json new file mode 100644 index 0000000000..4a03ba2a5c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/cherry_planks", + "top": "biomesoplenty:block/cherry_planks", + "side": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs.json new file mode 100644 index 0000000000..5ed60e00bd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/cherry_planks", + "top": "biomesoplenty:block/cherry_planks", + "side": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs_inner.json new file mode 100644 index 0000000000..3ae07e2fec --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/cherry_planks", + "top": "biomesoplenty:block/cherry_planks", + "side": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs_outer.json new file mode 100644 index 0000000000..3c76744767 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/cherry_planks", + "top": "biomesoplenty:block/cherry_planks", + "side": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_bottom.json new file mode 100644 index 0000000000..6fdb5ca801 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/cherry_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_open.json new file mode 100644 index 0000000000..f8d9f9695c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/cherry_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_top.json new file mode 100644 index 0000000000..f5cc83a5fb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/cherry_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_wood.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_wood.json new file mode 100644 index 0000000000..c8d5d86608 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/cherry_log", + "side": "biomesoplenty:block/cherry_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/chiseled_black_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/chiseled_black_sandstone.json new file mode 100644 index 0000000000..59df546438 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/chiseled_black_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/chiseled_black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/chiseled_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/chiseled_orange_sandstone.json new file mode 100644 index 0000000000..b302475011 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/chiseled_orange_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/chiseled_orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/chiseled_white_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/chiseled_white_sandstone.json new file mode 100644 index 0000000000..e0fdcefa54 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/chiseled_white_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/chiseled_white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/clover.json b/src/main/resources/assets/biomesoplenty/models/block/clover.json new file mode 100644 index 0000000000..b8f3fbbc1b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/clover.json @@ -0,0 +1,36 @@ +{ + "ambientocclusion": false, + "textures": { + "plant": "biomesoplenty:block/clover", + "stem": "biomesoplenty:block/clover_stem", + "particle": "#plant" + }, + "elements": [ + { + "from": [0, 7, 0], + "to": [16, 7, 16], + "faces": { + "up": {"uv": [0, 0, 16, 16], "texture": "#plant", "tintindex": 0}, + "down": {"uv": [0, 0, 16, 16], "texture": "#plant", "rotation": 270, "tintindex": 0} + } + }, + { "from": [ 0.8, 0, 8 ], + "to": [ 15.2, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#stem", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#stem", "tintindex": 0 } + } + }, + { "from": [ 8, 0, 0.8 ], + "to": [ 8, 16, 15.2 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#stem", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#stem", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cross_with_overlay.json b/src/main/resources/assets/biomesoplenty/models/block/cross_with_overlay.json new file mode 100644 index 0000000000..b2383eaa92 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cross_with_overlay.json @@ -0,0 +1,44 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "#particle" + }, + "elements": [ + { "from": [ 0.8, 0, 8 ], + "to": [ 15.2, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#greyscale", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#greyscale", "tintindex": 0 } + } + }, + { "from": [ 8, 0, 0.8 ], + "to": [ 8, 16, 15.2 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#greyscale", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#greyscale", "tintindex": 0 } + } + }, + { "from": [ 0.8, 0, 8 ], + "to": [ 15.2, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#colored" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#colored" } + } + }, + { "from": [ 8, 0, 0.8 ], + "to": [ 8, 16, 15.2 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#colored" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#colored" } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone.json new file mode 100644 index 0000000000..997f293b2a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/cut_black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone_slab.json new file mode 100644 index 0000000000..e82f6b6e11 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_top", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/cut_black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone_slab_top.json new file mode 100644 index 0000000000..6ae580ef96 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_top", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/cut_black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone.json new file mode 100644 index 0000000000..b2da477391 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/cut_orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone_slab.json new file mode 100644 index 0000000000..9e5d450d89 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_top", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/cut_orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone_slab_top.json new file mode 100644 index 0000000000..6c729c3049 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_top", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/cut_orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone.json new file mode 100644 index 0000000000..c89ddb1bf7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/cut_white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone_slab.json new file mode 100644 index 0000000000..62d3456672 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_top", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/cut_white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone_slab_top.json new file mode 100644 index 0000000000..04b11639ac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_top", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/cut_white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_branch.json b/src/main/resources/assets/biomesoplenty/models/block/dead_branch.json new file mode 100644 index 0000000000..05e83d7a46 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_branch.json @@ -0,0 +1,27 @@ +{ + "ambientocclusion": false, + "textures": { + "branch": "biomesoplenty:block/dead_branch", + "particle": "#branch" + }, + "elements": [ + { + "from": [ 8, 0, 0 ], + "to": [ 8, 16, 16 ], + "rotation": { "origin": [ 8, 8, 14 ], "axis": "y", "angle": 22.5 }, + "faces": { + "east": { "texture": "#branch", "uv": [ 0, 0, 16, 16 ] }, + "west": { "texture": "#branch", "uv": [ 16, 0, 0, 16 ] } + } + }, + { + "from": [ 8, 0, 0 ], + "to": [ 8, 16, 16 ], + "rotation": { "origin": [ 8, 8, 14 ], "axis": "y", "angle": -22.5 }, + "faces": { + "east": { "texture": "#branch", "uv": [ 0, 0, 16, 16 ] }, + "west": { "texture": "#branch", "uv": [ 16, 0, 0, 16 ] } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_button.json b/src/main/resources/assets/biomesoplenty/models/block/dead_button.json new file mode 100644 index 0000000000..3f35e902f5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/dead_button_inventory.json new file mode 100644 index 0000000000..3696aa2693 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/dead_button_pressed.json new file mode 100644 index 0000000000..9b60ef192f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/dead_door_bottom.json new file mode 100644 index 0000000000..bfa908cd76 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/dead_door_bottom", + "top": "biomesoplenty:block/dead_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/dead_door_bottom_hinge.json new file mode 100644 index 0000000000..116741eeab --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/dead_door_bottom", + "top": "biomesoplenty:block/dead_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/dead_door_top.json new file mode 100644 index 0000000000..d57fd7ce19 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/dead_door_bottom", + "top": "biomesoplenty:block/dead_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/dead_door_top_hinge.json new file mode 100644 index 0000000000..f370baf6c7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/dead_door_bottom", + "top": "biomesoplenty:block/dead_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate.json new file mode 100644 index 0000000000..6505eb7794 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_open.json new file mode 100644 index 0000000000..b772beaa9c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_wall.json new file mode 100644 index 0000000000..b986f19a24 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_wall_open.json new file mode 100644 index 0000000000..1de64f2728 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_inventory.json new file mode 100644 index 0000000000..92488e0bfd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_post.json new file mode 100644 index 0000000000..08a21ad9ca --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_side.json new file mode 100644 index 0000000000..6a4f58c5ac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_grass.json b/src/main/resources/assets/biomesoplenty/models/block/dead_grass.json new file mode 100644 index 0000000000..d8afa3f631 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_grass.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/dead_grass" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/dead_leaves.json new file mode 100644 index 0000000000..14960ae953 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/dead_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_log.json b/src/main/resources/assets/biomesoplenty/models/block/dead_log.json new file mode 100644 index 0000000000..88e3603c18 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/dead_log_top", + "side": "biomesoplenty:block/dead_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_planks.json b/src/main/resources/assets/biomesoplenty/models/block/dead_planks.json new file mode 100644 index 0000000000..62bcc15a66 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/dead_pressure_plate.json new file mode 100644 index 0000000000..611c0fc7ed --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/dead_pressure_plate_down.json new file mode 100644 index 0000000000..4ff655f540 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/dead_sapling.json new file mode 100644 index 0000000000..219ab333ee --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/dead_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_sign.json b/src/main/resources/assets/biomesoplenty/models/block/dead_sign.json new file mode 100644 index 0000000000..1e7a037b0f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_slab.json b/src/main/resources/assets/biomesoplenty/models/block/dead_slab.json new file mode 100644 index 0000000000..30c1a4c207 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/dead_planks", + "top": "biomesoplenty:block/dead_planks", + "side": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/dead_slab_top.json new file mode 100644 index 0000000000..0e61dac48b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/dead_planks", + "top": "biomesoplenty:block/dead_planks", + "side": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/dead_stairs.json new file mode 100644 index 0000000000..866f3eccb0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/dead_planks", + "top": "biomesoplenty:block/dead_planks", + "side": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/dead_stairs_inner.json new file mode 100644 index 0000000000..a788d61c87 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/dead_planks", + "top": "biomesoplenty:block/dead_planks", + "side": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/dead_stairs_outer.json new file mode 100644 index 0000000000..a3bc84e870 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/dead_planks", + "top": "biomesoplenty:block/dead_planks", + "side": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_bottom.json new file mode 100644 index 0000000000..69917b98c1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/dead_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_open.json new file mode 100644 index 0000000000..357eec188e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/dead_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_top.json new file mode 100644 index 0000000000..906a8a357e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/dead_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_wood.json b/src/main/resources/assets/biomesoplenty/models/block/dead_wood.json new file mode 100644 index 0000000000..26d992e475 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/dead_log", + "side": "biomesoplenty:block/dead_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/desert_grass.json b/src/main/resources/assets/biomesoplenty/models/block/desert_grass.json new file mode 100644 index 0000000000..15943aea86 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/desert_grass.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/desert_grass" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dried_salt.json b/src/main/resources/assets/biomesoplenty/models/block/dried_salt.json new file mode 100644 index 0000000000..ca1d9e7ecd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dried_salt.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/dried_salt" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dune_grass.json b/src/main/resources/assets/biomesoplenty/models/block/dune_grass.json new file mode 100644 index 0000000000..bdfb80dd3a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dune_grass.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/dune_grass" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_button.json b/src/main/resources/assets/biomesoplenty/models/block/fir_button.json new file mode 100644 index 0000000000..da0d67748c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/fir_button_inventory.json new file mode 100644 index 0000000000..67e8329fe5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/fir_button_pressed.json new file mode 100644 index 0000000000..c4f2e84b11 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/fir_door_bottom.json new file mode 100644 index 0000000000..4e65a731a9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/fir_door_bottom", + "top": "biomesoplenty:block/fir_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/fir_door_bottom_hinge.json new file mode 100644 index 0000000000..2439cd0b16 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/fir_door_bottom", + "top": "biomesoplenty:block/fir_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/fir_door_top.json new file mode 100644 index 0000000000..0c84c0fad2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/fir_door_bottom", + "top": "biomesoplenty:block/fir_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/fir_door_top_hinge.json new file mode 100644 index 0000000000..83f7a1f05b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/fir_door_bottom", + "top": "biomesoplenty:block/fir_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate.json new file mode 100644 index 0000000000..2b7ff16f69 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_open.json new file mode 100644 index 0000000000..af66fa4153 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_wall.json new file mode 100644 index 0000000000..80119d6aee --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_wall_open.json new file mode 100644 index 0000000000..782ab4bdb0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_inventory.json new file mode 100644 index 0000000000..a851de99b4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_post.json new file mode 100644 index 0000000000..6d23a93e24 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_side.json new file mode 100644 index 0000000000..ca72c66abe --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/fir_leaves.json new file mode 100644 index 0000000000..b746823575 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/fir_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_log.json b/src/main/resources/assets/biomesoplenty/models/block/fir_log.json new file mode 100644 index 0000000000..ed5d5f526d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/fir_log_top", + "side": "biomesoplenty:block/fir_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_planks.json b/src/main/resources/assets/biomesoplenty/models/block/fir_planks.json new file mode 100644 index 0000000000..fbc4d638ed --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/fir_pressure_plate.json new file mode 100644 index 0000000000..538cd76981 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/fir_pressure_plate_down.json new file mode 100644 index 0000000000..cf1b247253 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/fir_sapling.json new file mode 100644 index 0000000000..74c5b14b8d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/fir_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_sign.json b/src/main/resources/assets/biomesoplenty/models/block/fir_sign.json new file mode 100644 index 0000000000..25b0bbe132 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_slab.json b/src/main/resources/assets/biomesoplenty/models/block/fir_slab.json new file mode 100644 index 0000000000..daae5064fc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/fir_planks", + "top": "biomesoplenty:block/fir_planks", + "side": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/fir_slab_top.json new file mode 100644 index 0000000000..8c52d5536a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/fir_planks", + "top": "biomesoplenty:block/fir_planks", + "side": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/fir_stairs.json new file mode 100644 index 0000000000..a5cfb7ecb0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/fir_planks", + "top": "biomesoplenty:block/fir_planks", + "side": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/fir_stairs_inner.json new file mode 100644 index 0000000000..de05b3d498 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/fir_planks", + "top": "biomesoplenty:block/fir_planks", + "side": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/fir_stairs_outer.json new file mode 100644 index 0000000000..7cfd6976c6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/fir_planks", + "top": "biomesoplenty:block/fir_planks", + "side": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_bottom.json new file mode 100644 index 0000000000..c26cfae1a7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/fir_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_open.json new file mode 100644 index 0000000000..68b1b123db --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/fir_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_top.json new file mode 100644 index 0000000000..60a8132abb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/fir_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_wood.json b/src/main/resources/assets/biomesoplenty/models/block/fir_wood.json new file mode 100644 index 0000000000..6bacffa7b9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/fir_log", + "side": "biomesoplenty:block/fir_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/flat_on_floor.json b/src/main/resources/assets/biomesoplenty/models/block/flat_on_floor.json new file mode 100644 index 0000000000..395d675979 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/flat_on_floor.json @@ -0,0 +1,15 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "#texture" + }, + "elements": [ + { "from": [ 0, 0.25, 0 ], + "to": [ 16, 0.25, 16 ], + "faces": { + "down": { "uv": [ 16, 16, 0, 0 ], "texture": "#texture", "tintindex": 0 }, + "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/flesh.json b/src/main/resources/assets/biomesoplenty/models/block/flesh.json new file mode 100644 index 0000000000..e5d1fb2c38 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/flesh.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/flesh" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/flowering_oak_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/flowering_oak_leaves.json new file mode 100644 index 0000000000..fb558523a5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/flowering_oak_leaves.json @@ -0,0 +1,7 @@ +{ + "parent": "biomesoplenty:block/leaves_overlay", + "textures": { + "leaves": "biomesoplenty:block/flowering_oak_leaves", + "overlay": "biomesoplenty:block/flowering_oak_leaves_overlay" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/flowering_oak_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/flowering_oak_sapling.json new file mode 100644 index 0000000000..b1b7289982 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/flowering_oak_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/flowering_oak_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/glowflower.json b/src/main/resources/assets/biomesoplenty/models/block/glowflower.json new file mode 100644 index 0000000000..0b00e77dca --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/glowflower.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/glowflower" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/glowshroom.json b/src/main/resources/assets/biomesoplenty/models/block/glowshroom.json new file mode 100644 index 0000000000..dd345767d3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/glowshroom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/glowshroom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/glowshroom_block.json b/src/main/resources/assets/biomesoplenty/models/block/glowshroom_block.json new file mode 100644 index 0000000000..875d571d1e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/glowshroom_block.json @@ -0,0 +1,14 @@ +{ + "textures": { + "texture": "biomesoplenty:block/glowshroom_block", + "particle": "biomesoplenty:block/glowshroom_block" + }, + "elements": [ + { "from": [ 0, 0, 0 ], + "to": [ 16, 16, 0 ], + "faces": { + "north": { "texture": "#texture", "cullface":"north" } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/glowshroom_block_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/glowshroom_block_inventory.json new file mode 100644 index 0000000000..3586f40b09 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/glowshroom_block_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/glowshroom_block" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/goldenrod_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/goldenrod_bottom.json new file mode 100644 index 0000000000..22890e30b9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/goldenrod_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/goldenrod_bottom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/goldenrod_top.json b/src/main/resources/assets/biomesoplenty/models/block/goldenrod_top.json new file mode 100644 index 0000000000..4ff28a2d12 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/goldenrod_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/goldenrod_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_button.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_button.json new file mode 100644 index 0000000000..9b32738016 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_button_inventory.json new file mode 100644 index 0000000000..a18bef7154 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_button_pressed.json new file mode 100644 index 0000000000..59e48909be --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_bottom.json new file mode 100644 index 0000000000..ae6a90404c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/hellbark_door_bottom", + "top": "biomesoplenty:block/hellbark_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_bottom_hinge.json new file mode 100644 index 0000000000..3da07e6d8e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/hellbark_door_bottom", + "top": "biomesoplenty:block/hellbark_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_top.json new file mode 100644 index 0000000000..fbf710b9a5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/hellbark_door_bottom", + "top": "biomesoplenty:block/hellbark_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_top_hinge.json new file mode 100644 index 0000000000..fa846f97e7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/hellbark_door_bottom", + "top": "biomesoplenty:block/hellbark_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate.json new file mode 100644 index 0000000000..b04f3d64d4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_open.json new file mode 100644 index 0000000000..3e7fb937fc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_wall.json new file mode 100644 index 0000000000..561688b7d0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_wall_open.json new file mode 100644 index 0000000000..55e63a0c8c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_inventory.json new file mode 100644 index 0000000000..583271e0f9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_post.json new file mode 100644 index 0000000000..30fbd6bc3d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_side.json new file mode 100644 index 0000000000..c49f5ce967 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_leaves.json new file mode 100644 index 0000000000..d6bc5772fb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/hellbark_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_log.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_log.json new file mode 100644 index 0000000000..0a604cb4aa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/hellbark_log_top", + "side": "biomesoplenty:block/hellbark_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_planks.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_planks.json new file mode 100644 index 0000000000..6a1e0c71a4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_pressure_plate.json new file mode 100644 index 0000000000..446f295a00 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_pressure_plate_down.json new file mode 100644 index 0000000000..d45ce9fc4b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_sapling.json new file mode 100644 index 0000000000..3241d1fb54 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/hellbark_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_sign.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_sign.json new file mode 100644 index 0000000000..2506ff9801 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_slab.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_slab.json new file mode 100644 index 0000000000..dca2372dac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/hellbark_planks", + "top": "biomesoplenty:block/hellbark_planks", + "side": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_slab_top.json new file mode 100644 index 0000000000..ae41bd5c31 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/hellbark_planks", + "top": "biomesoplenty:block/hellbark_planks", + "side": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs.json new file mode 100644 index 0000000000..b40ce7c311 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/hellbark_planks", + "top": "biomesoplenty:block/hellbark_planks", + "side": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs_inner.json new file mode 100644 index 0000000000..b788e65c5d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/hellbark_planks", + "top": "biomesoplenty:block/hellbark_planks", + "side": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs_outer.json new file mode 100644 index 0000000000..e203da5252 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/hellbark_planks", + "top": "biomesoplenty:block/hellbark_planks", + "side": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_bottom.json new file mode 100644 index 0000000000..b4e81be8a6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/hellbark_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_open.json new file mode 100644 index 0000000000..d7b2c0941e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/hellbark_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_top.json new file mode 100644 index 0000000000..8c7a2ac875 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/hellbark_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_wood.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_wood.json new file mode 100644 index 0000000000..92ab79aed8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/hellbark_log", + "side": "biomesoplenty:block/hellbark_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/huge_clover_petal.json b/src/main/resources/assets/biomesoplenty/models/block/huge_clover_petal.json new file mode 100644 index 0000000000..a187db4a52 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/huge_clover_petal.json @@ -0,0 +1,29 @@ +{ + "ambientocclusion": false, + "textures": { + "petal": "biomesoplenty:block/huge_clover_petal", + "stem": "biomesoplenty:block/huge_clover_stem", + "stem_back": "biomesoplenty:block/huge_clover_stem_back", + "particle": "#petal" + }, + "elements": [ + { + "from": [0, 15, 0], + "to": [16, 15, 16], + "faces": { + "up": {"uv": [0, 0, 16, 16], "texture": "#petal", "tintindex": 0}, + "down": {"uv": [0, 0, 16, 16], "texture": "#petal", "rotation": 270, "tintindex": 0} + } + }, + { + "from": [0, 0, 8], + "to": [16, 16, 8], + "shade": false, + "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8], "rescale": true}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#stem_back", "tintindex": 0}, + "south": {"uv": [0, 0, 16, 16], "texture": "#stem", "tintindex": 0} + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button.json new file mode 100644 index 0000000000..f92e851d8b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button_inventory.json new file mode 100644 index 0000000000..ad9ccef2e8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button_pressed.json new file mode 100644 index 0000000000..9088b2bf1a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_bottom.json new file mode 100644 index 0000000000..68e4977f98 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_door_bottom", + "top": "biomesoplenty:block/jacaranda_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_bottom_hinge.json new file mode 100644 index 0000000000..a08c68e3f0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_door_bottom", + "top": "biomesoplenty:block/jacaranda_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_top.json new file mode 100644 index 0000000000..52025a4ee9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_door_bottom", + "top": "biomesoplenty:block/jacaranda_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_top_hinge.json new file mode 100644 index 0000000000..0e439513d4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_door_bottom", + "top": "biomesoplenty:block/jacaranda_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate.json new file mode 100644 index 0000000000..e1f6bbd4fd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_open.json new file mode 100644 index 0000000000..b6c7faab9b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_wall.json new file mode 100644 index 0000000000..45102351a0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_wall_open.json new file mode 100644 index 0000000000..5a3aa6b0fa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_inventory.json new file mode 100644 index 0000000000..8739f5e120 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_post.json new file mode 100644 index 0000000000..667fe34306 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_side.json new file mode 100644 index 0000000000..daf6b6494e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_leaves.json new file mode 100644 index 0000000000..4074ef8f79 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/jacaranda_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_log.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_log.json new file mode 100644 index 0000000000..fb50de22e7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/jacaranda_log_top", + "side": "biomesoplenty:block/jacaranda_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_planks.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_planks.json new file mode 100644 index 0000000000..0c4c73d562 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_pressure_plate.json new file mode 100644 index 0000000000..281d5f0525 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_pressure_plate_down.json new file mode 100644 index 0000000000..aa7a624d86 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_sapling.json new file mode 100644 index 0000000000..62dca0cdab --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/jacaranda_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_sign.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_sign.json new file mode 100644 index 0000000000..a02fbc9674 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_slab.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_slab.json new file mode 100644 index 0000000000..f1daec7bf3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_planks", + "top": "biomesoplenty:block/jacaranda_planks", + "side": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_slab_top.json new file mode 100644 index 0000000000..2fa26c6b9a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_planks", + "top": "biomesoplenty:block/jacaranda_planks", + "side": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs.json new file mode 100644 index 0000000000..7a8c98d7f4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_planks", + "top": "biomesoplenty:block/jacaranda_planks", + "side": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs_inner.json new file mode 100644 index 0000000000..0ad65f9868 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_planks", + "top": "biomesoplenty:block/jacaranda_planks", + "side": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs_outer.json new file mode 100644 index 0000000000..16ea041d1f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_planks", + "top": "biomesoplenty:block/jacaranda_planks", + "side": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_bottom.json new file mode 100644 index 0000000000..2f3aac3256 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/jacaranda_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_open.json new file mode 100644 index 0000000000..d460618bc2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/jacaranda_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_top.json new file mode 100644 index 0000000000..9e950384c5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/jacaranda_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_wood.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_wood.json new file mode 100644 index 0000000000..38db2ce65c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/jacaranda_log", + "side": "biomesoplenty:block/jacaranda_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/lavender.json b/src/main/resources/assets/biomesoplenty/models/block/lavender.json new file mode 100644 index 0000000000..dd924f680c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/lavender.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/lavender" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/leaves_overlay.json b/src/main/resources/assets/biomesoplenty/models/block/leaves_overlay.json new file mode 100644 index 0000000000..180e6f9752 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/leaves_overlay.json @@ -0,0 +1,30 @@ +{ + "parent": "block/block", + "textures": { + "particle": "#leaves" + }, + "elements": [ + { "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay"}, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay"}, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay"}, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay"}, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay"}, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay"} + } + }, + { "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaves", "tintindex": 1 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaves", "tintindex": 1 }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaves", "tintindex": 1 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaves", "tintindex": 1 }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaves", "tintindex": 1 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaves", "tintindex": 1 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_button.json b/src/main/resources/assets/biomesoplenty/models/block/magic_button.json new file mode 100644 index 0000000000..a94ebcc889 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/magic_button_inventory.json new file mode 100644 index 0000000000..9bdbe95f2e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/magic_button_pressed.json new file mode 100644 index 0000000000..13a72882b3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/magic_door_bottom.json new file mode 100644 index 0000000000..d02fa705fc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/magic_door_bottom", + "top": "biomesoplenty:block/magic_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/magic_door_bottom_hinge.json new file mode 100644 index 0000000000..1f18cea141 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/magic_door_bottom", + "top": "biomesoplenty:block/magic_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/magic_door_top.json new file mode 100644 index 0000000000..c765a00f3e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/magic_door_bottom", + "top": "biomesoplenty:block/magic_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/magic_door_top_hinge.json new file mode 100644 index 0000000000..fb14465dfe --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/magic_door_bottom", + "top": "biomesoplenty:block/magic_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate.json new file mode 100644 index 0000000000..3bd9660482 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_open.json new file mode 100644 index 0000000000..b5d2714852 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_wall.json new file mode 100644 index 0000000000..282759c7d7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_wall_open.json new file mode 100644 index 0000000000..397399c8ca --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_inventory.json new file mode 100644 index 0000000000..0e7f9764ce --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_post.json new file mode 100644 index 0000000000..f977f14cff --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_side.json new file mode 100644 index 0000000000..433cc2dc17 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/magic_leaves.json new file mode 100644 index 0000000000..81396300a6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/magic_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_log.json b/src/main/resources/assets/biomesoplenty/models/block/magic_log.json new file mode 100644 index 0000000000..9d52a07f34 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/magic_log_top", + "side": "biomesoplenty:block/magic_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_planks.json b/src/main/resources/assets/biomesoplenty/models/block/magic_planks.json new file mode 100644 index 0000000000..fce32594b1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/magic_pressure_plate.json new file mode 100644 index 0000000000..eaf8b82cbb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/magic_pressure_plate_down.json new file mode 100644 index 0000000000..e445310f9b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/magic_sapling.json new file mode 100644 index 0000000000..c723e6da30 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/magic_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_sign.json b/src/main/resources/assets/biomesoplenty/models/block/magic_sign.json new file mode 100644 index 0000000000..14ae102ac0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_slab.json b/src/main/resources/assets/biomesoplenty/models/block/magic_slab.json new file mode 100644 index 0000000000..0efc1af453 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/magic_planks", + "top": "biomesoplenty:block/magic_planks", + "side": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/magic_slab_top.json new file mode 100644 index 0000000000..9875efd24e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/magic_planks", + "top": "biomesoplenty:block/magic_planks", + "side": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/magic_stairs.json new file mode 100644 index 0000000000..d691d5f103 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/magic_planks", + "top": "biomesoplenty:block/magic_planks", + "side": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/magic_stairs_inner.json new file mode 100644 index 0000000000..5e1bcf87f6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/magic_planks", + "top": "biomesoplenty:block/magic_planks", + "side": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/magic_stairs_outer.json new file mode 100644 index 0000000000..f8b6887c38 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/magic_planks", + "top": "biomesoplenty:block/magic_planks", + "side": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_bottom.json new file mode 100644 index 0000000000..6b3a129275 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/magic_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_open.json new file mode 100644 index 0000000000..3fb61513b4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/magic_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_top.json new file mode 100644 index 0000000000..2cc9f37977 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/magic_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_wood.json b/src/main/resources/assets/biomesoplenty/models/block/magic_wood.json new file mode 100644 index 0000000000..4ab5f70364 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/magic_log", + "side": "biomesoplenty:block/magic_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_button.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_button.json new file mode 100644 index 0000000000..b169979470 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_button_inventory.json new file mode 100644 index 0000000000..ea72ed4ce5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_button_pressed.json new file mode 100644 index 0000000000..fe19f51084 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_bottom.json new file mode 100644 index 0000000000..f76e917fe8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/mahogany_door_bottom", + "top": "biomesoplenty:block/mahogany_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_bottom_hinge.json new file mode 100644 index 0000000000..db67fce26c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/mahogany_door_bottom", + "top": "biomesoplenty:block/mahogany_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_top.json new file mode 100644 index 0000000000..909f6a69ec --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/mahogany_door_bottom", + "top": "biomesoplenty:block/mahogany_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_top_hinge.json new file mode 100644 index 0000000000..796529cf96 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/mahogany_door_bottom", + "top": "biomesoplenty:block/mahogany_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate.json new file mode 100644 index 0000000000..9e5c7092fd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_open.json new file mode 100644 index 0000000000..cb03380f53 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_wall.json new file mode 100644 index 0000000000..4ad1d98c02 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_wall_open.json new file mode 100644 index 0000000000..1e7513ebc8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_inventory.json new file mode 100644 index 0000000000..e60c589dca --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_post.json new file mode 100644 index 0000000000..06cf55d1c4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_side.json new file mode 100644 index 0000000000..4a3c3d2dab --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_leaves.json new file mode 100644 index 0000000000..730fd2c8d8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/mahogany_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_log.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_log.json new file mode 100644 index 0000000000..c17f299f72 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/mahogany_log_top", + "side": "biomesoplenty:block/mahogany_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_planks.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_planks.json new file mode 100644 index 0000000000..68c875490f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_pressure_plate.json new file mode 100644 index 0000000000..3bfedef2d1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_pressure_plate_down.json new file mode 100644 index 0000000000..3a12ce9902 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_sapling.json new file mode 100644 index 0000000000..02bd959618 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/mahogany_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_sign.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_sign.json new file mode 100644 index 0000000000..b0fbcc4351 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_slab.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_slab.json new file mode 100644 index 0000000000..eb6d72c251 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/mahogany_planks", + "top": "biomesoplenty:block/mahogany_planks", + "side": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_slab_top.json new file mode 100644 index 0000000000..a6cdef448a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/mahogany_planks", + "top": "biomesoplenty:block/mahogany_planks", + "side": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs.json new file mode 100644 index 0000000000..0641162abe --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/mahogany_planks", + "top": "biomesoplenty:block/mahogany_planks", + "side": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs_inner.json new file mode 100644 index 0000000000..d2543e7bd0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/mahogany_planks", + "top": "biomesoplenty:block/mahogany_planks", + "side": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs_outer.json new file mode 100644 index 0000000000..984d5d205d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/mahogany_planks", + "top": "biomesoplenty:block/mahogany_planks", + "side": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_bottom.json new file mode 100644 index 0000000000..ba3430f06a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/mahogany_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_open.json new file mode 100644 index 0000000000..20f29d5221 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/mahogany_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_top.json new file mode 100644 index 0000000000..1677bdef09 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/mahogany_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_wood.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_wood.json new file mode 100644 index 0000000000..b7be0c7104 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/mahogany_log", + "side": "biomesoplenty:block/mahogany_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mangrove_root_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/mangrove_root_bottom.json new file mode 100644 index 0000000000..bec50453db --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mangrove_root_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/mangrove_root_bottom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mangrove_root_top.json b/src/main/resources/assets/biomesoplenty/models/block/mangrove_root_top.json new file mode 100644 index 0000000000..b56515f577 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mangrove_root_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/mangrove_root_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/maple_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/maple_leaves.json new file mode 100644 index 0000000000..a22820bacf --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/maple_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/maple_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/maple_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/maple_sapling.json new file mode 100644 index 0000000000..9a1d67a300 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/maple_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/maple_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud.json b/src/main/resources/assets/biomesoplenty/models/block/mud.json new file mode 100644 index 0000000000..0c121cc3fe --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/mud" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_slab.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_slab.json new file mode 100644 index 0000000000..6087af8e9e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/mud_bricks", + "top": "biomesoplenty:block/mud_bricks", + "side": "biomesoplenty:block/mud_bricks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_slab_top.json new file mode 100644 index 0000000000..20d4b4ac1e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/mud_bricks", + "top": "biomesoplenty:block/mud_bricks", + "side": "biomesoplenty:block/mud_bricks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs.json new file mode 100644 index 0000000000..9646fa3594 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/mud_bricks", + "top": "biomesoplenty:block/mud_bricks", + "side": "biomesoplenty:block/mud_bricks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs_inner.json new file mode 100644 index 0000000000..5c88b9c640 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/mud_bricks", + "top": "biomesoplenty:block/mud_bricks", + "side": "biomesoplenty:block/mud_bricks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs_outer.json new file mode 100644 index 0000000000..951a8db955 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/mud_bricks", + "top": "biomesoplenty:block/mud_bricks", + "side": "biomesoplenty:block/mud_bricks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_inventory.json new file mode 100644 index 0000000000..ca9e77e7b0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "biomesoplenty:block/mud_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_post.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_post.json new file mode 100644 index 0000000000..62b857e3a9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "biomesoplenty:block/mud_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_side.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_side.json new file mode 100644 index 0000000000..c50a7713da --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "biomesoplenty:block/mud_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_side_tall.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_side_tall.json new file mode 100644 index 0000000000..7ae4ffe0e5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "biomesoplenty:block/mud_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_bricks.json b/src/main/resources/assets/biomesoplenty/models/block/mud_bricks.json new file mode 100644 index 0000000000..eecc932741 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_bricks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/mud_bricks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/nether_crystal.json b/src/main/resources/assets/biomesoplenty/models/block/nether_crystal.json new file mode 100644 index 0000000000..14be2e86cc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/nether_crystal.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/nether_crystal" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/nether_crystal_block.json b/src/main/resources/assets/biomesoplenty/models/block/nether_crystal_block.json new file mode 100644 index 0000000000..e6aea3774f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/nether_crystal_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/nether_crystal_block" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_autumn_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/orange_autumn_leaves.json new file mode 100644 index 0000000000..3ab8b10799 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_autumn_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/orange_autumn_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/orange_autumn_sapling.json new file mode 100644 index 0000000000..9008e99d61 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_autumn_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/orange_autumn_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_cosmos.json b/src/main/resources/assets/biomesoplenty/models/block/orange_cosmos.json new file mode 100644 index 0000000000..d679075a30 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_cosmos.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/orange_cosmos" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sand.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sand.json new file mode 100644 index 0000000000..dc5bd60846 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/orange_sand" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone.json new file mode 100644 index 0000000000..384a219ba9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "block/cube_bottom_top", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_bottom", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_slab.json new file mode 100644 index 0000000000..5bdae15d23 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_bottom", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_slab_top.json new file mode 100644 index 0000000000..fa090bfac1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_bottom", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs.json new file mode 100644 index 0000000000..ad8006bf20 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_bottom", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs_inner.json new file mode 100644 index 0000000000..f832cc1f88 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_bottom", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs_outer.json new file mode 100644 index 0000000000..503712b3d6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_bottom", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_inventory.json new file mode 100644 index 0000000000..702344a762 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "biomesoplenty:block/orange_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_post.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_post.json new file mode 100644 index 0000000000..d6f748b4b6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "biomesoplenty:block/orange_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_side.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_side.json new file mode 100644 index 0000000000..92dfe74b62 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "biomesoplenty:block/orange_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_side_tall.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_side_tall.json new file mode 100644 index 0000000000..202275fba4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "biomesoplenty:block/orange_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/origin_grass_block.json b/src/main/resources/assets/biomesoplenty/models/block/origin_grass_block.json new file mode 100644 index 0000000000..4db37f1a0f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/origin_grass_block.json @@ -0,0 +1,21 @@ +{ "parent": "block/block", + "textures": { + "particle": "minecraft:block/dirt", + "bottom": "minecraft:block/dirt", + "top": "biomesoplenty:block/origin_grass_block_top", + "side": "biomesoplenty:block/origin_grass_block_side" + }, + "elements": [ + { "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#top", "cullface": "up" }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#side", "cullface": "north" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#side", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#side", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#side", "cullface": "east" } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/origin_grass_block_snow.json b/src/main/resources/assets/biomesoplenty/models/block/origin_grass_block_snow.json new file mode 100644 index 0000000000..b7846792ec --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/origin_grass_block_snow.json @@ -0,0 +1,9 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "biomesoplenty:block/origin_grass_block_top", + "bottom": "minecraft:block/dirt", + "side": "minecraft:block/grass_block_snow", + "particle": "minecraft:block/dirt" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/origin_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/origin_leaves.json new file mode 100644 index 0000000000..5e847b15bb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/origin_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/origin_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/origin_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/origin_sapling.json new file mode 100644 index 0000000000..4d8125868b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/origin_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/origin_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_button.json b/src/main/resources/assets/biomesoplenty/models/block/palm_button.json new file mode 100644 index 0000000000..78fc80d00c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/palm_button_inventory.json new file mode 100644 index 0000000000..9a1dc2a664 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/palm_button_pressed.json new file mode 100644 index 0000000000..8fa73e2e32 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/palm_door_bottom.json new file mode 100644 index 0000000000..8820b483f3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/palm_door_bottom", + "top": "biomesoplenty:block/palm_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/palm_door_bottom_hinge.json new file mode 100644 index 0000000000..3197daddf7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/palm_door_bottom", + "top": "biomesoplenty:block/palm_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/palm_door_top.json new file mode 100644 index 0000000000..56bc36e32f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/palm_door_bottom", + "top": "biomesoplenty:block/palm_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/palm_door_top_hinge.json new file mode 100644 index 0000000000..c573d7b4f8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/palm_door_bottom", + "top": "biomesoplenty:block/palm_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate.json new file mode 100644 index 0000000000..6509d121b0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_open.json new file mode 100644 index 0000000000..714911e03d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_wall.json new file mode 100644 index 0000000000..f28f532ac1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_wall_open.json new file mode 100644 index 0000000000..6d0e4982cd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_inventory.json new file mode 100644 index 0000000000..d54995fe33 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_post.json new file mode 100644 index 0000000000..13234a3c83 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_side.json new file mode 100644 index 0000000000..5c18da82b0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/palm_leaves.json new file mode 100644 index 0000000000..2ef4141470 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/palm_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_log.json b/src/main/resources/assets/biomesoplenty/models/block/palm_log.json new file mode 100644 index 0000000000..0dd816c0ac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/palm_log_top", + "side": "biomesoplenty:block/palm_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_planks.json b/src/main/resources/assets/biomesoplenty/models/block/palm_planks.json new file mode 100644 index 0000000000..5a40411378 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/palm_pressure_plate.json new file mode 100644 index 0000000000..c08f775714 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/palm_pressure_plate_down.json new file mode 100644 index 0000000000..ff3f98620f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/palm_sapling.json new file mode 100644 index 0000000000..6a8d88adda --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/palm_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_sign.json b/src/main/resources/assets/biomesoplenty/models/block/palm_sign.json new file mode 100644 index 0000000000..c1d1d1323a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_slab.json b/src/main/resources/assets/biomesoplenty/models/block/palm_slab.json new file mode 100644 index 0000000000..3da0bebaac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/palm_planks", + "top": "biomesoplenty:block/palm_planks", + "side": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/palm_slab_top.json new file mode 100644 index 0000000000..bd2d025796 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/palm_planks", + "top": "biomesoplenty:block/palm_planks", + "side": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/palm_stairs.json new file mode 100644 index 0000000000..4ddcc1baa9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/palm_planks", + "top": "biomesoplenty:block/palm_planks", + "side": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/palm_stairs_inner.json new file mode 100644 index 0000000000..9ab7104796 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/palm_planks", + "top": "biomesoplenty:block/palm_planks", + "side": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/palm_stairs_outer.json new file mode 100644 index 0000000000..b4ef5e9113 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/palm_planks", + "top": "biomesoplenty:block/palm_planks", + "side": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_bottom.json new file mode 100644 index 0000000000..00119e5416 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/palm_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_open.json new file mode 100644 index 0000000000..ef8b78214c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/palm_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_top.json new file mode 100644 index 0000000000..4971b06d9c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/palm_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_wood.json b/src/main/resources/assets/biomesoplenty/models/block/palm_wood.json new file mode 100644 index 0000000000..ac2bc4caba --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/palm_log", + "side": "biomesoplenty:block/palm_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/pink_cherry_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/pink_cherry_leaves.json new file mode 100644 index 0000000000..9b331dc078 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/pink_cherry_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/pink_cherry_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/pink_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/pink_cherry_sapling.json new file mode 100644 index 0000000000..158c8b72bd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/pink_cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/pink_cherry_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/pink_daffodil.json b/src/main/resources/assets/biomesoplenty/models/block/pink_daffodil.json new file mode 100644 index 0000000000..dbd4c85c3b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/pink_daffodil.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/pink_daffodil" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/pink_hibiscus.json b/src/main/resources/assets/biomesoplenty/models/block/pink_hibiscus.json new file mode 100644 index 0000000000..1505342b5b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/pink_hibiscus.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/pink_hibiscus" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_burning_blossom.json b/src/main/resources/assets/biomesoplenty/models/block/potted_burning_blossom.json new file mode 100644 index 0000000000..a8a139052e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_burning_blossom.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/burning_blossom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_clover.json b/src/main/resources/assets/biomesoplenty/models/block/potted_clover.json new file mode 100644 index 0000000000..3e768d032b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_clover.json @@ -0,0 +1,83 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "minecraft:block/flower_pot", + "flowerpot": "minecraft:block/flower_pot", + "dirt": "minecraft:block/dirt", + "plant": "biomesoplenty:block/clover_stem", + "planttop": "biomesoplenty:block/clover" + }, + "elements": [ + { "from": [ 5, 0, 5 ], + "to": [ 6, 6, 11 ], + "faces": { + "down": { "uv": [ 5, 5, 6, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 5, 5, 6, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 10, 10, 11, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 5, 10, 6, 16 ], "texture": "#flowerpot" }, + "west": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" }, + "east": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 10, 0, 5 ], + "to": [ 11, 6, 11 ], + "faces": { + "down": { "uv": [ 10, 5, 11, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 10, 5, 11, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 5, 10, 6, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 10, 10, 11, 16 ], "texture": "#flowerpot" }, + "west": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" }, + "east": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 5 ], + "to": [ 10, 6, 6 ], + "faces": { + "down": { "uv": [ 6, 10, 10, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 5, 10, 6 ], "texture": "#flowerpot" }, + "north": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 10 ], + "to": [ 10, 6, 11 ], + "faces": { + "down": { "uv": [ 6, 5, 10, 6 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 10, 10, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 6 ], + "to": [ 10, 4, 10 ], + "faces": { + "down": { "uv": [ 6, 6, 10, 10 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 6, 10, 10 ], "texture": "#dirt" } + } + }, + { + "from": [0, 9.3, 0], + "to": [16, 9.3, 16], + "faces": { + "up": {"uv": [0, 0, 16, 16], "texture": "#planttop", "tintindex": 0}, + "down": {"uv": [0, 0, 16, 16], "texture": "#planttop", "rotation": 270, "tintindex": 0} + } + }, + { "from": [ 2.6, 4, 8 ], + "to": [ 13.4, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 } + } + }, + { "from": [ 8, 4, 2.6 ], + "to": [ 8, 16, 13.4 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_dead_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_dead_sapling.json new file mode 100644 index 0000000000..67ed3ff35c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_dead_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/dead_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_fir_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_fir_sapling.json new file mode 100644 index 0000000000..7027c2f018 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_fir_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/fir_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_flowering_oak_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_flowering_oak_sapling.json new file mode 100644 index 0000000000..3e0bbd8da2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_flowering_oak_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/flowering_oak_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_glowflower.json b/src/main/resources/assets/biomesoplenty/models/block/potted_glowflower.json new file mode 100644 index 0000000000..f8cced96cc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_glowflower.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/glowflower" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_glowshroom.json b/src/main/resources/assets/biomesoplenty/models/block/potted_glowshroom.json new file mode 100644 index 0000000000..8c9e68bcc7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_glowshroom.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/potted_glowshroom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_hellbark_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_hellbark_sapling.json new file mode 100644 index 0000000000..8815d8fd27 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_hellbark_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/hellbark_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_jacaranda_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_jacaranda_sapling.json new file mode 100644 index 0000000000..d9d55c2647 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_jacaranda_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/jacaranda_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_lavender.json b/src/main/resources/assets/biomesoplenty/models/block/potted_lavender.json new file mode 100644 index 0000000000..a798f24554 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_lavender.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/potted_lavender" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_magic_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_magic_sapling.json new file mode 100644 index 0000000000..9b82590df9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_magic_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/magic_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_mahogany_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_mahogany_sapling.json new file mode 100644 index 0000000000..8e051d9406 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_mahogany_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/mahogany_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_maple_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_maple_sapling.json new file mode 100644 index 0000000000..8955dfce5b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_maple_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/maple_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_orange_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_orange_autumn_sapling.json new file mode 100644 index 0000000000..1da1e8a013 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_orange_autumn_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/orange_autumn_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_orange_cosmos.json b/src/main/resources/assets/biomesoplenty/models/block/potted_orange_cosmos.json new file mode 100644 index 0000000000..2d488db9e3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_orange_cosmos.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/orange_cosmos" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_origin_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_origin_sapling.json new file mode 100644 index 0000000000..dbbc8eccfc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_origin_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/origin_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_palm_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_palm_sapling.json new file mode 100644 index 0000000000..f1e8344c0f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_palm_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/palm_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_pink_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_pink_cherry_sapling.json new file mode 100644 index 0000000000..63d8094928 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_pink_cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/pink_cherry_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_pink_daffodil.json b/src/main/resources/assets/biomesoplenty/models/block/potted_pink_daffodil.json new file mode 100644 index 0000000000..68710f51c8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_pink_daffodil.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/pink_daffodil" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_pink_hibiscus.json b/src/main/resources/assets/biomesoplenty/models/block/potted_pink_hibiscus.json new file mode 100644 index 0000000000..34fe5bc7c5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_pink_hibiscus.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/pink_hibiscus" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_rainbow_birch_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_rainbow_birch_sapling.json new file mode 100644 index 0000000000..0ff895a380 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_rainbow_birch_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/rainbow_birch_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_redwood_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_redwood_sapling.json new file mode 100644 index 0000000000..5b0ec1604e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_redwood_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/redwood_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_rose.json b/src/main/resources/assets/biomesoplenty/models/block/potted_rose.json new file mode 100644 index 0000000000..7c91f955f5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_rose.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/rose" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_sprout.json b/src/main/resources/assets/biomesoplenty/models/block/potted_sprout.json new file mode 100644 index 0000000000..02979defcb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_sprout.json @@ -0,0 +1,74 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "minecraft:block/flower_pot", + "flowerpot": "minecraft:block/flower_pot", + "dirt": "minecraft:block/dirt", + "plant": "biomesoplenty:block/potted_sprout" + }, + "elements": [ + { "from": [ 5, 0, 5 ], + "to": [ 6, 6, 11 ], + "faces": { + "down": { "uv": [ 5, 5, 6, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 5, 5, 6, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 10, 10, 11, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 5, 10, 6, 16 ], "texture": "#flowerpot" }, + "west": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" }, + "east": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 10, 0, 5 ], + "to": [ 11, 6, 11 ], + "faces": { + "down": { "uv": [ 10, 5, 11, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 10, 5, 11, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 5, 10, 6, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 10, 10, 11, 16 ], "texture": "#flowerpot" }, + "west": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" }, + "east": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 5 ], + "to": [ 10, 6, 6 ], + "faces": { + "down": { "uv": [ 6, 10, 10, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 5, 10, 6 ], "texture": "#flowerpot" }, + "north": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 10 ], + "to": [ 10, 6, 11 ], + "faces": { + "down": { "uv": [ 6, 5, 10, 6 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 10, 10, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 6 ], + "to": [ 10, 4, 10 ], + "faces": { + "down": { "uv": [ 6, 6, 10, 10 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 6, 10, 10 ], "texture": "#dirt" } + } + }, + { "from": [ 2.6, 4, 8 ], + "to": [ 13.4, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 } + } + }, + { "from": [ 8, 4, 2.6 ], + "to": [ 8, 16, 13.4 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_toadstool.json b/src/main/resources/assets/biomesoplenty/models/block/potted_toadstool.json new file mode 100644 index 0000000000..6cfcebb510 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_toadstool.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/toadstool" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_umbran_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_umbran_sapling.json new file mode 100644 index 0000000000..3d85ed1f08 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_umbran_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/umbran_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_violet.json b/src/main/resources/assets/biomesoplenty/models/block/potted_violet.json new file mode 100644 index 0000000000..6eaccc0c2d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_violet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/potted_violet" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_white_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_white_cherry_sapling.json new file mode 100644 index 0000000000..001dce02af --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_white_cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/white_cherry_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_wildflower.json b/src/main/resources/assets/biomesoplenty/models/block/potted_wildflower.json new file mode 100644 index 0000000000..bf9c00782d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_wildflower.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/wildflower" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_willow_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_willow_sapling.json new file mode 100644 index 0000000000..6941312d5a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_willow_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/willow_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_wilted_lily.json b/src/main/resources/assets/biomesoplenty/models/block/potted_wilted_lily.json new file mode 100644 index 0000000000..9aabcbcf49 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_wilted_lily.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/wilted_lily" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_yellow_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_yellow_autumn_sapling.json new file mode 100644 index 0000000000..2abf81ba62 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_yellow_autumn_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/yellow_autumn_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_leaves.json new file mode 100644 index 0000000000..f302908079 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "minecraft:block/birch_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_leaves_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_leaves_inventory.json new file mode 100644 index 0000000000..c2abdb9ae4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_leaves_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/rainbow_birch_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_sapling.json new file mode 100644 index 0000000000..86b8c35616 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/rainbow_birch_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_button.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_button.json new file mode 100644 index 0000000000..d8e66f0ca5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_button_inventory.json new file mode 100644 index 0000000000..d0e0203046 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_button_pressed.json new file mode 100644 index 0000000000..95dc36c540 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_door_bottom.json new file mode 100644 index 0000000000..c576b9fd84 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/redwood_door_bottom", + "top": "biomesoplenty:block/redwood_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_door_bottom_hinge.json new file mode 100644 index 0000000000..38c5eb1724 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/redwood_door_bottom", + "top": "biomesoplenty:block/redwood_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_door_top.json new file mode 100644 index 0000000000..88b45bd016 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/redwood_door_bottom", + "top": "biomesoplenty:block/redwood_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_door_top_hinge.json new file mode 100644 index 0000000000..853cbb9ae1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/redwood_door_bottom", + "top": "biomesoplenty:block/redwood_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate.json new file mode 100644 index 0000000000..c7804031a1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_open.json new file mode 100644 index 0000000000..d35695574b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_wall.json new file mode 100644 index 0000000000..6c461f03f1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_wall_open.json new file mode 100644 index 0000000000..3066c3381c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_inventory.json new file mode 100644 index 0000000000..8999931055 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_post.json new file mode 100644 index 0000000000..cd3dd2f926 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_side.json new file mode 100644 index 0000000000..8c597d3ef7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_leaves.json new file mode 100644 index 0000000000..6778689d0d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/redwood_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_log.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_log.json new file mode 100644 index 0000000000..795cb0317b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/redwood_log_top", + "side": "biomesoplenty:block/redwood_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_planks.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_planks.json new file mode 100644 index 0000000000..267ac72085 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_pressure_plate.json new file mode 100644 index 0000000000..37249f9e59 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_pressure_plate_down.json new file mode 100644 index 0000000000..f03d2fd782 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_sapling.json new file mode 100644 index 0000000000..9cd1ea1fdc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/redwood_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_sign.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_sign.json new file mode 100644 index 0000000000..03ccf517ec --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_slab.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_slab.json new file mode 100644 index 0000000000..8db8a6bb4c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/redwood_planks", + "top": "biomesoplenty:block/redwood_planks", + "side": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_slab_top.json new file mode 100644 index 0000000000..976bb9d937 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/redwood_planks", + "top": "biomesoplenty:block/redwood_planks", + "side": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs.json new file mode 100644 index 0000000000..8d417593d2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/redwood_planks", + "top": "biomesoplenty:block/redwood_planks", + "side": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs_inner.json new file mode 100644 index 0000000000..7966a1a466 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/redwood_planks", + "top": "biomesoplenty:block/redwood_planks", + "side": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs_outer.json new file mode 100644 index 0000000000..6d3045d612 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/redwood_planks", + "top": "biomesoplenty:block/redwood_planks", + "side": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_bottom.json new file mode 100644 index 0000000000..57998097e6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/redwood_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_open.json new file mode 100644 index 0000000000..9d570bfc16 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/redwood_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_top.json new file mode 100644 index 0000000000..70bf80d9bb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/redwood_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_wood.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_wood.json new file mode 100644 index 0000000000..5230ad85e7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/redwood_log", + "side": "biomesoplenty:block/redwood_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/reed_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/reed_bottom.json new file mode 100644 index 0000000000..1d75a622e0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/reed_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/reed_bottom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/reed_top.json b/src/main/resources/assets/biomesoplenty/models/block/reed_top.json new file mode 100644 index 0000000000..3aa075d1ae --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/reed_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/reed_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/rose.json b/src/main/resources/assets/biomesoplenty/models/block/rose.json new file mode 100644 index 0000000000..11bb2a1bae --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/rose.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/rose" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone.json new file mode 100644 index 0000000000..52d800928e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/black_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_slab.json new file mode 100644 index 0000000000..734d13763b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_top", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_slab_top.json new file mode 100644 index 0000000000..bc8d905c20 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_top", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs.json new file mode 100644 index 0000000000..e3cb19d044 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_top", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs_inner.json new file mode 100644 index 0000000000..cfc609c436 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_top", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs_outer.json new file mode 100644 index 0000000000..262b0f79d1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_top", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone.json new file mode 100644 index 0000000000..8fb8f50600 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/orange_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_slab.json new file mode 100644 index 0000000000..a145f00352 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_top", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_slab_top.json new file mode 100644 index 0000000000..f6d6d8cf5b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_top", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs.json new file mode 100644 index 0000000000..9acb61d19c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_top", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs_inner.json new file mode 100644 index 0000000000..b9dda35768 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_top", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs_outer.json new file mode 100644 index 0000000000..14c5565699 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_top", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone.json new file mode 100644 index 0000000000..cccdc4019d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/white_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_slab.json new file mode 100644 index 0000000000..d2f414168e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_top", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_slab_top.json new file mode 100644 index 0000000000..e6845efd7a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_top", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs.json new file mode 100644 index 0000000000..bcd88f0f38 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_top", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs_inner.json new file mode 100644 index 0000000000..8a57baabf1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_top", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs_outer.json new file mode 100644 index 0000000000..f7fc574c48 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_top", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/spanish_moss.json b/src/main/resources/assets/biomesoplenty/models/block/spanish_moss.json new file mode 100644 index 0000000000..9f649a0452 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/spanish_moss.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "biomesoplenty:block/spanish_moss" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/spanish_moss_plant.json b/src/main/resources/assets/biomesoplenty/models/block/spanish_moss_plant.json new file mode 100644 index 0000000000..f4f2f992cd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/spanish_moss_plant.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "biomesoplenty:block/spanish_moss_plant" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/sprout.json b/src/main/resources/assets/biomesoplenty/models/block/sprout.json new file mode 100644 index 0000000000..273e9b8971 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/sprout.json @@ -0,0 +1,6 @@ +{ + "parent": "block/tinted_cross", + "textures": { + "cross": "biomesoplenty:block/sprout" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_cherry_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_cherry_log.json new file mode 100644 index 0000000000..74d014470a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_cherry_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_cherry_log_top", + "side": "biomesoplenty:block/stripped_cherry_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_cherry_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_cherry_wood.json new file mode 100644 index 0000000000..17830615c9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_cherry_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_cherry_log", + "side": "biomesoplenty:block/stripped_cherry_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_dead_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_dead_log.json new file mode 100644 index 0000000000..686937e72a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_dead_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_dead_log_top", + "side": "biomesoplenty:block/stripped_dead_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_dead_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_dead_wood.json new file mode 100644 index 0000000000..1b25b82633 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_dead_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_dead_log", + "side": "biomesoplenty:block/stripped_dead_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_fir_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_fir_log.json new file mode 100644 index 0000000000..68da36ca12 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_fir_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_fir_log_top", + "side": "biomesoplenty:block/stripped_fir_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_fir_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_fir_wood.json new file mode 100644 index 0000000000..8b9df7eb39 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_fir_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_fir_log", + "side": "biomesoplenty:block/stripped_fir_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_hellbark_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_hellbark_log.json new file mode 100644 index 0000000000..4cc7ef9707 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_hellbark_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_hellbark_log_top", + "side": "biomesoplenty:block/stripped_hellbark_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_hellbark_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_hellbark_wood.json new file mode 100644 index 0000000000..0511b97401 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_hellbark_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_hellbark_log", + "side": "biomesoplenty:block/stripped_hellbark_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_jacaranda_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_jacaranda_log.json new file mode 100644 index 0000000000..6f516ea986 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_jacaranda_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_jacaranda_log_top", + "side": "biomesoplenty:block/stripped_jacaranda_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_jacaranda_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_jacaranda_wood.json new file mode 100644 index 0000000000..98a019780b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_jacaranda_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_jacaranda_log", + "side": "biomesoplenty:block/stripped_jacaranda_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_magic_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_magic_log.json new file mode 100644 index 0000000000..dbca1595f0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_magic_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_magic_log_top", + "side": "biomesoplenty:block/stripped_magic_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_magic_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_magic_wood.json new file mode 100644 index 0000000000..8ca31a9a2e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_magic_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_magic_log", + "side": "biomesoplenty:block/stripped_magic_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_mahogany_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_mahogany_log.json new file mode 100644 index 0000000000..940bb5415f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_mahogany_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_mahogany_log_top", + "side": "biomesoplenty:block/stripped_mahogany_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_mahogany_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_mahogany_wood.json new file mode 100644 index 0000000000..c1884c65ea --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_mahogany_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_mahogany_log", + "side": "biomesoplenty:block/stripped_mahogany_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_palm_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_palm_log.json new file mode 100644 index 0000000000..d552c2619c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_palm_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_palm_log_top", + "side": "biomesoplenty:block/stripped_palm_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_palm_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_palm_wood.json new file mode 100644 index 0000000000..6f6c1ec667 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_palm_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_palm_log", + "side": "biomesoplenty:block/stripped_palm_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_redwood_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_redwood_log.json new file mode 100644 index 0000000000..0646b57a63 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_redwood_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_redwood_log_top", + "side": "biomesoplenty:block/stripped_redwood_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_redwood_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_redwood_wood.json new file mode 100644 index 0000000000..6c46627024 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_redwood_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_redwood_log", + "side": "biomesoplenty:block/stripped_redwood_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_umbran_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_umbran_log.json new file mode 100644 index 0000000000..dbe9378791 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_umbran_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_umbran_log_top", + "side": "biomesoplenty:block/stripped_umbran_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_umbran_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_umbran_wood.json new file mode 100644 index 0000000000..34fe6f81f0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_umbran_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_umbran_log", + "side": "biomesoplenty:block/stripped_umbran_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_willow_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_willow_log.json new file mode 100644 index 0000000000..49f3f56629 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_willow_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_willow_log_top", + "side": "biomesoplenty:block/stripped_willow_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_willow_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_willow_wood.json new file mode 100644 index 0000000000..b78acd6611 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_willow_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_willow_log", + "side": "biomesoplenty:block/stripped_willow_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/toadstool.json b/src/main/resources/assets/biomesoplenty/models/block/toadstool.json new file mode 100644 index 0000000000..0eaab390f0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/toadstool.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/toadstool" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/toadstool_block.json b/src/main/resources/assets/biomesoplenty/models/block/toadstool_block.json new file mode 100644 index 0000000000..ab2121dbf3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/toadstool_block.json @@ -0,0 +1,14 @@ +{ + "textures": { + "texture": "biomesoplenty:block/toadstool_block", + "particle": "biomesoplenty:block/toadstool_block" + }, + "elements": [ + { "from": [ 0, 0, 0 ], + "to": [ 16, 16, 0 ], + "faces": { + "north": { "texture": "#texture", "cullface":"north" } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/toadstool_block_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/toadstool_block_inventory.json new file mode 100644 index 0000000000..a6ad2c2f7b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/toadstool_block_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/toadstool_block" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_button.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_button.json new file mode 100644 index 0000000000..c4571a3970 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_button_inventory.json new file mode 100644 index 0000000000..e0bf5199e6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_button_pressed.json new file mode 100644 index 0000000000..66f898c65e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_door_bottom.json new file mode 100644 index 0000000000..a6bb68c91b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/umbran_door_bottom", + "top": "biomesoplenty:block/umbran_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_door_bottom_hinge.json new file mode 100644 index 0000000000..87d100a612 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/umbran_door_bottom", + "top": "biomesoplenty:block/umbran_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_door_top.json new file mode 100644 index 0000000000..274dc47173 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/umbran_door_bottom", + "top": "biomesoplenty:block/umbran_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_door_top_hinge.json new file mode 100644 index 0000000000..f147a4244d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/umbran_door_bottom", + "top": "biomesoplenty:block/umbran_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate.json new file mode 100644 index 0000000000..f56305f492 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_open.json new file mode 100644 index 0000000000..a52e9fa643 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_wall.json new file mode 100644 index 0000000000..eae961eb74 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_wall_open.json new file mode 100644 index 0000000000..78d5c269f7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_inventory.json new file mode 100644 index 0000000000..dfeb3e4491 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_post.json new file mode 100644 index 0000000000..c686283cac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_side.json new file mode 100644 index 0000000000..14b2b00688 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_leaves.json new file mode 100644 index 0000000000..c4cff42437 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/umbran_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_log.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_log.json new file mode 100644 index 0000000000..244baed4b6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/umbran_log_top", + "side": "biomesoplenty:block/umbran_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_log_holes.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_log_holes.json new file mode 100644 index 0000000000..70af6923fe --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_log_holes.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/umbran_log_top", + "side": "biomesoplenty:block/umbran_log_holes" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_planks.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_planks.json new file mode 100644 index 0000000000..98c757cf3d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_pressure_plate.json new file mode 100644 index 0000000000..2934788967 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_pressure_plate_down.json new file mode 100644 index 0000000000..34b2276a8b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_sapling.json new file mode 100644 index 0000000000..730d7781b6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/umbran_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_sign.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_sign.json new file mode 100644 index 0000000000..6d6cfa6946 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_slab.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_slab.json new file mode 100644 index 0000000000..f04670686d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/umbran_planks", + "top": "biomesoplenty:block/umbran_planks", + "side": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_slab_top.json new file mode 100644 index 0000000000..d450d47ff4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/umbran_planks", + "top": "biomesoplenty:block/umbran_planks", + "side": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs.json new file mode 100644 index 0000000000..262f69e8e3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/umbran_planks", + "top": "biomesoplenty:block/umbran_planks", + "side": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs_inner.json new file mode 100644 index 0000000000..814da92204 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/umbran_planks", + "top": "biomesoplenty:block/umbran_planks", + "side": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs_outer.json new file mode 100644 index 0000000000..e94fc82034 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/umbran_planks", + "top": "biomesoplenty:block/umbran_planks", + "side": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_bottom.json new file mode 100644 index 0000000000..5db368061a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/umbran_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_open.json new file mode 100644 index 0000000000..e05b9c0892 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/umbran_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_top.json new file mode 100644 index 0000000000..4cd157478b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/umbran_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_wood.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_wood.json new file mode 100644 index 0000000000..8d6167b3a8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/umbran_log", + "side": "biomesoplenty:block/umbran_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_wood_holes.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_wood_holes.json new file mode 100644 index 0000000000..f5d2738541 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_wood_holes.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/umbran_log_holes", + "side": "biomesoplenty:block/umbran_log_holes" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/violet.json b/src/main/resources/assets/biomesoplenty/models/block/violet.json new file mode 100644 index 0000000000..871d415325 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/violet.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/violet" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/watergrass_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/watergrass_bottom.json new file mode 100644 index 0000000000..439914b1b5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/watergrass_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/tinted_cross", + "textures": { + "cross": "minecraft:block/tall_grass_bottom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/watergrass_top.json b/src/main/resources/assets/biomesoplenty/models/block/watergrass_top.json new file mode 100644 index 0000000000..8c8b1bce76 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/watergrass_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/tinted_cross", + "textures": { + "cross": "minecraft:block/tall_grass_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_cherry_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/white_cherry_leaves.json new file mode 100644 index 0000000000..bd14709e3f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_cherry_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/white_cherry_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/white_cherry_sapling.json new file mode 100644 index 0000000000..ef1d790da7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/white_cherry_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sand.json b/src/main/resources/assets/biomesoplenty/models/block/white_sand.json new file mode 100644 index 0000000000..b0ebedcc13 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/white_sand" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone.json new file mode 100644 index 0000000000..82d9dc53cb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "block/cube_bottom_top", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_bottom", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_slab.json new file mode 100644 index 0000000000..0dc002d629 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_bottom", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_slab_top.json new file mode 100644 index 0000000000..aacf693da4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_bottom", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs.json new file mode 100644 index 0000000000..8c1ddc91b5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_bottom", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs_inner.json new file mode 100644 index 0000000000..371a42e01c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_bottom", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs_outer.json new file mode 100644 index 0000000000..60811a0982 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_bottom", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_inventory.json new file mode 100644 index 0000000000..fb538da1a7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "biomesoplenty:block/white_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_post.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_post.json new file mode 100644 index 0000000000..d1ad829565 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "biomesoplenty:block/white_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_side.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_side.json new file mode 100644 index 0000000000..95b7ce91ce --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "biomesoplenty:block/white_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_side_tall.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_side_tall.json new file mode 100644 index 0000000000..5fbaf90e3f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "biomesoplenty:block/white_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/wildflower.json b/src/main/resources/assets/biomesoplenty/models/block/wildflower.json new file mode 100644 index 0000000000..8cf012ac5a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/wildflower.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/wildflower" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_button.json b/src/main/resources/assets/biomesoplenty/models/block/willow_button.json new file mode 100644 index 0000000000..9024e7ba0f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/willow_button_inventory.json new file mode 100644 index 0000000000..fee79b32da --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/willow_button_pressed.json new file mode 100644 index 0000000000..597d5f611e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/willow_door_bottom.json new file mode 100644 index 0000000000..faa902a14e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/willow_door_bottom", + "top": "biomesoplenty:block/willow_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/willow_door_bottom_hinge.json new file mode 100644 index 0000000000..7475c97d40 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/willow_door_bottom", + "top": "biomesoplenty:block/willow_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/willow_door_top.json new file mode 100644 index 0000000000..cc216c02d8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/willow_door_bottom", + "top": "biomesoplenty:block/willow_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/willow_door_top_hinge.json new file mode 100644 index 0000000000..6e218d6025 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/willow_door_bottom", + "top": "biomesoplenty:block/willow_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate.json new file mode 100644 index 0000000000..072fa36fce --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_open.json new file mode 100644 index 0000000000..506df3523f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_wall.json new file mode 100644 index 0000000000..3d267e9b82 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_wall_open.json new file mode 100644 index 0000000000..cd57eac54a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_inventory.json new file mode 100644 index 0000000000..b7b6d4e84d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_post.json new file mode 100644 index 0000000000..eac75a8f18 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_side.json new file mode 100644 index 0000000000..055175ebb0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/willow_leaves.json new file mode 100644 index 0000000000..a57991ba47 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/willow_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_log.json b/src/main/resources/assets/biomesoplenty/models/block/willow_log.json new file mode 100644 index 0000000000..626848a401 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/willow_log_top", + "side": "biomesoplenty:block/willow_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_planks.json b/src/main/resources/assets/biomesoplenty/models/block/willow_planks.json new file mode 100644 index 0000000000..83fc983d2e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/willow_pressure_plate.json new file mode 100644 index 0000000000..984d343eff --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/willow_pressure_plate_down.json new file mode 100644 index 0000000000..580353f6ca --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/willow_sapling.json new file mode 100644 index 0000000000..4e95b59977 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/willow_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_sign.json b/src/main/resources/assets/biomesoplenty/models/block/willow_sign.json new file mode 100644 index 0000000000..1b23f61069 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_slab.json b/src/main/resources/assets/biomesoplenty/models/block/willow_slab.json new file mode 100644 index 0000000000..b45b4d601f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/willow_planks", + "top": "biomesoplenty:block/willow_planks", + "side": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/willow_slab_top.json new file mode 100644 index 0000000000..3e301e3f5a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/willow_planks", + "top": "biomesoplenty:block/willow_planks", + "side": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/willow_stairs.json new file mode 100644 index 0000000000..0c8ef93bf2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/willow_planks", + "top": "biomesoplenty:block/willow_planks", + "side": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/willow_stairs_inner.json new file mode 100644 index 0000000000..156db4bc04 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/willow_planks", + "top": "biomesoplenty:block/willow_planks", + "side": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/willow_stairs_outer.json new file mode 100644 index 0000000000..c3d9c04015 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/willow_planks", + "top": "biomesoplenty:block/willow_planks", + "side": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_bottom.json new file mode 100644 index 0000000000..988c692c4a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/willow_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_open.json new file mode 100644 index 0000000000..5d358e7a64 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/willow_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_top.json new file mode 100644 index 0000000000..f96d1262dd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/willow_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_1.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_1.json new file mode 100644 index 0000000000..f2ffd40639 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_1.json @@ -0,0 +1,17 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0, 0, 15.2 ], + "to": [ 16, 16, 15.2 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_1u.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_1u.json new file mode 100644 index 0000000000..56c0a83991 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_1u.json @@ -0,0 +1,26 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0, 15.2, 0 ], + "to": [ 16, 15.2, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 15.2 ], + "to": [ 16, 16, 15.2 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} + diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2.json new file mode 100644 index 0000000000..23d00ffe8c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2.json @@ -0,0 +1,25 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0, 0, 0.8 ], + "to": [ 16, 16, 0.8 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 15.2, 0, 0 ], + "to": [ 15.2, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2_opposite.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2_opposite.json new file mode 100644 index 0000000000..a27af2194e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2_opposite.json @@ -0,0 +1,25 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 15.2, 0, 0 ], + "to": [ 15.2, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0.8, 0, 0 ], + "to": [ 0.8, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2u.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2u.json new file mode 100644 index 0000000000..da7e45dbb9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2u.json @@ -0,0 +1,34 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0, 15.2, 0 ], + "to": [ 16, 15.2, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 0.8 ], + "to": [ 16, 16, 0.8 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 15.2, 0, 0 ], + "to": [ 15.2, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} + diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2u_opposite.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2u_opposite.json new file mode 100644 index 0000000000..610d551e44 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2u_opposite.json @@ -0,0 +1,34 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0, 15.2, 0 ], + "to": [ 16, 15.2, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 15.2, 0, 0 ], + "to": [ 15.2, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0.8, 0, 0 ], + "to": [ 0.8, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} + diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_3.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_3.json new file mode 100644 index 0000000000..20296bad6a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_3.json @@ -0,0 +1,34 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 15.2, 0, 0 ], + "to": [ 15.2, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 15.2 ], + "to": [ 16, 16, 15.2 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 0.8 ], + "to": [ 16, 16, 0.8 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} + diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_3u.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_3u.json new file mode 100644 index 0000000000..9837aa36a8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_3u.json @@ -0,0 +1,41 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0, 15.2, 0 ], + "to": [ 16, 15.2, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 15.2, 0, 0 ], + "to": [ 15.2, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 15.2 ], + "to": [ 16, 16, 15.2 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 0.8 ], + "to": [ 16, 16, 0.8 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_4.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_4.json new file mode 100644 index 0000000000..f64e13adb6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_4.json @@ -0,0 +1,41 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0.8, 0, 0 ], + "to": [ 0.8, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 15.2, 0, 0 ], + "to": [ 15.2, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 15.2 ], + "to": [ 16, 16, 15.2 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 0.8 ], + "to": [ 16, 16, 0.8 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_4u.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_4u.json new file mode 100644 index 0000000000..846519d50a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_4u.json @@ -0,0 +1,49 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0, 15.2, 0 ], + "to": [ 16, 15.2, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0.8, 0, 0 ], + "to": [ 0.8, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 15.2, 0, 0 ], + "to": [ 15.2, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 15.2 ], + "to": [ 16, 16, 15.2 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 0.8 ], + "to": [ 16, 16, 0.8 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_u.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_u.json new file mode 100644 index 0000000000..a93c313572 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_u.json @@ -0,0 +1,17 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0, 15.2, 0 ], + "to": [ 16, 15.2, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_wood.json b/src/main/resources/assets/biomesoplenty/models/block/willow_wood.json new file mode 100644 index 0000000000..88cbbd3915 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/willow_log", + "side": "biomesoplenty:block/willow_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/wilted_lily.json b/src/main/resources/assets/biomesoplenty/models/block/wilted_lily.json new file mode 100644 index 0000000000..9662c7f28c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/wilted_lily.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/wilted_lily" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/yellow_autumn_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/yellow_autumn_leaves.json new file mode 100644 index 0000000000..26ffc41d75 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/yellow_autumn_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/yellow_autumn_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/yellow_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/yellow_autumn_sapling.json new file mode 100644 index 0000000000..73365a1cfd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/yellow_autumn_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/yellow_autumn_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/barley.json b/src/main/resources/assets/biomesoplenty/models/item/barley.json new file mode 100644 index 0000000000..b8986d28c9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/barley.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/barley_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/black_sand.json b/src/main/resources/assets/biomesoplenty/models/item/black_sand.json new file mode 100644 index 0000000000..ba6b836d6c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/black_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/black_sand" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/black_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/black_sandstone.json new file mode 100644 index 0000000000..20a0caa510 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/black_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/black_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_slab.json new file mode 100644 index 0000000000..7cfef962f8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/black_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_stairs.json new file mode 100644 index 0000000000..8db3bb764e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/black_sandstone_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_wall.json b/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_wall.json new file mode 100644 index 0000000000..0e1aa53c56 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/black_sandstone_wall_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/blue_hydrangea.json b/src/main/resources/assets/biomesoplenty/models/item/blue_hydrangea.json new file mode 100644 index 0000000000..647c3d9f80 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/blue_hydrangea.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/blue_hydrangea_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/bop_icon.json b/src/main/resources/assets/biomesoplenty/models/item/bop_icon.json new file mode 100644 index 0000000000..ab11fa5e46 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/bop_icon.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/bop_icon" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/bramble.json b/src/main/resources/assets/biomesoplenty/models/item/bramble.json new file mode 100644 index 0000000000..3ef0870290 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/bramble.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/bramble" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/burning_blossom.json b/src/main/resources/assets/biomesoplenty/models/item/burning_blossom.json new file mode 100644 index 0000000000..7a18b0596d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/burning_blossom.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/burning_blossom" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/bush.json b/src/main/resources/assets/biomesoplenty/models/item/bush.json new file mode 100644 index 0000000000..5a09ecbfa8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/bush.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/bush" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/cattail.json b/src/main/resources/assets/biomesoplenty/models/item/cattail.json new file mode 100644 index 0000000000..d32a14624b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cattail.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/cattail" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_boat.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_boat.json new file mode 100644 index 0000000000..7faa3d5ff7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/cherry_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_button.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_button.json new file mode 100644 index 0000000000..9b59695b81 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_door.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_door.json new file mode 100644 index 0000000000..b86e33a373 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/cherry_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_fence.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_fence.json new file mode 100644 index 0000000000..0ea26d8f67 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_fence_gate.json new file mode 100644 index 0000000000..06774a14e1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_log.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_log.json new file mode 100644 index 0000000000..36e3016854 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_planks.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_planks.json new file mode 100644 index 0000000000..9cace5b30c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_pressure_plate.json new file mode 100644 index 0000000000..a178a8f40e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_sign.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_sign.json new file mode 100644 index 0000000000..f08422c9d3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/cherry_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_slab.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_slab.json new file mode 100644 index 0000000000..17c5326176 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_stairs.json new file mode 100644 index 0000000000..5e2021f5cf --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_trapdoor.json new file mode 100644 index 0000000000..d35a54a903 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_wood.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_wood.json new file mode 100644 index 0000000000..bb1e88cc8a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/chiseled_black_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/chiseled_black_sandstone.json new file mode 100644 index 0000000000..c884df1e13 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/chiseled_black_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/chiseled_black_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/chiseled_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/chiseled_orange_sandstone.json new file mode 100644 index 0000000000..85514370dc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/chiseled_orange_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/chiseled_orange_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/chiseled_white_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/chiseled_white_sandstone.json new file mode 100644 index 0000000000..7bb01e6de8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/chiseled_white_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/chiseled_white_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/clover.json b/src/main/resources/assets/biomesoplenty/models/item/clover.json new file mode 100644 index 0000000000..6bf0a0cd18 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/clover.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/clover" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/cut_black_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/cut_black_sandstone.json new file mode 100644 index 0000000000..527f6ac5f0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cut_black_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cut_black_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cut_black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/cut_black_sandstone_slab.json new file mode 100644 index 0000000000..d73b7e8ee3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cut_black_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cut_black_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cut_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/cut_orange_sandstone.json new file mode 100644 index 0000000000..b638a29bdc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cut_orange_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cut_orange_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cut_orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/cut_orange_sandstone_slab.json new file mode 100644 index 0000000000..3e98c65676 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cut_orange_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cut_orange_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cut_white_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/cut_white_sandstone.json new file mode 100644 index 0000000000..cdbcfb1b7a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cut_white_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cut_white_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cut_white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/cut_white_sandstone_slab.json new file mode 100644 index 0000000000..b02e6847d7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cut_white_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cut_white_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_boat.json b/src/main/resources/assets/biomesoplenty/models/item/dead_boat.json new file mode 100644 index 0000000000..dee43e7ea4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/dead_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_branch.json b/src/main/resources/assets/biomesoplenty/models/item/dead_branch.json new file mode 100644 index 0000000000..f48b140f39 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_branch.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/dead_branch" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_button.json b/src/main/resources/assets/biomesoplenty/models/item/dead_button.json new file mode 100644 index 0000000000..237e7fe874 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_door.json b/src/main/resources/assets/biomesoplenty/models/item/dead_door.json new file mode 100644 index 0000000000..cabb002dd6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/dead_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_fence.json b/src/main/resources/assets/biomesoplenty/models/item/dead_fence.json new file mode 100644 index 0000000000..8b516cc9e4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/dead_fence_gate.json new file mode 100644 index 0000000000..30560b59b9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_grass.json b/src/main/resources/assets/biomesoplenty/models/item/dead_grass.json new file mode 100644 index 0000000000..057a5c3d5b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_grass.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/dead_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/dead_leaves.json new file mode 100644 index 0000000000..0b08389806 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_log.json b/src/main/resources/assets/biomesoplenty/models/item/dead_log.json new file mode 100644 index 0000000000..313c4fc4b6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_planks.json b/src/main/resources/assets/biomesoplenty/models/item/dead_planks.json new file mode 100644 index 0000000000..83ec6a3cae --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/dead_pressure_plate.json new file mode 100644 index 0000000000..763b668921 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/dead_sapling.json new file mode 100644 index 0000000000..fd207b0e74 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/dead_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_sign.json b/src/main/resources/assets/biomesoplenty/models/item/dead_sign.json new file mode 100644 index 0000000000..1000407f81 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/dead_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_slab.json b/src/main/resources/assets/biomesoplenty/models/item/dead_slab.json new file mode 100644 index 0000000000..f8931df4c4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/dead_stairs.json new file mode 100644 index 0000000000..6d651cc223 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/dead_trapdoor.json new file mode 100644 index 0000000000..39749e81ae --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_wood.json b/src/main/resources/assets/biomesoplenty/models/item/dead_wood.json new file mode 100644 index 0000000000..b74c7f3c4e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/desert_grass.json b/src/main/resources/assets/biomesoplenty/models/item/desert_grass.json new file mode 100644 index 0000000000..84d32c523a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/desert_grass.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/desert_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/dried_salt.json b/src/main/resources/assets/biomesoplenty/models/item/dried_salt.json new file mode 100644 index 0000000000..1bc6aadc94 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dried_salt.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dried_salt" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dune_grass.json b/src/main/resources/assets/biomesoplenty/models/item/dune_grass.json new file mode 100644 index 0000000000..b93b6a1f85 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dune_grass.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/dune_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_boat.json b/src/main/resources/assets/biomesoplenty/models/item/fir_boat.json new file mode 100644 index 0000000000..fa57cbd272 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/fir_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_button.json b/src/main/resources/assets/biomesoplenty/models/item/fir_button.json new file mode 100644 index 0000000000..3fbed9501d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_door.json b/src/main/resources/assets/biomesoplenty/models/item/fir_door.json new file mode 100644 index 0000000000..d13f1ca956 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/fir_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_fence.json b/src/main/resources/assets/biomesoplenty/models/item/fir_fence.json new file mode 100644 index 0000000000..113667fd64 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/fir_fence_gate.json new file mode 100644 index 0000000000..1b03526e21 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/fir_leaves.json new file mode 100644 index 0000000000..d97d3abd66 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_log.json b/src/main/resources/assets/biomesoplenty/models/item/fir_log.json new file mode 100644 index 0000000000..5c084ce63c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_planks.json b/src/main/resources/assets/biomesoplenty/models/item/fir_planks.json new file mode 100644 index 0000000000..22eb73c184 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/fir_pressure_plate.json new file mode 100644 index 0000000000..852ed59b3e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/fir_sapling.json new file mode 100644 index 0000000000..4d4cf05d3c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/fir_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_sign.json b/src/main/resources/assets/biomesoplenty/models/item/fir_sign.json new file mode 100644 index 0000000000..8f8d408dd5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/fir_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_slab.json b/src/main/resources/assets/biomesoplenty/models/item/fir_slab.json new file mode 100644 index 0000000000..99927a93b7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/fir_stairs.json new file mode 100644 index 0000000000..8c7411eccf --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/fir_trapdoor.json new file mode 100644 index 0000000000..dc5960aa55 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_wood.json b/src/main/resources/assets/biomesoplenty/models/item/fir_wood.json new file mode 100644 index 0000000000..a7523e43b3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/flesh.json b/src/main/resources/assets/biomesoplenty/models/item/flesh.json new file mode 100644 index 0000000000..57f5b1177f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/flesh.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/flesh" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/flowering_oak_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/flowering_oak_leaves.json new file mode 100644 index 0000000000..442375813b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/flowering_oak_leaves.json @@ -0,0 +1,10 @@ +{ + "parent": "biomesoplenty:block/flowering_oak_leaves", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/flowering_oak_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/flowering_oak_sapling.json new file mode 100644 index 0000000000..13086c0d75 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/flowering_oak_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/flowering_oak_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/glowflower.json b/src/main/resources/assets/biomesoplenty/models/item/glowflower.json new file mode 100644 index 0000000000..1c43f5a0aa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/glowflower.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/glowflower" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/glowshroom.json b/src/main/resources/assets/biomesoplenty/models/item/glowshroom.json new file mode 100644 index 0000000000..c0b73f3790 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/glowshroom.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/glowshroom" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/glowshroom_block.json b/src/main/resources/assets/biomesoplenty/models/item/glowshroom_block.json new file mode 100644 index 0000000000..eb2f5c211a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/glowshroom_block.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/glowshroom_block_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/goldenrod.json b/src/main/resources/assets/biomesoplenty/models/item/goldenrod.json new file mode 100644 index 0000000000..1f4196401e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/goldenrod.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/goldenrod_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_boat.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_boat.json new file mode 100644 index 0000000000..61547688d4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/hellbark_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_button.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_button.json new file mode 100644 index 0000000000..2d47e7cd7b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_door.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_door.json new file mode 100644 index 0000000000..094f17a688 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/hellbark_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_fence.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_fence.json new file mode 100644 index 0000000000..99b792323f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_fence_gate.json new file mode 100644 index 0000000000..6d88b967ee --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_leaves.json new file mode 100644 index 0000000000..4d3908424a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_log.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_log.json new file mode 100644 index 0000000000..09981238d1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_planks.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_planks.json new file mode 100644 index 0000000000..541eb83833 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_pressure_plate.json new file mode 100644 index 0000000000..d6594fafcd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_sapling.json new file mode 100644 index 0000000000..6037cc1bd6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/hellbark_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_sign.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_sign.json new file mode 100644 index 0000000000..574f6bc147 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/hellbark_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_slab.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_slab.json new file mode 100644 index 0000000000..b4ae8b7aee --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_stairs.json new file mode 100644 index 0000000000..15efb21679 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_trapdoor.json new file mode 100644 index 0000000000..3d56ef65d4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_wood.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_wood.json new file mode 100644 index 0000000000..16cc79a463 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/huge_clover_petal.json b/src/main/resources/assets/biomesoplenty/models/item/huge_clover_petal.json new file mode 100644 index 0000000000..475ef8bf44 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/huge_clover_petal.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/huge_clover_petal" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_boat.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_boat.json new file mode 100644 index 0000000000..2ce867bafc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/jacaranda_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_button.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_button.json new file mode 100644 index 0000000000..9fab2c2c9d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_door.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_door.json new file mode 100644 index 0000000000..98dfddb2e1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/jacaranda_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_fence.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_fence.json new file mode 100644 index 0000000000..24ee6a5576 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_fence_gate.json new file mode 100644 index 0000000000..098db7ed58 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_leaves.json new file mode 100644 index 0000000000..25a96d6938 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_log.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_log.json new file mode 100644 index 0000000000..5154d33ba2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_planks.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_planks.json new file mode 100644 index 0000000000..a61ec7d27e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_pressure_plate.json new file mode 100644 index 0000000000..688cae3a37 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_sapling.json new file mode 100644 index 0000000000..636110a94b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/jacaranda_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_sign.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_sign.json new file mode 100644 index 0000000000..631a58ce47 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/jacaranda_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_slab.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_slab.json new file mode 100644 index 0000000000..a08be8f0c5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_stairs.json new file mode 100644 index 0000000000..1ed1aad6b0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_trapdoor.json new file mode 100644 index 0000000000..438183ec32 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_wood.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_wood.json new file mode 100644 index 0000000000..62e9bde723 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/lavender.json b/src/main/resources/assets/biomesoplenty/models/item/lavender.json new file mode 100644 index 0000000000..c1c4419a07 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/lavender.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/lavender" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_boat.json b/src/main/resources/assets/biomesoplenty/models/item/magic_boat.json new file mode 100644 index 0000000000..669d5cbb7a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/magic_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_button.json b/src/main/resources/assets/biomesoplenty/models/item/magic_button.json new file mode 100644 index 0000000000..3ac2d1f5ce --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_door.json b/src/main/resources/assets/biomesoplenty/models/item/magic_door.json new file mode 100644 index 0000000000..b1ebb39ee3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/magic_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_fence.json b/src/main/resources/assets/biomesoplenty/models/item/magic_fence.json new file mode 100644 index 0000000000..6840e5c85a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/magic_fence_gate.json new file mode 100644 index 0000000000..50fd362a69 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/magic_leaves.json new file mode 100644 index 0000000000..da8b0db8da --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_log.json b/src/main/resources/assets/biomesoplenty/models/item/magic_log.json new file mode 100644 index 0000000000..f555fab810 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_planks.json b/src/main/resources/assets/biomesoplenty/models/item/magic_planks.json new file mode 100644 index 0000000000..fc913c5423 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/magic_pressure_plate.json new file mode 100644 index 0000000000..79f8ff3325 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/magic_sapling.json new file mode 100644 index 0000000000..7405e1c459 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/magic_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_sign.json b/src/main/resources/assets/biomesoplenty/models/item/magic_sign.json new file mode 100644 index 0000000000..9705c3ce86 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/magic_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_slab.json b/src/main/resources/assets/biomesoplenty/models/item/magic_slab.json new file mode 100644 index 0000000000..954b972012 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/magic_stairs.json new file mode 100644 index 0000000000..a655bc5d98 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/magic_trapdoor.json new file mode 100644 index 0000000000..9d42b69601 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_wood.json b/src/main/resources/assets/biomesoplenty/models/item/magic_wood.json new file mode 100644 index 0000000000..3de2da589b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_boat.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_boat.json new file mode 100644 index 0000000000..118e4f07c0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/mahogany_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_button.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_button.json new file mode 100644 index 0000000000..ec22db48bf --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_door.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_door.json new file mode 100644 index 0000000000..75eadc2748 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/mahogany_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_fence.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_fence.json new file mode 100644 index 0000000000..8b349f1c36 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_fence_gate.json new file mode 100644 index 0000000000..ba22f8f3df --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_leaves.json new file mode 100644 index 0000000000..628cd0051c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_log.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_log.json new file mode 100644 index 0000000000..657c1821a4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_planks.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_planks.json new file mode 100644 index 0000000000..23661929dc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_pressure_plate.json new file mode 100644 index 0000000000..572e6c78e7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_sapling.json new file mode 100644 index 0000000000..d2ae14425e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/mahogany_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_sign.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_sign.json new file mode 100644 index 0000000000..ce5648bad2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/mahogany_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_slab.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_slab.json new file mode 100644 index 0000000000..b97b669d63 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_stairs.json new file mode 100644 index 0000000000..4848541d79 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_trapdoor.json new file mode 100644 index 0000000000..0a49822860 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_wood.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_wood.json new file mode 100644 index 0000000000..939b4ddc38 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mangrove_root.json b/src/main/resources/assets/biomesoplenty/models/item/mangrove_root.json new file mode 100644 index 0000000000..a9c1c2ad99 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mangrove_root.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/mangrove_root" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/maple_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/maple_leaves.json new file mode 100644 index 0000000000..30ac5118fa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/maple_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/maple_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/maple_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/maple_sapling.json new file mode 100644 index 0000000000..a191fa800b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/maple_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/maple_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mud.json b/src/main/resources/assets/biomesoplenty/models/item/mud.json new file mode 100644 index 0000000000..3ecdb56c4c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mud.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mud" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mud_ball.json b/src/main/resources/assets/biomesoplenty/models/item/mud_ball.json new file mode 100644 index 0000000000..55d6e2936f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mud_ball.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/mud_ball" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/mud_brick.json b/src/main/resources/assets/biomesoplenty/models/item/mud_brick.json new file mode 100644 index 0000000000..e79a3c0a67 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mud_brick.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/mud_brick" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/mud_brick_slab.json b/src/main/resources/assets/biomesoplenty/models/item/mud_brick_slab.json new file mode 100644 index 0000000000..f56ffb3fe4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mud_brick_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mud_brick_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mud_brick_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/mud_brick_stairs.json new file mode 100644 index 0000000000..bb2a4ae0d7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mud_brick_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mud_brick_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mud_brick_wall.json b/src/main/resources/assets/biomesoplenty/models/item/mud_brick_wall.json new file mode 100644 index 0000000000..91e4bb9c8c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mud_brick_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mud_brick_wall_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mud_bricks.json b/src/main/resources/assets/biomesoplenty/models/item/mud_bricks.json new file mode 100644 index 0000000000..a18fe3af41 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mud_bricks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mud_bricks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/music_disc_wanderer.json b/src/main/resources/assets/biomesoplenty/models/item/music_disc_wanderer.json new file mode 100644 index 0000000000..43a9d087e8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/music_disc_wanderer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/music_disc_wanderer" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/nether_crystal.json b/src/main/resources/assets/biomesoplenty/models/item/nether_crystal.json new file mode 100644 index 0000000000..84dabd993f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/nether_crystal.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/nether_crystal" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/nether_crystal_block.json b/src/main/resources/assets/biomesoplenty/models/item/nether_crystal_block.json new file mode 100644 index 0000000000..d0ea70ac3a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/nether_crystal_block.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/nether_crystal_block" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/orange_autumn_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/orange_autumn_leaves.json new file mode 100644 index 0000000000..74615adfdc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/orange_autumn_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/orange_autumn_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/orange_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/orange_autumn_sapling.json new file mode 100644 index 0000000000..e2c6a82690 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/orange_autumn_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/orange_autumn_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/orange_cosmos.json b/src/main/resources/assets/biomesoplenty/models/item/orange_cosmos.json new file mode 100644 index 0000000000..69ea223c78 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/orange_cosmos.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/orange_cosmos" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/orange_sand.json b/src/main/resources/assets/biomesoplenty/models/item/orange_sand.json new file mode 100644 index 0000000000..125120f270 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/orange_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/orange_sand" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone.json new file mode 100644 index 0000000000..c8f1a1b76f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/orange_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_slab.json new file mode 100644 index 0000000000..5fc762d799 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/orange_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_stairs.json new file mode 100644 index 0000000000..1cbb92beb2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/orange_sandstone_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_wall.json b/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_wall.json new file mode 100644 index 0000000000..acb7fdd4f3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/orange_sandstone_wall_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/origin_grass_block.json b/src/main/resources/assets/biomesoplenty/models/item/origin_grass_block.json new file mode 100644 index 0000000000..2028477925 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/origin_grass_block.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/origin_grass_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/origin_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/origin_leaves.json new file mode 100644 index 0000000000..6701f851db --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/origin_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/origin_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/origin_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/origin_sapling.json new file mode 100644 index 0000000000..5a16d875b8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/origin_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/origin_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_boat.json b/src/main/resources/assets/biomesoplenty/models/item/palm_boat.json new file mode 100644 index 0000000000..42b4fd033a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/palm_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_button.json b/src/main/resources/assets/biomesoplenty/models/item/palm_button.json new file mode 100644 index 0000000000..8998634b4f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_door.json b/src/main/resources/assets/biomesoplenty/models/item/palm_door.json new file mode 100644 index 0000000000..6d929fedb6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/palm_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_fence.json b/src/main/resources/assets/biomesoplenty/models/item/palm_fence.json new file mode 100644 index 0000000000..d9dfda1d96 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/palm_fence_gate.json new file mode 100644 index 0000000000..e2dd5a7a27 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/palm_leaves.json new file mode 100644 index 0000000000..e9c16d7b98 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_log.json b/src/main/resources/assets/biomesoplenty/models/item/palm_log.json new file mode 100644 index 0000000000..e07e0ae443 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_planks.json b/src/main/resources/assets/biomesoplenty/models/item/palm_planks.json new file mode 100644 index 0000000000..9493e4af3d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/palm_pressure_plate.json new file mode 100644 index 0000000000..0aab9a35ac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/palm_sapling.json new file mode 100644 index 0000000000..7a7cf672b8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/palm_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_sign.json b/src/main/resources/assets/biomesoplenty/models/item/palm_sign.json new file mode 100644 index 0000000000..9f1fb0110b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/palm_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_slab.json b/src/main/resources/assets/biomesoplenty/models/item/palm_slab.json new file mode 100644 index 0000000000..ee9fa45636 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/palm_stairs.json new file mode 100644 index 0000000000..009b1cca64 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/palm_trapdoor.json new file mode 100644 index 0000000000..d3eb786ce4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_wood.json b/src/main/resources/assets/biomesoplenty/models/item/palm_wood.json new file mode 100644 index 0000000000..d8cce0f406 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/pink_cherry_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/pink_cherry_leaves.json new file mode 100644 index 0000000000..b686b36a98 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/pink_cherry_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/pink_cherry_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/pink_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/pink_cherry_sapling.json new file mode 100644 index 0000000000..dba768cc29 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/pink_cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/pink_cherry_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/pink_daffodil.json b/src/main/resources/assets/biomesoplenty/models/item/pink_daffodil.json new file mode 100644 index 0000000000..11395d0b03 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/pink_daffodil.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/pink_daffodil" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/pink_hibiscus.json b/src/main/resources/assets/biomesoplenty/models/item/pink_hibiscus.json new file mode 100644 index 0000000000..37b779b9cc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/pink_hibiscus.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/pink_hibiscus" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_burning_blossom.json b/src/main/resources/assets/biomesoplenty/models/item/potted_burning_blossom.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_burning_blossom.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_clover.json b/src/main/resources/assets/biomesoplenty/models/item/potted_clover.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_clover.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_dead_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_dead_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_dead_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_fir_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_fir_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_fir_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_flowering_oak_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_flowering_oak_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_flowering_oak_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_glowflower.json b/src/main/resources/assets/biomesoplenty/models/item/potted_glowflower.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_glowflower.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_glowshroom.json b/src/main/resources/assets/biomesoplenty/models/item/potted_glowshroom.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_glowshroom.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_hellbark_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_hellbark_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_hellbark_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_jacaranda_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_jacaranda_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_jacaranda_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_lavender.json b/src/main/resources/assets/biomesoplenty/models/item/potted_lavender.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_lavender.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_magic_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_magic_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_magic_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_mahogany_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_mahogany_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_mahogany_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_maple_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_maple_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_maple_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_orange_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_orange_autumn_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_orange_autumn_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_orange_cosmos.json b/src/main/resources/assets/biomesoplenty/models/item/potted_orange_cosmos.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_orange_cosmos.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_origin_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_origin_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_origin_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_palm_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_palm_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_palm_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_pink_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_pink_cherry_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_pink_cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_pink_daffodil.json b/src/main/resources/assets/biomesoplenty/models/item/potted_pink_daffodil.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_pink_daffodil.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_pink_hibiscus.json b/src/main/resources/assets/biomesoplenty/models/item/potted_pink_hibiscus.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_pink_hibiscus.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_rainbow_birch_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_rainbow_birch_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_rainbow_birch_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_redwood_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_redwood_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_redwood_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_rose.json b/src/main/resources/assets/biomesoplenty/models/item/potted_rose.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_rose.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_sprout.json b/src/main/resources/assets/biomesoplenty/models/item/potted_sprout.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_sprout.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_toadstool.json b/src/main/resources/assets/biomesoplenty/models/item/potted_toadstool.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_toadstool.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_umbran_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_umbran_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_umbran_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_violet.json b/src/main/resources/assets/biomesoplenty/models/item/potted_violet.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_violet.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_white_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_white_cherry_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_white_cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_wildflower.json b/src/main/resources/assets/biomesoplenty/models/item/potted_wildflower.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_wildflower.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_willow_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_willow_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_willow_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_wilted_lily.json b/src/main/resources/assets/biomesoplenty/models/item/potted_wilted_lily.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_wilted_lily.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_yellow_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_yellow_autumn_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_yellow_autumn_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/rainbow_birch_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/rainbow_birch_leaves.json new file mode 100644 index 0000000000..fde35fab2f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/rainbow_birch_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/rainbow_birch_leaves_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/rainbow_birch_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/rainbow_birch_sapling.json new file mode 100644 index 0000000000..69b128c9c5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/rainbow_birch_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/rainbow_birch_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_boat.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_boat.json new file mode 100644 index 0000000000..40fc7d6122 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/redwood_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_button.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_button.json new file mode 100644 index 0000000000..dc60940ab4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_door.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_door.json new file mode 100644 index 0000000000..b479c7e4d0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/redwood_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_fence.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_fence.json new file mode 100644 index 0000000000..a6392b4f39 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_fence_gate.json new file mode 100644 index 0000000000..088e0b181f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_leaves.json new file mode 100644 index 0000000000..a882288a08 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_log.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_log.json new file mode 100644 index 0000000000..22b0a4ced5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_planks.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_planks.json new file mode 100644 index 0000000000..fe1675df5e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_pressure_plate.json new file mode 100644 index 0000000000..a2fd3e4091 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_sapling.json new file mode 100644 index 0000000000..3f564e5e25 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/redwood_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_sign.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_sign.json new file mode 100644 index 0000000000..dca253b4e5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/redwood_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_slab.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_slab.json new file mode 100644 index 0000000000..46329c987e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_stairs.json new file mode 100644 index 0000000000..4f7e3162d0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_trapdoor.json new file mode 100644 index 0000000000..c110b8dee8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_wood.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_wood.json new file mode 100644 index 0000000000..0838fbea81 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/reed.json b/src/main/resources/assets/biomesoplenty/models/item/reed.json new file mode 100644 index 0000000000..7b23defdfa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/reed.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/reed" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/rose.json b/src/main/resources/assets/biomesoplenty/models/item/rose.json new file mode 100644 index 0000000000..e33354f213 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/rose.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/rose" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone.json new file mode 100644 index 0000000000..d3a9eeb66b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_black_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone_slab.json new file mode 100644 index 0000000000..64de0815dd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_black_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone_stairs.json new file mode 100644 index 0000000000..104d35c38d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_black_sandstone_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone.json new file mode 100644 index 0000000000..763a0511b0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_orange_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone_slab.json new file mode 100644 index 0000000000..eb335c25bf --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_orange_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone_stairs.json new file mode 100644 index 0000000000..5540c9430b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_orange_sandstone_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone.json new file mode 100644 index 0000000000..74db0ba40a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_white_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone_slab.json new file mode 100644 index 0000000000..11832a7391 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_white_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone_stairs.json new file mode 100644 index 0000000000..902c6a1994 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_white_sandstone_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/spanish_moss.json b/src/main/resources/assets/biomesoplenty/models/item/spanish_moss.json new file mode 100644 index 0000000000..1166621936 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/spanish_moss.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "biomesoplenty:block/spanish_moss_plant" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/spanish_moss_plant.json b/src/main/resources/assets/biomesoplenty/models/item/spanish_moss_plant.json new file mode 100644 index 0000000000..1166621936 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/spanish_moss_plant.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "biomesoplenty:block/spanish_moss_plant" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/sprout.json b/src/main/resources/assets/biomesoplenty/models/item/sprout.json new file mode 100644 index 0000000000..9126845c9d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/sprout.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/sprout" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_cherry_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_cherry_log.json new file mode 100644 index 0000000000..3e27248ffb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_cherry_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_cherry_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_cherry_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_cherry_wood.json new file mode 100644 index 0000000000..abfd61b67a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_cherry_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_cherry_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_dead_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_dead_log.json new file mode 100644 index 0000000000..8fa59ef958 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_dead_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_dead_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_dead_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_dead_wood.json new file mode 100644 index 0000000000..c8ccfacc9f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_dead_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_dead_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_fir_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_fir_log.json new file mode 100644 index 0000000000..ee85c8f1ef --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_fir_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_fir_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_fir_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_fir_wood.json new file mode 100644 index 0000000000..75f50f63a0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_fir_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_fir_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_hellbark_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_hellbark_log.json new file mode 100644 index 0000000000..040c05ba68 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_hellbark_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_hellbark_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_hellbark_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_hellbark_wood.json new file mode 100644 index 0000000000..d4a30d4a9f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_hellbark_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_hellbark_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_jacaranda_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_jacaranda_log.json new file mode 100644 index 0000000000..9b77e896a2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_jacaranda_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_jacaranda_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_jacaranda_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_jacaranda_wood.json new file mode 100644 index 0000000000..9f8966950d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_jacaranda_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_jacaranda_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_magic_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_magic_log.json new file mode 100644 index 0000000000..fc16f2db4e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_magic_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_magic_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_magic_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_magic_wood.json new file mode 100644 index 0000000000..7c4f1e3f53 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_magic_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_magic_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_mahogany_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_mahogany_log.json new file mode 100644 index 0000000000..d476a584f0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_mahogany_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_mahogany_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_mahogany_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_mahogany_wood.json new file mode 100644 index 0000000000..5f551bf9f7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_mahogany_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_mahogany_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_palm_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_palm_log.json new file mode 100644 index 0000000000..28893eefda --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_palm_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_palm_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_palm_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_palm_wood.json new file mode 100644 index 0000000000..04ecede4ba --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_palm_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_palm_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_redwood_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_redwood_log.json new file mode 100644 index 0000000000..90cd6d42d4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_redwood_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_redwood_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_redwood_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_redwood_wood.json new file mode 100644 index 0000000000..f3c9c23ad0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_redwood_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_redwood_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_umbran_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_umbran_log.json new file mode 100644 index 0000000000..834ddb6f20 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_umbran_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_umbran_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_umbran_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_umbran_wood.json new file mode 100644 index 0000000000..4920d52a9c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_umbran_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_umbran_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_willow_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_willow_log.json new file mode 100644 index 0000000000..491d94f268 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_willow_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_willow_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_willow_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_willow_wood.json new file mode 100644 index 0000000000..00771c732c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_willow_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_willow_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/toadstool.json b/src/main/resources/assets/biomesoplenty/models/item/toadstool.json new file mode 100644 index 0000000000..4213732f3c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/toadstool.json @@ -0,0 +1,18 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/toadstool" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/toadstool_block.json b/src/main/resources/assets/biomesoplenty/models/item/toadstool_block.json new file mode 100644 index 0000000000..9ce509015e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/toadstool_block.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/toadstool_block_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_boat.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_boat.json new file mode 100644 index 0000000000..2a61e969af --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/umbran_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_button.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_button.json new file mode 100644 index 0000000000..1c921d9e75 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_door.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_door.json new file mode 100644 index 0000000000..8745d780e8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/umbran_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_fence.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_fence.json new file mode 100644 index 0000000000..37dacbcfa6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_fence_gate.json new file mode 100644 index 0000000000..71033317f5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_leaves.json new file mode 100644 index 0000000000..09aaa38c31 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_log.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_log.json new file mode 100644 index 0000000000..2c910e789f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_planks.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_planks.json new file mode 100644 index 0000000000..e2143f8fd2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_pressure_plate.json new file mode 100644 index 0000000000..8aa0133ecb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_sapling.json new file mode 100644 index 0000000000..52fd3e6a3a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/umbran_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_sign.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_sign.json new file mode 100644 index 0000000000..7cc29a40ad --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/umbran_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_slab.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_slab.json new file mode 100644 index 0000000000..2a1caf91a3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_stairs.json new file mode 100644 index 0000000000..1f60e11d63 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_trapdoor.json new file mode 100644 index 0000000000..e0e4a28e66 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_wood.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_wood.json new file mode 100644 index 0000000000..db92b5708c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/violet.json b/src/main/resources/assets/biomesoplenty/models/item/violet.json new file mode 100644 index 0000000000..178d7d7bb7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/violet.json @@ -0,0 +1,18 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/violet" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/watergrass.json b/src/main/resources/assets/biomesoplenty/models/item/watergrass.json new file mode 100644 index 0000000000..6b42ee1b56 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/watergrass.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/watergrass" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/white_cherry_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/white_cherry_leaves.json new file mode 100644 index 0000000000..f56a6b11ef --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/white_cherry_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/white_cherry_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/white_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/white_cherry_sapling.json new file mode 100644 index 0000000000..a45f1b60e0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/white_cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/white_cherry_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/white_sand.json b/src/main/resources/assets/biomesoplenty/models/item/white_sand.json new file mode 100644 index 0000000000..459d825812 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/white_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/white_sand" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/white_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/white_sandstone.json new file mode 100644 index 0000000000..cb310ed538 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/white_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/white_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_slab.json new file mode 100644 index 0000000000..f18c25d1ed --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/white_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_stairs.json new file mode 100644 index 0000000000..212dc5a009 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/white_sandstone_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_wall.json b/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_wall.json new file mode 100644 index 0000000000..8e3864a870 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/white_sandstone_wall_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/wildflower.json b/src/main/resources/assets/biomesoplenty/models/item/wildflower.json new file mode 100644 index 0000000000..bcdec51fa0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/wildflower.json @@ -0,0 +1,18 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/wildflower" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_boat.json b/src/main/resources/assets/biomesoplenty/models/item/willow_boat.json new file mode 100644 index 0000000000..a15c4725d7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/willow_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_button.json b/src/main/resources/assets/biomesoplenty/models/item/willow_button.json new file mode 100644 index 0000000000..7481cfd3cb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_door.json b/src/main/resources/assets/biomesoplenty/models/item/willow_door.json new file mode 100644 index 0000000000..ea894985b5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/willow_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_fence.json b/src/main/resources/assets/biomesoplenty/models/item/willow_fence.json new file mode 100644 index 0000000000..8be1b54651 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/willow_fence_gate.json new file mode 100644 index 0000000000..45b7a7a71c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/willow_leaves.json new file mode 100644 index 0000000000..ef95de8643 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_log.json b/src/main/resources/assets/biomesoplenty/models/item/willow_log.json new file mode 100644 index 0000000000..13bf1b8f57 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_planks.json b/src/main/resources/assets/biomesoplenty/models/item/willow_planks.json new file mode 100644 index 0000000000..78788dd7c9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/willow_pressure_plate.json new file mode 100644 index 0000000000..bc5edff284 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/willow_sapling.json new file mode 100644 index 0000000000..a76e53dabd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/willow_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_sign.json b/src/main/resources/assets/biomesoplenty/models/item/willow_sign.json new file mode 100644 index 0000000000..eecf6dc46e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/willow_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_slab.json b/src/main/resources/assets/biomesoplenty/models/item/willow_slab.json new file mode 100644 index 0000000000..0ee803dff1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/willow_stairs.json new file mode 100644 index 0000000000..ff9dabe02a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/willow_trapdoor.json new file mode 100644 index 0000000000..add26ed008 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_vine.json b/src/main/resources/assets/biomesoplenty/models/item/willow_vine.json new file mode 100644 index 0000000000..5fb22a0137 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_vine.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/willow_vine" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_wood.json b/src/main/resources/assets/biomesoplenty/models/item/willow_wood.json new file mode 100644 index 0000000000..045809f8c4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/wilted_lily.json b/src/main/resources/assets/biomesoplenty/models/item/wilted_lily.json new file mode 100644 index 0000000000..add68cf155 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/wilted_lily.json @@ -0,0 +1,18 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/wilted_lily" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/yellow_autumn_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/yellow_autumn_leaves.json new file mode 100644 index 0000000000..b1ca33f100 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/yellow_autumn_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/yellow_autumn_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/yellow_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/yellow_autumn_sapling.json new file mode 100644 index 0000000000..8e63c69bb8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/yellow_autumn_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/yellow_autumn_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/shaders/block.properties b/src/main/resources/assets/biomesoplenty/shaders/block.properties new file mode 100644 index 0000000000..85e48f78b0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/shaders/block.properties @@ -0,0 +1,18 @@ +# Foliage +block.10031 = biomesoplenty:sprout biomesoplenty:dune_grass biomesoplenty:desert_grass biomesoplenty:dead_grass + +# Flowers and Plants +block.10059 = biomesoplenty:origin_sapling biomesoplenty:flowering_oak_sapling biomesoplenty:rainbow_birch_sapling biomesoplenty:yellow_autumn_sapling biomesoplenty:orange_autumn_sapling biomesoplenty:maple_sapling biomesoplenty:fir_sapling biomesoplenty:redwood_sapling biomesoplenty:white_cherry_sapling biomesoplenty:pink_cherry_sapling biomesoplenty:mahogany_sapling biomesoplenty:jacaranda_sapling biomesoplenty:palm_sapling biomesoplenty:willow_sapling biomesoplenty:dead_sapling biomesoplenty:magic_sapling biomesoplenty:umbran_sapling biomesoplenty:hellbark_sapling biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:bush + +# Tall Plants +block.10175 = biomesoplenty:blue_hydrangea:half=lower biomesoplenty:goldenrod:half=lower biomesoplenty:cattail:half=lower biomesoplenty:barley:half=lower biomesoplenty:reed:half=lower biomesoplenty:watergrass:half=lower +block.10176 = biomesoplenty:blue_hydrangea:half=upper biomesoplenty:goldenrod:half=upper biomesoplenty:cattail:half=upper biomesoplenty:barley:half=upper biomesoplenty:reed:half=upper biomesoplenty:watergrass:half=upper + +# Leaves +block.10018 = biomesoplenty:origin_leaves biomesoplenty:flowering_oak_leaves biomesoplenty:rainbow_birch_leaves biomesoplenty:yellow_autumn_leaves biomesoplenty:orange_autumn_leaves biomesoplenty:maple_leaves biomesoplenty:fir_leaves biomesoplenty:redwood_leaves biomesoplenty:white_cherry_leaves biomesoplenty:pink_cherry_leaves biomesoplenty:mahogany_leaves biomesoplenty:jacaranda_leaves biomesoplenty:palm_leaves biomesoplenty:willow_leaves biomesoplenty:dead_leaves biomesoplenty:magic_leaves biomesoplenty:umbran_leaves biomesoplenty:hellbark_leaves + +# Vines +block.10106 = biomesoplenty:willow_vine + +# Emissive +block.10089 = biomesoplenty:glowshroom biomesoplenty:glowshroom_block biomesoplenty:nether_crystal biomesoplenty:nether_crystal_block \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/sounds.json b/src/main/resources/assets/biomesoplenty/sounds.json new file mode 100644 index 0000000000..64f224cf58 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/sounds.json @@ -0,0 +1,10 @@ +{ + "music_disc.wanderer": { + "sounds": [ + { + "name": "biomesoplenty:music_disc/wanderer", + "stream": true + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/sounds/music_disc/wanderer.ogg b/src/main/resources/assets/biomesoplenty/sounds/music_disc/wanderer.ogg new file mode 100644 index 0000000000..34e90893b3 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/sounds/music_disc/wanderer.ogg differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/barley_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/barley_bottom.png new file mode 100644 index 0000000000..4def5e8490 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/barley_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/barley_top.png b/src/main/resources/assets/biomesoplenty/textures/block/barley_top.png new file mode 100644 index 0000000000..86ed5ce6f6 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/barley_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/black_sand.png b/src/main/resources/assets/biomesoplenty/textures/block/black_sand.png new file mode 100644 index 0000000000..9353827614 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/black_sand.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/black_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/black_sandstone.png new file mode 100644 index 0000000000..c617b829d7 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/black_sandstone.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/black_sandstone_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/black_sandstone_bottom.png new file mode 100644 index 0000000000..ecc88f93df Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/black_sandstone_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/black_sandstone_top.png b/src/main/resources/assets/biomesoplenty/textures/block/black_sandstone_top.png new file mode 100644 index 0000000000..ac38465c37 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/black_sandstone_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/blue_hydrangea_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/blue_hydrangea_bottom.png new file mode 100644 index 0000000000..42751d8fd9 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/blue_hydrangea_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/blue_hydrangea_top.png b/src/main/resources/assets/biomesoplenty/textures/block/blue_hydrangea_top.png new file mode 100644 index 0000000000..05ca2bfa9c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/blue_hydrangea_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/bramble.png b/src/main/resources/assets/biomesoplenty/textures/block/bramble.png new file mode 100644 index 0000000000..27050d953a Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/bramble.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/bramble_thorns.png b/src/main/resources/assets/biomesoplenty/textures/block/bramble_thorns.png new file mode 100644 index 0000000000..5a42fc76cf Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/bramble_thorns.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/burning_blossom.png b/src/main/resources/assets/biomesoplenty/textures/block/burning_blossom.png new file mode 100644 index 0000000000..12451fd178 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/burning_blossom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/bush.png b/src/main/resources/assets/biomesoplenty/textures/block/bush.png new file mode 100644 index 0000000000..be8b38dde7 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/bush.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cattail_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/cattail_bottom.png new file mode 100644 index 0000000000..94b87bfa04 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/cattail_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cattail_top.png b/src/main/resources/assets/biomesoplenty/textures/block/cattail_top.png new file mode 100644 index 0000000000..f2033bb61f Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/cattail_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cherry_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/cherry_door_bottom.png new file mode 100644 index 0000000000..f0b29acf78 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/cherry_door_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cherry_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/cherry_door_top.png new file mode 100644 index 0000000000..e2264638e1 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/cherry_door_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cherry_log.png b/src/main/resources/assets/biomesoplenty/textures/block/cherry_log.png new file mode 100644 index 0000000000..ba93aeae7e Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/cherry_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cherry_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/cherry_log_top.png new file mode 100644 index 0000000000..a4c8e6df07 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/cherry_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cherry_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/cherry_planks.png new file mode 100644 index 0000000000..e177f42e94 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/cherry_planks.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cherry_trapdoor.png b/src/main/resources/assets/biomesoplenty/textures/block/cherry_trapdoor.png new file mode 100644 index 0000000000..48cdee3394 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/cherry_trapdoor.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/chiseled_black_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/chiseled_black_sandstone.png new file mode 100644 index 0000000000..3dd1a9177f Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/chiseled_black_sandstone.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/chiseled_orange_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/chiseled_orange_sandstone.png new file mode 100644 index 0000000000..7425106eff Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/chiseled_orange_sandstone.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/chiseled_white_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/chiseled_white_sandstone.png new file mode 100644 index 0000000000..a34dd2ee16 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/chiseled_white_sandstone.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/clover.png b/src/main/resources/assets/biomesoplenty/textures/block/clover.png new file mode 100644 index 0000000000..ca5bcabbe5 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/clover.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/clover_stem.png b/src/main/resources/assets/biomesoplenty/textures/block/clover_stem.png new file mode 100644 index 0000000000..3e618a7dc7 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/clover_stem.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cut_black_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/cut_black_sandstone.png new file mode 100644 index 0000000000..90a72b1756 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/cut_black_sandstone.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cut_orange_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/cut_orange_sandstone.png new file mode 100644 index 0000000000..281afc4c04 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/cut_orange_sandstone.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cut_white_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/cut_white_sandstone.png new file mode 100644 index 0000000000..db2527fa6f Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/cut_white_sandstone.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_branch.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_branch.png new file mode 100644 index 0000000000..25d72d14c1 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/dead_branch.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_door_bottom.png new file mode 100644 index 0000000000..23ce9f1c62 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/dead_door_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_door_top.png new file mode 100644 index 0000000000..bba5c435d0 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/dead_door_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_grass.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_grass.png new file mode 100644 index 0000000000..45fae731d5 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/dead_grass.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_leaves.png new file mode 100644 index 0000000000..53b8bce306 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/dead_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_log.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_log.png new file mode 100644 index 0000000000..e240a28df7 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/dead_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_log_top.png new file mode 100644 index 0000000000..5b5929aa4d Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/dead_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_planks.png new file mode 100644 index 0000000000..660d8b0c57 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/dead_planks.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_sapling.png new file mode 100644 index 0000000000..61f70d89d8 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/dead_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_trapdoor.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_trapdoor.png new file mode 100644 index 0000000000..f7449c1104 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/dead_trapdoor.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/desert_grass.png b/src/main/resources/assets/biomesoplenty/textures/block/desert_grass.png new file mode 100644 index 0000000000..5d2832ed4c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/desert_grass.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dried_salt.png b/src/main/resources/assets/biomesoplenty/textures/block/dried_salt.png new file mode 100644 index 0000000000..b33865fa28 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/dried_salt.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dune_grass.png b/src/main/resources/assets/biomesoplenty/textures/block/dune_grass.png new file mode 100644 index 0000000000..1120db6393 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/dune_grass.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/fir_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/fir_door_bottom.png new file mode 100644 index 0000000000..3afbc80eac Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/fir_door_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/fir_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/fir_door_top.png new file mode 100644 index 0000000000..d85290fbe4 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/fir_door_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/fir_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/fir_leaves.png new file mode 100644 index 0000000000..f9d3f2d12e Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/fir_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/fir_log.png b/src/main/resources/assets/biomesoplenty/textures/block/fir_log.png new file mode 100644 index 0000000000..65095f6402 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/fir_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/fir_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/fir_log_top.png new file mode 100644 index 0000000000..4e43e5ea55 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/fir_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/fir_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/fir_planks.png new file mode 100644 index 0000000000..86aac20df1 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/fir_planks.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/fir_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/fir_sapling.png new file mode 100644 index 0000000000..29cab7c518 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/fir_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/fir_trapdoor.png b/src/main/resources/assets/biomesoplenty/textures/block/fir_trapdoor.png new file mode 100644 index 0000000000..acc400a16c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/fir_trapdoor.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/flesh.png b/src/main/resources/assets/biomesoplenty/textures/block/flesh.png new file mode 100644 index 0000000000..b28537ef26 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/flesh.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/flowering_oak_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/flowering_oak_leaves.png new file mode 100644 index 0000000000..de02b36511 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/flowering_oak_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/flowering_oak_leaves_overlay.png b/src/main/resources/assets/biomesoplenty/textures/block/flowering_oak_leaves_overlay.png new file mode 100644 index 0000000000..d18a121256 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/flowering_oak_leaves_overlay.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/flowering_oak_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/flowering_oak_sapling.png new file mode 100644 index 0000000000..1db3f85de0 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/flowering_oak_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/glowflower.png b/src/main/resources/assets/biomesoplenty/textures/block/glowflower.png new file mode 100644 index 0000000000..a3d87f9974 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/glowflower.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/glowshroom.png b/src/main/resources/assets/biomesoplenty/textures/block/glowshroom.png new file mode 100644 index 0000000000..4193a00727 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/glowshroom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/glowshroom_block.png b/src/main/resources/assets/biomesoplenty/textures/block/glowshroom_block.png new file mode 100644 index 0000000000..1869c4dfb3 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/glowshroom_block.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_bottom.png new file mode 100644 index 0000000000..d3289fedd8 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_top.png b/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_top.png new file mode 100644 index 0000000000..12dcb5b95b Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_door_bottom.png new file mode 100644 index 0000000000..ac7104e00b Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_door_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_door_top.png new file mode 100644 index 0000000000..3aff3b1975 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_door_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_leaves.png new file mode 100644 index 0000000000..ec9a3b8e4f Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_log.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_log.png new file mode 100644 index 0000000000..9d07d7e4aa Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_log_top.png new file mode 100644 index 0000000000..194a85f2dc Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_planks.png new file mode 100644 index 0000000000..50c7919492 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_planks.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_sapling.png new file mode 100644 index 0000000000..60b5a68a02 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_trapdoor.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_trapdoor.png new file mode 100644 index 0000000000..3c89d82ed2 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_trapdoor.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_petal.png b/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_petal.png new file mode 100644 index 0000000000..3ea09e6f72 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_petal.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem.png b/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem.png new file mode 100644 index 0000000000..2969a11cc4 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem_back.png b/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem_back.png new file mode 100644 index 0000000000..37cdf0a7ae Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem_back.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_door_bottom.png new file mode 100644 index 0000000000..3da6ccedf6 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_door_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_door_top.png new file mode 100644 index 0000000000..4f031993fe Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_door_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_leaves.png new file mode 100644 index 0000000000..c2ae8e56be Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_log.png b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_log.png new file mode 100644 index 0000000000..190d414ce2 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_log_top.png new file mode 100644 index 0000000000..421eaf1765 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_planks.png new file mode 100644 index 0000000000..1a9d82d302 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_planks.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_sapling.png new file mode 100644 index 0000000000..c136b4d297 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_trapdoor.png b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_trapdoor.png new file mode 100644 index 0000000000..678635259c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_trapdoor.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/lavender.png b/src/main/resources/assets/biomesoplenty/textures/block/lavender.png new file mode 100644 index 0000000000..81248d5790 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/lavender.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/magic_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/magic_door_bottom.png new file mode 100644 index 0000000000..7aede0754b Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/magic_door_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/magic_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/magic_door_top.png new file mode 100644 index 0000000000..71243b1342 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/magic_door_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/magic_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/magic_leaves.png new file mode 100644 index 0000000000..ba2fe904a9 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/magic_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/magic_log.png b/src/main/resources/assets/biomesoplenty/textures/block/magic_log.png new file mode 100644 index 0000000000..bd27e8b6b8 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/magic_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/magic_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/magic_log_top.png new file mode 100644 index 0000000000..bdb8df60ed Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/magic_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/magic_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/magic_planks.png new file mode 100644 index 0000000000..cdb5905409 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/magic_planks.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/magic_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/magic_sapling.png new file mode 100644 index 0000000000..cc33065e2d Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/magic_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/magic_trapdoor.png b/src/main/resources/assets/biomesoplenty/textures/block/magic_trapdoor.png new file mode 100644 index 0000000000..69f50a88a2 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/magic_trapdoor.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mahogany_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_door_bottom.png new file mode 100644 index 0000000000..e4e02a255b Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_door_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mahogany_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_door_top.png new file mode 100644 index 0000000000..4308e529d6 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_door_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mahogany_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_leaves.png new file mode 100644 index 0000000000..f82dcea396 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mahogany_log.png b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_log.png new file mode 100644 index 0000000000..c7f4eb032f Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mahogany_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_log_top.png new file mode 100644 index 0000000000..30b57af275 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mahogany_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_planks.png new file mode 100644 index 0000000000..6ea6ac1bdf Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_planks.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mahogany_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_sapling.png new file mode 100644 index 0000000000..4742743970 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mahogany_trapdoor.png b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_trapdoor.png new file mode 100644 index 0000000000..48d544e68c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_trapdoor.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mangrove_root_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/mangrove_root_bottom.png new file mode 100644 index 0000000000..d1fe7e8270 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/mangrove_root_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mangrove_root_top.png b/src/main/resources/assets/biomesoplenty/textures/block/mangrove_root_top.png new file mode 100644 index 0000000000..743b9e8c07 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/mangrove_root_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/maple_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/maple_leaves.png new file mode 100644 index 0000000000..fe0a6cd931 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/maple_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/maple_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/maple_sapling.png new file mode 100644 index 0000000000..178173644c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/maple_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mud.png b/src/main/resources/assets/biomesoplenty/textures/block/mud.png new file mode 100644 index 0000000000..d45b631c86 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/mud.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mud_bricks.png b/src/main/resources/assets/biomesoplenty/textures/block/mud_bricks.png new file mode 100644 index 0000000000..e82e03e8f2 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/mud_bricks.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/nether_crystal.png b/src/main/resources/assets/biomesoplenty/textures/block/nether_crystal.png new file mode 100644 index 0000000000..561193c58e Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/nether_crystal.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/nether_crystal_block.png b/src/main/resources/assets/biomesoplenty/textures/block/nether_crystal_block.png new file mode 100644 index 0000000000..ac9e832c3e Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/nether_crystal_block.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/orange_autumn_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/orange_autumn_leaves.png new file mode 100644 index 0000000000..168cb27044 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/orange_autumn_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/orange_autumn_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/orange_autumn_sapling.png new file mode 100644 index 0000000000..d02b041d37 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/orange_autumn_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/orange_cosmos.png b/src/main/resources/assets/biomesoplenty/textures/block/orange_cosmos.png new file mode 100644 index 0000000000..daf5f8fe1e Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/orange_cosmos.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/orange_sand.png b/src/main/resources/assets/biomesoplenty/textures/block/orange_sand.png new file mode 100644 index 0000000000..a2628dc33b Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/orange_sand.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/orange_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/orange_sandstone.png new file mode 100644 index 0000000000..c3c1304014 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/orange_sandstone.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/orange_sandstone_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/orange_sandstone_bottom.png new file mode 100644 index 0000000000..d71731aeda Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/orange_sandstone_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/orange_sandstone_top.png b/src/main/resources/assets/biomesoplenty/textures/block/orange_sandstone_top.png new file mode 100644 index 0000000000..6d1358da90 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/orange_sandstone_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/origin_grass_block_side.png b/src/main/resources/assets/biomesoplenty/textures/block/origin_grass_block_side.png new file mode 100644 index 0000000000..fe3c32edf7 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/origin_grass_block_side.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/origin_grass_block_top.png b/src/main/resources/assets/biomesoplenty/textures/block/origin_grass_block_top.png new file mode 100644 index 0000000000..d3e7868c40 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/origin_grass_block_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/origin_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/origin_leaves.png new file mode 100644 index 0000000000..b50dee4cef Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/origin_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/origin_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/origin_sapling.png new file mode 100644 index 0000000000..13c54d7a16 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/origin_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/palm_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/palm_door_bottom.png new file mode 100644 index 0000000000..eda31a0c92 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/palm_door_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/palm_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/palm_door_top.png new file mode 100644 index 0000000000..b4bf88d302 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/palm_door_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/palm_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/palm_leaves.png new file mode 100644 index 0000000000..d9d226b110 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/palm_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/palm_log.png b/src/main/resources/assets/biomesoplenty/textures/block/palm_log.png new file mode 100644 index 0000000000..80993b8717 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/palm_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/palm_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/palm_log_top.png new file mode 100644 index 0000000000..967cd341e8 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/palm_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/palm_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/palm_planks.png new file mode 100644 index 0000000000..dfa412146b Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/palm_planks.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/palm_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/palm_sapling.png new file mode 100644 index 0000000000..649b90d62a Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/palm_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/palm_trapdoor.png b/src/main/resources/assets/biomesoplenty/textures/block/palm_trapdoor.png new file mode 100644 index 0000000000..f7d4073c5b Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/palm_trapdoor.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/pink_cherry_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/pink_cherry_leaves.png new file mode 100644 index 0000000000..52fc4d52d2 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/pink_cherry_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/pink_cherry_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/pink_cherry_sapling.png new file mode 100644 index 0000000000..007911fd0c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/pink_cherry_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/pink_daffodil.png b/src/main/resources/assets/biomesoplenty/textures/block/pink_daffodil.png new file mode 100644 index 0000000000..beb1914a3e Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/pink_daffodil.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/pink_hibiscus.png b/src/main/resources/assets/biomesoplenty/textures/block/pink_hibiscus.png new file mode 100644 index 0000000000..6d7cfe7888 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/pink_hibiscus.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/potted_glowshroom.png b/src/main/resources/assets/biomesoplenty/textures/block/potted_glowshroom.png new file mode 100644 index 0000000000..d6ffba85f4 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/potted_glowshroom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/potted_lavender.png b/src/main/resources/assets/biomesoplenty/textures/block/potted_lavender.png new file mode 100644 index 0000000000..6de9116f7c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/potted_lavender.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/potted_sprout.png b/src/main/resources/assets/biomesoplenty/textures/block/potted_sprout.png new file mode 100644 index 0000000000..54d332d8d2 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/potted_sprout.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/potted_violet.png b/src/main/resources/assets/biomesoplenty/textures/block/potted_violet.png new file mode 100644 index 0000000000..1164ee04e1 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/potted_violet.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/rainbow_birch_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/rainbow_birch_leaves.png new file mode 100644 index 0000000000..faebe8e19c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/rainbow_birch_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/rainbow_birch_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/rainbow_birch_sapling.png new file mode 100644 index 0000000000..e7312e1fcb Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/rainbow_birch_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/redwood_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/redwood_door_bottom.png new file mode 100644 index 0000000000..09c0602f3c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/redwood_door_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/redwood_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/redwood_door_top.png new file mode 100644 index 0000000000..a9cfe8da89 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/redwood_door_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/redwood_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/redwood_leaves.png new file mode 100644 index 0000000000..7bb4b67ba6 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/redwood_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/redwood_log.png b/src/main/resources/assets/biomesoplenty/textures/block/redwood_log.png new file mode 100644 index 0000000000..9b7fb83131 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/redwood_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/redwood_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/redwood_log_top.png new file mode 100644 index 0000000000..e3d20171b0 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/redwood_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/redwood_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/redwood_planks.png new file mode 100644 index 0000000000..b4c186585e Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/redwood_planks.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/redwood_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/redwood_sapling.png new file mode 100644 index 0000000000..0aed7d93e7 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/redwood_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/redwood_trapdoor.png b/src/main/resources/assets/biomesoplenty/textures/block/redwood_trapdoor.png new file mode 100644 index 0000000000..8e5ce062f8 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/redwood_trapdoor.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/reed_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/reed_bottom.png new file mode 100644 index 0000000000..5c9bca2364 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/reed_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/reed_top.png b/src/main/resources/assets/biomesoplenty/textures/block/reed_top.png new file mode 100644 index 0000000000..a9a92a4569 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/reed_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/rose.png b/src/main/resources/assets/biomesoplenty/textures/block/rose.png new file mode 100644 index 0000000000..ea6a84e882 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/rose.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/spanish_moss.png b/src/main/resources/assets/biomesoplenty/textures/block/spanish_moss.png new file mode 100644 index 0000000000..08a50c0020 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/spanish_moss.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/spanish_moss_plant.png b/src/main/resources/assets/biomesoplenty/textures/block/spanish_moss_plant.png new file mode 100644 index 0000000000..367d167669 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/spanish_moss_plant.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/sprout.png b/src/main/resources/assets/biomesoplenty/textures/block/sprout.png new file mode 100644 index 0000000000..93bedbcc9e Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/sprout.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_cherry_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_cherry_log.png new file mode 100644 index 0000000000..0667d4e258 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_cherry_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_cherry_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_cherry_log_top.png new file mode 100644 index 0000000000..18b1523a30 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_cherry_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_dead_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_dead_log.png new file mode 100644 index 0000000000..b176cb694e Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_dead_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_dead_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_dead_log_top.png new file mode 100644 index 0000000000..0286a01016 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_dead_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_fir_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_fir_log.png new file mode 100644 index 0000000000..b14b6f1b9e Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_fir_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_fir_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_fir_log_top.png new file mode 100644 index 0000000000..42ac10b5e0 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_fir_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_hellbark_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_hellbark_log.png new file mode 100644 index 0000000000..bb994d4df5 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_hellbark_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_hellbark_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_hellbark_log_top.png new file mode 100644 index 0000000000..c53bb97951 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_hellbark_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_jacaranda_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_jacaranda_log.png new file mode 100644 index 0000000000..94b25196b9 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_jacaranda_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_jacaranda_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_jacaranda_log_top.png new file mode 100644 index 0000000000..28209713ea Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_jacaranda_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_magic_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_magic_log.png new file mode 100644 index 0000000000..2b1e00221c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_magic_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_magic_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_magic_log_top.png new file mode 100644 index 0000000000..7b50720fc2 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_magic_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_mahogany_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_mahogany_log.png new file mode 100644 index 0000000000..be9016bd6e Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_mahogany_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_mahogany_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_mahogany_log_top.png new file mode 100644 index 0000000000..d29fa49451 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_mahogany_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_palm_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_palm_log.png new file mode 100644 index 0000000000..3d25b81136 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_palm_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_palm_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_palm_log_top.png new file mode 100644 index 0000000000..13fc35b3fb Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_palm_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_redwood_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_redwood_log.png new file mode 100644 index 0000000000..974818b4b4 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_redwood_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_redwood_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_redwood_log_top.png new file mode 100644 index 0000000000..c20ae6a01c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_redwood_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_umbran_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_umbran_log.png new file mode 100644 index 0000000000..70cb5890df Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_umbran_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_umbran_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_umbran_log_top.png new file mode 100644 index 0000000000..03e620c3e7 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_umbran_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_willow_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_willow_log.png new file mode 100644 index 0000000000..02579ee626 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_willow_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_willow_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_willow_log_top.png new file mode 100644 index 0000000000..808f53d426 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/stripped_willow_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/toadstool.png b/src/main/resources/assets/biomesoplenty/textures/block/toadstool.png new file mode 100644 index 0000000000..c2ed472f76 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/toadstool.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/toadstool_block.png b/src/main/resources/assets/biomesoplenty/textures/block/toadstool_block.png new file mode 100644 index 0000000000..52794fc1e1 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/toadstool_block.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/umbran_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/umbran_door_bottom.png new file mode 100644 index 0000000000..b3b76daed7 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/umbran_door_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/umbran_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/umbran_door_top.png new file mode 100644 index 0000000000..1cb6453d50 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/umbran_door_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/umbran_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/umbran_leaves.png new file mode 100644 index 0000000000..c15ca1a3fb Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/umbran_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/umbran_log.png b/src/main/resources/assets/biomesoplenty/textures/block/umbran_log.png new file mode 100644 index 0000000000..1d5352ec3f Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/umbran_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/umbran_log_holes.png b/src/main/resources/assets/biomesoplenty/textures/block/umbran_log_holes.png new file mode 100644 index 0000000000..2aa9b70c65 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/umbran_log_holes.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/umbran_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/umbran_log_top.png new file mode 100644 index 0000000000..e9494d98a0 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/umbran_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/umbran_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/umbran_planks.png new file mode 100644 index 0000000000..cbf339435d Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/umbran_planks.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/umbran_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/umbran_sapling.png new file mode 100644 index 0000000000..71af2316e8 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/umbran_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/umbran_trapdoor.png b/src/main/resources/assets/biomesoplenty/textures/block/umbran_trapdoor.png new file mode 100644 index 0000000000..c865c8f731 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/umbran_trapdoor.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/violet.png b/src/main/resources/assets/biomesoplenty/textures/block/violet.png new file mode 100644 index 0000000000..d7039bc2d9 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/violet.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/white_cherry_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/white_cherry_leaves.png new file mode 100644 index 0000000000..3f993d3a31 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/white_cherry_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/white_cherry_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/white_cherry_sapling.png new file mode 100644 index 0000000000..840dd31646 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/white_cherry_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/white_sand.png b/src/main/resources/assets/biomesoplenty/textures/block/white_sand.png new file mode 100644 index 0000000000..ca722e7f7c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/white_sand.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/white_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/white_sandstone.png new file mode 100644 index 0000000000..1f4a3fb8f2 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/white_sandstone.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/white_sandstone_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/white_sandstone_bottom.png new file mode 100644 index 0000000000..d60808a4bd Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/white_sandstone_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/white_sandstone_top.png b/src/main/resources/assets/biomesoplenty/textures/block/white_sandstone_top.png new file mode 100644 index 0000000000..03347ac630 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/white_sandstone_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/wildflower.png b/src/main/resources/assets/biomesoplenty/textures/block/wildflower.png new file mode 100644 index 0000000000..848196b0a6 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/wildflower.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/willow_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/willow_door_bottom.png new file mode 100644 index 0000000000..d22df80b4c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/willow_door_bottom.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/willow_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/willow_door_top.png new file mode 100644 index 0000000000..a531d804d2 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/willow_door_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/willow_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/willow_leaves.png new file mode 100644 index 0000000000..79606fab1c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/willow_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/willow_log.png b/src/main/resources/assets/biomesoplenty/textures/block/willow_log.png new file mode 100644 index 0000000000..d97f681f23 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/willow_log.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/willow_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/willow_log_top.png new file mode 100644 index 0000000000..1d0c379da5 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/willow_log_top.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/willow_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/willow_planks.png new file mode 100644 index 0000000000..f13e8233f1 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/willow_planks.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/willow_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/willow_sapling.png new file mode 100644 index 0000000000..24f0ef6eff Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/willow_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/willow_trapdoor.png b/src/main/resources/assets/biomesoplenty/textures/block/willow_trapdoor.png new file mode 100644 index 0000000000..e7ddca5412 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/willow_trapdoor.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/willow_vine.png b/src/main/resources/assets/biomesoplenty/textures/block/willow_vine.png new file mode 100644 index 0000000000..6043bf8205 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/willow_vine.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/wilted_lily.png b/src/main/resources/assets/biomesoplenty/textures/block/wilted_lily.png new file mode 100644 index 0000000000..d52080242e Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/wilted_lily.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/yellow_autumn_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/yellow_autumn_leaves.png new file mode 100644 index 0000000000..14eb47d041 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/yellow_autumn_leaves.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/block/yellow_autumn_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/yellow_autumn_sapling.png new file mode 100644 index 0000000000..b921fbddff Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/block/yellow_autumn_sapling.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/cherry.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/cherry.png new file mode 100644 index 0000000000..0aa4bd8e7c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/boat/cherry.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/dead.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/dead.png new file mode 100644 index 0000000000..95e56d2223 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/boat/dead.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/fir.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/fir.png new file mode 100644 index 0000000000..5b32843979 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/boat/fir.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/hellbark.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/hellbark.png new file mode 100644 index 0000000000..3ae2916b70 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/boat/hellbark.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/jacaranda.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/jacaranda.png new file mode 100644 index 0000000000..04cf01b5f3 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/boat/jacaranda.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/magic.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/magic.png new file mode 100644 index 0000000000..3f72d71f80 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/boat/magic.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/mahogany.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/mahogany.png new file mode 100644 index 0000000000..6cc55149d1 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/boat/mahogany.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/palm.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/palm.png new file mode 100644 index 0000000000..eb049ba979 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/boat/palm.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/redwood.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/redwood.png new file mode 100644 index 0000000000..ee8eece972 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/boat/redwood.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/umbran.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/umbran.png new file mode 100644 index 0000000000..1082d1a2b9 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/boat/umbran.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/willow.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/willow.png new file mode 100644 index 0000000000..878e13eba0 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/boat/willow.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/signs/cherry.png b/src/main/resources/assets/biomesoplenty/textures/entity/signs/cherry.png new file mode 100644 index 0000000000..3f00b77fb2 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/signs/cherry.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/signs/dead.png b/src/main/resources/assets/biomesoplenty/textures/entity/signs/dead.png new file mode 100644 index 0000000000..c66badcbf0 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/signs/dead.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/signs/fir.png b/src/main/resources/assets/biomesoplenty/textures/entity/signs/fir.png new file mode 100644 index 0000000000..b6bc11fa44 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/signs/fir.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/signs/hellbark.png b/src/main/resources/assets/biomesoplenty/textures/entity/signs/hellbark.png new file mode 100644 index 0000000000..68083c8809 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/signs/hellbark.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/signs/jacaranda.png b/src/main/resources/assets/biomesoplenty/textures/entity/signs/jacaranda.png new file mode 100644 index 0000000000..7ea27de0f2 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/signs/jacaranda.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/signs/magic.png b/src/main/resources/assets/biomesoplenty/textures/entity/signs/magic.png new file mode 100644 index 0000000000..a0a98c3f72 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/signs/magic.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/signs/mahogany.png b/src/main/resources/assets/biomesoplenty/textures/entity/signs/mahogany.png new file mode 100644 index 0000000000..01dfc46d45 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/signs/mahogany.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/signs/palm.png b/src/main/resources/assets/biomesoplenty/textures/entity/signs/palm.png new file mode 100644 index 0000000000..e79093d0a8 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/signs/palm.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/signs/redwood.png b/src/main/resources/assets/biomesoplenty/textures/entity/signs/redwood.png new file mode 100644 index 0000000000..69ed10e8f5 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/signs/redwood.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/signs/umbran.png b/src/main/resources/assets/biomesoplenty/textures/entity/signs/umbran.png new file mode 100644 index 0000000000..7d4558f95a Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/signs/umbran.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/signs/willow.png b/src/main/resources/assets/biomesoplenty/textures/entity/signs/willow.png new file mode 100644 index 0000000000..f139f81456 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/entity/signs/willow.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/gui/advancements/backgrounds/biomesoplenty.png b/src/main/resources/assets/biomesoplenty/textures/gui/advancements/backgrounds/biomesoplenty.png new file mode 100644 index 0000000000..be425fd1ba Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/gui/advancements/backgrounds/biomesoplenty.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/bop_icon.png b/src/main/resources/assets/biomesoplenty/textures/item/bop_icon.png new file mode 100644 index 0000000000..9e5a3883ca Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/bop_icon.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/bramble.png b/src/main/resources/assets/biomesoplenty/textures/item/bramble.png new file mode 100644 index 0000000000..82c856f70c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/bramble.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/cattail.png b/src/main/resources/assets/biomesoplenty/textures/item/cattail.png new file mode 100644 index 0000000000..dcb8440244 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/cattail.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/cherry_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/cherry_boat.png new file mode 100644 index 0000000000..4181b15296 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/cherry_boat.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/cherry_door.png b/src/main/resources/assets/biomesoplenty/textures/item/cherry_door.png new file mode 100644 index 0000000000..7eee7cb978 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/cherry_door.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/cherry_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/cherry_sign.png new file mode 100644 index 0000000000..2465ec29f1 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/cherry_sign.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/dead_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/dead_boat.png new file mode 100644 index 0000000000..1896b2f1a2 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/dead_boat.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/dead_branch.png b/src/main/resources/assets/biomesoplenty/textures/item/dead_branch.png new file mode 100644 index 0000000000..24d5306bdc Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/dead_branch.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/dead_door.png b/src/main/resources/assets/biomesoplenty/textures/item/dead_door.png new file mode 100644 index 0000000000..d8fc85fc8c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/dead_door.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/dead_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/dead_sign.png new file mode 100644 index 0000000000..a1aebf1b28 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/dead_sign.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/fir_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/fir_boat.png new file mode 100644 index 0000000000..e71ec64159 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/fir_boat.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/fir_door.png b/src/main/resources/assets/biomesoplenty/textures/item/fir_door.png new file mode 100644 index 0000000000..4607ac293c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/fir_door.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/fir_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/fir_sign.png new file mode 100644 index 0000000000..dc218f415a Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/fir_sign.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/hellbark_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/hellbark_boat.png new file mode 100644 index 0000000000..8c8db3f964 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/hellbark_boat.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/hellbark_door.png b/src/main/resources/assets/biomesoplenty/textures/item/hellbark_door.png new file mode 100644 index 0000000000..30939123a8 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/hellbark_door.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/hellbark_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/hellbark_sign.png new file mode 100644 index 0000000000..b0d9b7f4f4 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/hellbark_sign.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/huge_clover_petal.png b/src/main/resources/assets/biomesoplenty/textures/item/huge_clover_petal.png new file mode 100644 index 0000000000..f2c0f803c2 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/huge_clover_petal.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/jacaranda_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/jacaranda_boat.png new file mode 100644 index 0000000000..b7a6b5727a Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/jacaranda_boat.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/jacaranda_door.png b/src/main/resources/assets/biomesoplenty/textures/item/jacaranda_door.png new file mode 100644 index 0000000000..ec2f209d6a Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/jacaranda_door.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/jacaranda_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/jacaranda_sign.png new file mode 100644 index 0000000000..7873cd845c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/jacaranda_sign.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/magic_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/magic_boat.png new file mode 100644 index 0000000000..88aaaa6e1d Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/magic_boat.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/magic_door.png b/src/main/resources/assets/biomesoplenty/textures/item/magic_door.png new file mode 100644 index 0000000000..e6152879de Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/magic_door.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/magic_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/magic_sign.png new file mode 100644 index 0000000000..2db7b7878a Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/magic_sign.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/mahogany_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/mahogany_boat.png new file mode 100644 index 0000000000..2b1368ea98 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/mahogany_boat.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/mahogany_door.png b/src/main/resources/assets/biomesoplenty/textures/item/mahogany_door.png new file mode 100644 index 0000000000..c825cc5fb6 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/mahogany_door.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/mahogany_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/mahogany_sign.png new file mode 100644 index 0000000000..5aa024721e Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/mahogany_sign.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/mangrove_root.png b/src/main/resources/assets/biomesoplenty/textures/item/mangrove_root.png new file mode 100644 index 0000000000..df8aa16dcf Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/mangrove_root.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/mud_ball.png b/src/main/resources/assets/biomesoplenty/textures/item/mud_ball.png new file mode 100644 index 0000000000..9d66d7af5d Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/mud_ball.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/mud_brick.png b/src/main/resources/assets/biomesoplenty/textures/item/mud_brick.png new file mode 100644 index 0000000000..3c357ae833 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/mud_brick.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/music_disc_wanderer.png b/src/main/resources/assets/biomesoplenty/textures/item/music_disc_wanderer.png new file mode 100644 index 0000000000..21a0b7fb41 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/music_disc_wanderer.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/palm_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/palm_boat.png new file mode 100644 index 0000000000..f46c323d3a Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/palm_boat.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/palm_door.png b/src/main/resources/assets/biomesoplenty/textures/item/palm_door.png new file mode 100644 index 0000000000..52fc68b65b Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/palm_door.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/palm_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/palm_sign.png new file mode 100644 index 0000000000..485e442e32 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/palm_sign.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/redwood_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/redwood_boat.png new file mode 100644 index 0000000000..480a456535 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/redwood_boat.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/redwood_door.png b/src/main/resources/assets/biomesoplenty/textures/item/redwood_door.png new file mode 100644 index 0000000000..9820916af2 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/redwood_door.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/redwood_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/redwood_sign.png new file mode 100644 index 0000000000..32a22b17e6 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/redwood_sign.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/reed.png b/src/main/resources/assets/biomesoplenty/textures/item/reed.png new file mode 100644 index 0000000000..7a41399980 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/reed.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/umbran_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/umbran_boat.png new file mode 100644 index 0000000000..408504a87b Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/umbran_boat.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/umbran_door.png b/src/main/resources/assets/biomesoplenty/textures/item/umbran_door.png new file mode 100644 index 0000000000..fb26105c2b Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/umbran_door.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/umbran_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/umbran_sign.png new file mode 100644 index 0000000000..1ba6e6c76c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/umbran_sign.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/watergrass.png b/src/main/resources/assets/biomesoplenty/textures/item/watergrass.png new file mode 100644 index 0000000000..5a9e2a6c8d Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/watergrass.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/willow_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/willow_boat.png new file mode 100644 index 0000000000..599977989f Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/willow_boat.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/willow_door.png b/src/main/resources/assets/biomesoplenty/textures/item/willow_door.png new file mode 100644 index 0000000000..0786b42609 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/willow_door.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/item/willow_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/willow_sign.png new file mode 100644 index 0000000000..340c5e915b Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/item/willow_sign.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/painting/coast.png b/src/main/resources/assets/biomesoplenty/textures/painting/coast.png new file mode 100644 index 0000000000..015e24a6ad Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/painting/coast.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/painting/first_world.png b/src/main/resources/assets/biomesoplenty/textures/painting/first_world.png new file mode 100644 index 0000000000..307ea05fb7 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/painting/first_world.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/painting/nether_wasp.png b/src/main/resources/assets/biomesoplenty/textures/painting/nether_wasp.png new file mode 100644 index 0000000000..aec899893d Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/painting/nether_wasp.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/painting/promised_land.png b/src/main/resources/assets/biomesoplenty/textures/painting/promised_land.png new file mode 100644 index 0000000000..58a32abe12 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/painting/promised_land.png differ diff --git a/src/main/resources/bop_logo.png b/src/main/resources/bop_logo.png new file mode 100644 index 0000000000..6a871fe738 Binary files /dev/null and b/src/main/resources/bop_logo.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/barley_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/barley_bottom.png new file mode 100644 index 0000000000..7c4f2dfb8d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/barley_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/barley_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/barley_top.png new file mode 100644 index 0000000000..9ed344969c Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/barley_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sand.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sand.png new file mode 100644 index 0000000000..a45111a9c4 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sand.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone.png new file mode 100644 index 0000000000..57660d536a Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone_bottom.png new file mode 100644 index 0000000000..5ab2913d25 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone_top.png new file mode 100644 index 0000000000..cc55fa6e61 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/blue_hydrangea_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/blue_hydrangea_bottom.png new file mode 100644 index 0000000000..135d75e6dd Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/blue_hydrangea_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/blue_hydrangea_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/blue_hydrangea_top.png new file mode 100644 index 0000000000..f3b3cadd92 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/blue_hydrangea_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/bramble.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/bramble.png new file mode 100644 index 0000000000..f65c4322dc Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/bramble.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/bramble_thorns.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/bramble_thorns.png new file mode 100644 index 0000000000..d24ed22175 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/bramble_thorns.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/burning_blossom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/burning_blossom.png new file mode 100644 index 0000000000..fb20b75235 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/burning_blossom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/bush.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/bush.png new file mode 100644 index 0000000000..be8b38dde7 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/bush.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cattail_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cattail_bottom.png new file mode 100644 index 0000000000..81e63b2f6b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/cattail_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cattail_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cattail_top.png new file mode 100644 index 0000000000..13f28b547b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/cattail_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_door_bottom.png new file mode 100644 index 0000000000..3295190385 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_door_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_door_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_door_top.png new file mode 100644 index 0000000000..fc1f6c391a Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_door_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_log.png new file mode 100644 index 0000000000..2f65b45c77 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_log_top.png new file mode 100644 index 0000000000..d60d4caa56 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_planks.png new file mode 100644 index 0000000000..3ba1312e56 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_planks.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_trapdoor.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_trapdoor.png new file mode 100644 index 0000000000..7471333a8d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_trapdoor.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/chiseled_black_sandstone.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/chiseled_black_sandstone.png new file mode 100644 index 0000000000..25e813ee1a Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/chiseled_black_sandstone.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/chiseled_orange_sandstone.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/chiseled_orange_sandstone.png new file mode 100644 index 0000000000..721533268d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/chiseled_orange_sandstone.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/chiseled_white_sandstone.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/chiseled_white_sandstone.png new file mode 100644 index 0000000000..1c3b40e854 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/chiseled_white_sandstone.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/clover.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/clover.png new file mode 100644 index 0000000000..45175e1cf8 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/clover.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/clover_stem.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/clover_stem.png new file mode 100644 index 0000000000..ceb77b46c8 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/clover_stem.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cut_black_sandstone.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cut_black_sandstone.png new file mode 100644 index 0000000000..05b5f7943b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/cut_black_sandstone.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cut_orange_sandstone.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cut_orange_sandstone.png new file mode 100644 index 0000000000..a389be318c Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/cut_orange_sandstone.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cut_white_sandstone.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cut_white_sandstone.png new file mode 100644 index 0000000000..d10474e10a Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/cut_white_sandstone.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_branch.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_branch.png new file mode 100644 index 0000000000..188e6d0dc2 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_branch.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_door_bottom.png new file mode 100644 index 0000000000..01aad328b3 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_door_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_door_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_door_top.png new file mode 100644 index 0000000000..424cb884d2 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_door_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_grass.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_grass.png new file mode 100644 index 0000000000..0cc918518a Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_grass.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_leaves.png new file mode 100644 index 0000000000..84053d842c Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_log.png new file mode 100644 index 0000000000..d0958b1c4e Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_log_top.png new file mode 100644 index 0000000000..9fbe53781e Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_planks.png new file mode 100644 index 0000000000..63e2093c9c Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_planks.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_sapling.png new file mode 100644 index 0000000000..baecd2e71f Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_trapdoor.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_trapdoor.png new file mode 100644 index 0000000000..b39eff6b3c Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_trapdoor.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/desert_grass.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/desert_grass.png new file mode 100644 index 0000000000..acb0f16508 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/desert_grass.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dried_salt.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dried_salt.png new file mode 100644 index 0000000000..881f4d0d12 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/dried_salt.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dune_grass.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dune_grass.png new file mode 100644 index 0000000000..8ac147f0d3 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/dune_grass.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_door_bottom.png new file mode 100644 index 0000000000..ca8b802207 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_door_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_door_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_door_top.png new file mode 100644 index 0000000000..d2cb523175 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_door_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_leaves.png new file mode 100644 index 0000000000..0823130457 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_log.png new file mode 100644 index 0000000000..c270d231ef Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_log_top.png new file mode 100644 index 0000000000..49ea590c0f Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_planks.png new file mode 100644 index 0000000000..4427c193b9 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_planks.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_sapling.png new file mode 100644 index 0000000000..6f78e32a61 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_trapdoor.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_trapdoor.png new file mode 100644 index 0000000000..325eb6330f Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_trapdoor.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/flesh.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/flesh.png new file mode 100644 index 0000000000..2a766fd1c4 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/flesh.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/flowering_oak_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/flowering_oak_leaves.png new file mode 100644 index 0000000000..33859825e7 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/flowering_oak_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/flowering_oak_leaves_overlay.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/flowering_oak_leaves_overlay.png new file mode 100644 index 0000000000..0201d4958a Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/flowering_oak_leaves_overlay.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/flowering_oak_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/flowering_oak_sapling.png new file mode 100644 index 0000000000..e4ee88675f Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/flowering_oak_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/glowflower.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/glowflower.png new file mode 100644 index 0000000000..e3abcf3df0 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/glowflower.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/glowshroom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/glowshroom.png new file mode 100644 index 0000000000..c382b409c6 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/glowshroom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/glowshroom_block.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/glowshroom_block.png new file mode 100644 index 0000000000..f832e886ed Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/glowshroom_block.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/goldenrod_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/goldenrod_bottom.png new file mode 100644 index 0000000000..7b18b9f09d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/goldenrod_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/goldenrod_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/goldenrod_top.png new file mode 100644 index 0000000000..2fdee1f99b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/goldenrod_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_door_bottom.png new file mode 100644 index 0000000000..af9acc7eef Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_door_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_door_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_door_top.png new file mode 100644 index 0000000000..808e7fd865 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_door_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_leaves.png new file mode 100644 index 0000000000..5646202349 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_log.png new file mode 100644 index 0000000000..ecf08fc9fe Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_log_top.png new file mode 100644 index 0000000000..8a08ba65ab Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_planks.png new file mode 100644 index 0000000000..4d68a37ac4 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_planks.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_sapling.png new file mode 100644 index 0000000000..13b9493597 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_trapdoor.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_trapdoor.png new file mode 100644 index 0000000000..b32607a70f Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_trapdoor.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_petal.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_petal.png new file mode 100644 index 0000000000..49115e5027 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_petal.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem.png new file mode 100644 index 0000000000..50e9a13dcf Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem_back.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem_back.png new file mode 100644 index 0000000000..78dbcb9b3b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem_back.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_door_bottom.png new file mode 100644 index 0000000000..5dbd6b597e Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_door_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_door_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_door_top.png new file mode 100644 index 0000000000..5302934729 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_door_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_leaves.png new file mode 100644 index 0000000000..918fbdcbc6 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_log.png new file mode 100644 index 0000000000..880e6e6f53 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_log_top.png new file mode 100644 index 0000000000..a1566b67b0 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_planks.png new file mode 100644 index 0000000000..325d3670a9 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_planks.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_sapling.png new file mode 100644 index 0000000000..45ce7eed16 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_trapdoor.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_trapdoor.png new file mode 100644 index 0000000000..e028deee0d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_trapdoor.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/lavender.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/lavender.png new file mode 100644 index 0000000000..080fce0f2f Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/lavender.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_door_bottom.png new file mode 100644 index 0000000000..ccd035cdc3 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_door_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_door_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_door_top.png new file mode 100644 index 0000000000..79c6ae00e8 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_door_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_leaves.png new file mode 100644 index 0000000000..4dd951bbc1 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_log.png new file mode 100644 index 0000000000..aceadc483b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_log_top.png new file mode 100644 index 0000000000..58f7f5169d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_planks.png new file mode 100644 index 0000000000..89ec09d410 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_planks.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_sapling.png new file mode 100644 index 0000000000..ca4b56f0d3 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_trapdoor.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_trapdoor.png new file mode 100644 index 0000000000..bf46ca2d84 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_trapdoor.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_door_bottom.png new file mode 100644 index 0000000000..315b967612 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_door_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_door_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_door_top.png new file mode 100644 index 0000000000..173400688e Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_door_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_leaves.png new file mode 100644 index 0000000000..d78dc49f04 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_log.png new file mode 100644 index 0000000000..5bcdf759f1 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_log_top.png new file mode 100644 index 0000000000..703aaf852b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_planks.png new file mode 100644 index 0000000000..e56b34d737 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_planks.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_sapling.png new file mode 100644 index 0000000000..874bac9c0e Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_trapdoor.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_trapdoor.png new file mode 100644 index 0000000000..a21d29835e Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_trapdoor.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mangrove_root_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mangrove_root_bottom.png new file mode 100644 index 0000000000..0caddd0e2d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/mangrove_root_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mangrove_root_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mangrove_root_top.png new file mode 100644 index 0000000000..7d6a3b51a0 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/mangrove_root_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/maple_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/maple_leaves.png new file mode 100644 index 0000000000..b781252a35 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/maple_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/maple_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/maple_sapling.png new file mode 100644 index 0000000000..faa1ed1f83 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/maple_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mud.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mud.png new file mode 100644 index 0000000000..fd2011fc62 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/mud.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mud_bricks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mud_bricks.png new file mode 100644 index 0000000000..04f70770ea Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/mud_bricks.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/nether_crystal.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/nether_crystal.png new file mode 100644 index 0000000000..78516c155b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/nether_crystal.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/nether_crystal_block.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/nether_crystal_block.png new file mode 100644 index 0000000000..155b56d128 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/nether_crystal_block.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_autumn_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_autumn_leaves.png new file mode 100644 index 0000000000..8d3b3521cb Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_autumn_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_autumn_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_autumn_sapling.png new file mode 100644 index 0000000000..9d44421398 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_autumn_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_cosmos.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_cosmos.png new file mode 100644 index 0000000000..1ceb74dbce Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_cosmos.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_sand.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_sand.png new file mode 100644 index 0000000000..85277d5d0e Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_sand.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_sandstone.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_sandstone.png new file mode 100644 index 0000000000..ef90564263 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_sandstone.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_sandstone_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_sandstone_bottom.png new file mode 100644 index 0000000000..60d643d319 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_sandstone_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_sandstone_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_sandstone_top.png new file mode 100644 index 0000000000..fd403d484b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_sandstone_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_grass_block_side.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_grass_block_side.png new file mode 100644 index 0000000000..7e0f4909af Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_grass_block_side.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_grass_block_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_grass_block_top.png new file mode 100644 index 0000000000..1d4d19c122 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_grass_block_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_leaves.png new file mode 100644 index 0000000000..62e2633c08 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_sapling.png new file mode 100644 index 0000000000..dfb238cd9b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_door_bottom.png new file mode 100644 index 0000000000..0cfdb1532d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_door_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_door_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_door_top.png new file mode 100644 index 0000000000..cf12cba474 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_door_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_leaves.png new file mode 100644 index 0000000000..0cea50c80a Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_log.png new file mode 100644 index 0000000000..50c804b2d2 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_log_top.png new file mode 100644 index 0000000000..bc426ae45a Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_planks.png new file mode 100644 index 0000000000..789b64d1f7 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_planks.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_sapling.png new file mode 100644 index 0000000000..b0ada41637 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_trapdoor.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_trapdoor.png new file mode 100644 index 0000000000..8d2ac876cc Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_trapdoor.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_cherry_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_cherry_leaves.png new file mode 100644 index 0000000000..17ab4e8d7d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_cherry_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_cherry_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_cherry_sapling.png new file mode 100644 index 0000000000..1cfe8e21a9 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_cherry_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_daffodil.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_daffodil.png new file mode 100644 index 0000000000..5585b2dec3 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_daffodil.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_hibiscus.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_hibiscus.png new file mode 100644 index 0000000000..50b7959351 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_hibiscus.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/potted_glowshroom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/potted_glowshroom.png new file mode 100644 index 0000000000..29dbe722c3 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/potted_glowshroom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/potted_lavender.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/potted_lavender.png new file mode 100644 index 0000000000..47b9ebad72 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/potted_lavender.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/potted_sprout.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/potted_sprout.png new file mode 100644 index 0000000000..a30fd1e543 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/potted_sprout.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/potted_violet.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/potted_violet.png new file mode 100644 index 0000000000..75c4bb9667 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/potted_violet.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/rainbow_birch_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/rainbow_birch_leaves.png new file mode 100644 index 0000000000..c9b5555a5a Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/rainbow_birch_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/rainbow_birch_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/rainbow_birch_sapling.png new file mode 100644 index 0000000000..969194e4dc Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/rainbow_birch_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_door_bottom.png new file mode 100644 index 0000000000..862ccc6942 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_door_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_door_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_door_top.png new file mode 100644 index 0000000000..fdd9ccacbb Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_door_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_leaves.png new file mode 100644 index 0000000000..01a9b42959 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_log.png new file mode 100644 index 0000000000..19ea81aef9 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_log_top.png new file mode 100644 index 0000000000..edcce6eacd Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_planks.png new file mode 100644 index 0000000000..bd129a142d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_planks.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_sapling.png new file mode 100644 index 0000000000..bc0066561a Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_trapdoor.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_trapdoor.png new file mode 100644 index 0000000000..68040b1c5f Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_trapdoor.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/reed_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/reed_bottom.png new file mode 100644 index 0000000000..0d13678e70 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/reed_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/reed_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/reed_top.png new file mode 100644 index 0000000000..4ae611afc3 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/reed_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/rose.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/rose.png new file mode 100644 index 0000000000..37504a80ca Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/rose.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/spanish_moss.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/spanish_moss.png new file mode 100644 index 0000000000..1b43701017 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/spanish_moss.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/spanish_moss_plant.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/spanish_moss_plant.png new file mode 100644 index 0000000000..b57c554eb7 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/spanish_moss_plant.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/sprout.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/sprout.png new file mode 100644 index 0000000000..b9f6359f61 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/sprout.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_cherry_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_cherry_log.png new file mode 100644 index 0000000000..4ac430a455 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_cherry_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_cherry_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_cherry_log_top.png new file mode 100644 index 0000000000..9082df5bad Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_cherry_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_dead_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_dead_log.png new file mode 100644 index 0000000000..0efa4f2094 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_dead_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_dead_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_dead_log_top.png new file mode 100644 index 0000000000..f47529a71d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_dead_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_fir_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_fir_log.png new file mode 100644 index 0000000000..eb4414ed63 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_fir_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_fir_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_fir_log_top.png new file mode 100644 index 0000000000..59551f66ee Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_fir_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_hellbark_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_hellbark_log.png new file mode 100644 index 0000000000..9573e98aec Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_hellbark_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_hellbark_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_hellbark_log_top.png new file mode 100644 index 0000000000..265a4c8d71 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_hellbark_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_jacaranda_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_jacaranda_log.png new file mode 100644 index 0000000000..d56c404f07 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_jacaranda_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_jacaranda_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_jacaranda_log_top.png new file mode 100644 index 0000000000..ba3cd1b820 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_jacaranda_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_magic_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_magic_log.png new file mode 100644 index 0000000000..897daeaf04 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_magic_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_magic_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_magic_log_top.png new file mode 100644 index 0000000000..86fe04f5d5 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_magic_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_mahogany_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_mahogany_log.png new file mode 100644 index 0000000000..fc9674265d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_mahogany_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_mahogany_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_mahogany_log_top.png new file mode 100644 index 0000000000..e04aff63af Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_mahogany_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_palm_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_palm_log.png new file mode 100644 index 0000000000..255642866b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_palm_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_palm_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_palm_log_top.png new file mode 100644 index 0000000000..9cfa64894d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_palm_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_redwood_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_redwood_log.png new file mode 100644 index 0000000000..fb92f24f2e Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_redwood_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_redwood_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_redwood_log_top.png new file mode 100644 index 0000000000..0aba6ba7ec Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_redwood_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_umbran_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_umbran_log.png new file mode 100644 index 0000000000..2cd446e5de Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_umbran_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_umbran_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_umbran_log_top.png new file mode 100644 index 0000000000..16a66235db Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_umbran_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_willow_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_willow_log.png new file mode 100644 index 0000000000..78c2c5cdda Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_willow_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_willow_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_willow_log_top.png new file mode 100644 index 0000000000..46dc8f9560 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_willow_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/toadstool.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/toadstool.png new file mode 100644 index 0000000000..66c77c4cf1 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/toadstool.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/toadstool_block.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/toadstool_block.png new file mode 100644 index 0000000000..7e25a1a5e8 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/toadstool_block.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_door_bottom.png new file mode 100644 index 0000000000..5cdfa63958 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_door_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_door_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_door_top.png new file mode 100644 index 0000000000..2c9ccc2617 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_door_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_leaves.png new file mode 100644 index 0000000000..680e609d5b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_log.png new file mode 100644 index 0000000000..54bbea70d0 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_log_holes.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_log_holes.png new file mode 100644 index 0000000000..021bbf7f80 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_log_holes.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_log_top.png new file mode 100644 index 0000000000..5efaf69378 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_planks.png new file mode 100644 index 0000000000..c94cce9e9e Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_planks.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_sapling.png new file mode 100644 index 0000000000..652af2349d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_trapdoor.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_trapdoor.png new file mode 100644 index 0000000000..0ebe182c65 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_trapdoor.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/violet.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/violet.png new file mode 100644 index 0000000000..8f30205140 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/violet.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/white_cherry_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_cherry_leaves.png new file mode 100644 index 0000000000..900568fafe Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_cherry_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/white_cherry_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_cherry_sapling.png new file mode 100644 index 0000000000..c15f4a00b5 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_cherry_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sand.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sand.png new file mode 100644 index 0000000000..1cd14f8f73 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sand.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone.png new file mode 100644 index 0000000000..d181ff8729 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone_bottom.png new file mode 100644 index 0000000000..aee5816644 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone_top.png new file mode 100644 index 0000000000..cb8ff3f31e Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/wildflower.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/wildflower.png new file mode 100644 index 0000000000..15b2a83df9 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/wildflower.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_door_bottom.png new file mode 100644 index 0000000000..ea5a11b190 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_door_bottom.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_door_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_door_top.png new file mode 100644 index 0000000000..56db7d2f45 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_door_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_leaves.png new file mode 100644 index 0000000000..50042a143d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_log.png new file mode 100644 index 0000000000..9ef2ad8239 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_log.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_log_top.png new file mode 100644 index 0000000000..6f367572b8 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_log_top.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_planks.png new file mode 100644 index 0000000000..b092ff5959 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_planks.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_sapling.png new file mode 100644 index 0000000000..71162514df Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_trapdoor.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_trapdoor.png new file mode 100644 index 0000000000..7e42e18226 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_trapdoor.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_vine.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_vine.png new file mode 100644 index 0000000000..0368de711d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_vine.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/wilted_lily.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/wilted_lily.png new file mode 100644 index 0000000000..8ad2c5034e Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/wilted_lily.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/yellow_autumn_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/yellow_autumn_leaves.png new file mode 100644 index 0000000000..7b253fa9ba Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/yellow_autumn_leaves.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/yellow_autumn_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/yellow_autumn_sapling.png new file mode 100644 index 0000000000..78fbf5eee7 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/block/yellow_autumn_sapling.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/cherry.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/cherry.png new file mode 100644 index 0000000000..2a80e27316 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/cherry.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/dead.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/dead.png new file mode 100644 index 0000000000..a5d2165b0f Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/dead.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/fir.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/fir.png new file mode 100644 index 0000000000..71a773a11d Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/fir.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/hellbark.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/hellbark.png new file mode 100644 index 0000000000..d87543178b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/hellbark.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/jacaranda.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/jacaranda.png new file mode 100644 index 0000000000..eacc6b0d36 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/jacaranda.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/magic.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/magic.png new file mode 100644 index 0000000000..f31f6810ab Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/magic.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/mahogany.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/mahogany.png new file mode 100644 index 0000000000..72e9e7b411 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/mahogany.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/palm.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/palm.png new file mode 100644 index 0000000000..6e9ebc36b3 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/palm.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/redwood.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/redwood.png new file mode 100644 index 0000000000..f4aadf1d71 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/redwood.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/umbran.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/umbran.png new file mode 100644 index 0000000000..95a8cbb81a Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/umbran.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/willow.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/willow.png new file mode 100644 index 0000000000..86a5bcac61 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/willow.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/gui/advancements/backgrounds/biomesoplenty.png b/src/main/resources/classic/assets/biomesoplenty/textures/gui/advancements/backgrounds/biomesoplenty.png new file mode 100644 index 0000000000..b31f596132 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/gui/advancements/backgrounds/biomesoplenty.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/bop_icon.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/bop_icon.png new file mode 100644 index 0000000000..b576b28e16 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/bop_icon.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/bramble.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/bramble.png new file mode 100644 index 0000000000..82c856f70c Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/bramble.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/cattail.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/cattail.png new file mode 100644 index 0000000000..1f618dd90a Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/cattail.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/cherry_boat.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/cherry_boat.png new file mode 100644 index 0000000000..605378b89e Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/cherry_boat.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/cherry_door.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/cherry_door.png new file mode 100644 index 0000000000..2b5a105a2b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/cherry_door.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/cherry_sign.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/cherry_sign.png new file mode 100644 index 0000000000..2465ec29f1 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/cherry_sign.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/dead_boat.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/dead_boat.png new file mode 100644 index 0000000000..54c0e0c910 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/dead_boat.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/dead_branch.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/dead_branch.png new file mode 100644 index 0000000000..7ad7fd71e5 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/dead_branch.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/dead_door.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/dead_door.png new file mode 100644 index 0000000000..d8fc85fc8c Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/dead_door.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/dead_sign.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/dead_sign.png new file mode 100644 index 0000000000..a1aebf1b28 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/dead_sign.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/fir_boat.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/fir_boat.png new file mode 100644 index 0000000000..fc2d12e2de Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/fir_boat.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/fir_door.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/fir_door.png new file mode 100644 index 0000000000..fd92f248e0 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/fir_door.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/fir_sign.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/fir_sign.png new file mode 100644 index 0000000000..dc218f415a Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/fir_sign.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/hellbark_boat.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/hellbark_boat.png new file mode 100644 index 0000000000..8304c70d8c Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/hellbark_boat.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/hellbark_door.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/hellbark_door.png new file mode 100644 index 0000000000..30939123a8 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/hellbark_door.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/hellbark_sign.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/hellbark_sign.png new file mode 100644 index 0000000000..b0d9b7f4f4 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/hellbark_sign.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/huge_clover_petal.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/huge_clover_petal.png new file mode 100644 index 0000000000..fb51cb70f5 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/huge_clover_petal.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/jacaranda_boat.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/jacaranda_boat.png new file mode 100644 index 0000000000..6d345277d1 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/jacaranda_boat.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/jacaranda_door.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/jacaranda_door.png new file mode 100644 index 0000000000..7fab327c18 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/jacaranda_door.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/jacaranda_sign.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/jacaranda_sign.png new file mode 100644 index 0000000000..7873cd845c Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/jacaranda_sign.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/magic_boat.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/magic_boat.png new file mode 100644 index 0000000000..83d81d0904 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/magic_boat.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/magic_door.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/magic_door.png new file mode 100644 index 0000000000..902cec18fd Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/magic_door.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/magic_sign.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/magic_sign.png new file mode 100644 index 0000000000..2db7b7878a Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/magic_sign.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/mahogany_boat.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/mahogany_boat.png new file mode 100644 index 0000000000..21c4c0583b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/mahogany_boat.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/mahogany_door.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/mahogany_door.png new file mode 100644 index 0000000000..c19a2af6ca Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/mahogany_door.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/mahogany_sign.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/mahogany_sign.png new file mode 100644 index 0000000000..5aa024721e Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/mahogany_sign.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/mangrove_root.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/mangrove_root.png new file mode 100644 index 0000000000..1a01797bf9 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/mangrove_root.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/mud_ball.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/mud_ball.png new file mode 100644 index 0000000000..a93d2920ca Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/mud_ball.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/mud_brick.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/mud_brick.png new file mode 100644 index 0000000000..52812717ea Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/mud_brick.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/music_disc_wanderer.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/music_disc_wanderer.png new file mode 100644 index 0000000000..fefc66911b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/music_disc_wanderer.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/palm_boat.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/palm_boat.png new file mode 100644 index 0000000000..2f5948c9c0 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/palm_boat.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/palm_door.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/palm_door.png new file mode 100644 index 0000000000..2a59380b52 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/palm_door.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/palm_sign.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/palm_sign.png new file mode 100644 index 0000000000..485e442e32 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/palm_sign.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/redwood_boat.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/redwood_boat.png new file mode 100644 index 0000000000..d7d826384c Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/redwood_boat.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/redwood_door.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/redwood_door.png new file mode 100644 index 0000000000..16f713cdf2 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/redwood_door.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/redwood_sign.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/redwood_sign.png new file mode 100644 index 0000000000..32a22b17e6 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/redwood_sign.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/reed.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/reed.png new file mode 100644 index 0000000000..760945f298 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/reed.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/umbran_boat.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/umbran_boat.png new file mode 100644 index 0000000000..404a328aec Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/umbran_boat.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/umbran_door.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/umbran_door.png new file mode 100644 index 0000000000..abbff5963e Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/umbran_door.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/umbran_sign.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/umbran_sign.png new file mode 100644 index 0000000000..1ba6e6c76c Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/umbran_sign.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/watergrass.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/watergrass.png new file mode 100644 index 0000000000..bf03f51c73 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/watergrass.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/willow_boat.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/willow_boat.png new file mode 100644 index 0000000000..f2b31431b1 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/willow_boat.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/willow_door.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/willow_door.png new file mode 100644 index 0000000000..9ed9b17550 Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/willow_door.png differ diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/willow_sign.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/willow_sign.png new file mode 100644 index 0000000000..340c5e915b Binary files /dev/null and b/src/main/resources/classic/assets/biomesoplenty/textures/item/willow_sign.png differ diff --git a/src/main/resources/classic/pack.mcmeta b/src/main/resources/classic/pack.mcmeta new file mode 100644 index 0000000000..70664aa22b --- /dev/null +++ b/src/main/resources/classic/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "description": "The classic look of Biomes O' Plenty (built-in)", + "pack_format": 6 + } +} diff --git a/src/main/resources/classic/pack.png b/src/main/resources/classic/pack.png new file mode 100644 index 0000000000..65d11c6a25 Binary files /dev/null and b/src/main/resources/classic/pack.png differ diff --git a/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/all_biomes.json b/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/all_biomes.json new file mode 100644 index 0000000000..42823e1dd3 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/all_biomes.json @@ -0,0 +1,503 @@ +{ + "display": { + "icon": { + "item": "biomesoplenty:bop_icon" + }, + "title": { + "translate": "advancements.biomesoplenty.all_biomes.title" + }, + "description": { + "translate": "advancements.biomesoplenty.all_biomes.description" + }, + "frame": "challenge", + "show_toast": true, + "announce_to_chat": true + }, + "parent": "biomesoplenty:biomesoplenty/root", + "criteria": { + "alps": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:alps" + } + }, + "alps_foothills": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:alps_foothills" + } + }, + "bamboo_blossom_grove": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:bamboo_blossom_grove" + } + }, + "bayou": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:bayou" + } + }, + "bayou_mangrove": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:bayou_mangrove" + } + }, + "burnt_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:burnt_forest" + } + }, + "cherry_blossom_grove": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:cherry_blossom_grove" + } + }, + "cold_desert": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:cold_desert" + } + }, + "coniferous_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:coniferous_forest" + } + }, + "coniferous_lakes": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:coniferous_lakes" + } + }, + "crystalline_chasm": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:crystalline_chasm" + } + }, + "dead_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:dead_forest" + } + }, + "deep_bayou": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:deep_bayou" + } + }, + "dense_marsh": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:dense_marsh" + } + }, + "dense_woodland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:dense_woodland" + } + }, + "dryland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:dryland" + } + }, + "dry_boneyard": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:dry_boneyard" + } + }, + "fir_clearing": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:fir_clearing" + } + }, + "flower_meadow": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:flower_meadow" + } + }, + "fungal_field": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:fungal_field" + } + }, + "fungal_jungle": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:fungal_jungle" + } + }, + "golden_prairie": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:golden_prairie" + } + }, + "grassland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:grassland" + } + }, + "grassland_clover_patch": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:grassland_clover_patch" + } + }, + "gravel_beach": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:gravel_beach" + } + }, + "grove": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:grove" + } + }, + "grove_clearing": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:grove_clearing" + } + }, + "grove_lakes": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:grove_lakes" + } + }, + "highland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:highland" + } + }, + "highland_crag": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:highland_crag" + } + }, + "highland_moor": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:highland_moor" + } + }, + "jade_cliffs": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:jade_cliffs" + } + }, + "lavender_field": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:lavender_field" + } + }, + "lavender_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:lavender_forest" + } + }, + "lush_desert": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:lush_desert" + } + }, + "lush_savanna": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:lush_savanna" + } + }, + "marsh": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:marsh" + } + }, + "meadow": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:meadow" + } + }, + "meadow_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:meadow_forest" + } + }, + "muskeg": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:muskeg" + } + }, + "mystic_grove": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:mystic_grove" + } + }, + "mystic_plains": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:mystic_plains" + } + }, + "ominous_woods": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:ominous_woods" + } + }, + "ominous_mire": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:ominous_mire" + } + }, + "orchard": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:orchard" + } + }, + "origin_valley": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:origin_valley" + } + }, + "prairie": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:prairie" + } + }, + "rainbow_hills": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:rainbow_hills" + } + }, + "rainforest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:rainforest" + } + }, + "rainforest_cliffs": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:rainforest_cliffs" + } + }, + "rainforest_floodplain": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:rainforest_floodplain" + } + }, + "redwood_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:redwood_forest" + } + }, + "redwood_forest_edge": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:redwood_forest_edge" + } + }, + "redwood_hills": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:redwood_hills" + } + }, + "scrubland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:scrubland" + } + }, + "seasonal_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:seasonal_forest" + } + }, + "seasonal_orchard": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:seasonal_orchard" + } + }, + "seasonal_pumpkin_patch": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:seasonal_pumpkin_patch" + } + }, + "shroomy_wetland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:shroomy_wetland" + } + }, + "shrubland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:shrubland" + } + }, + "shrubland_hills": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:shrubland_hills" + } + }, + "snowy_coniferous_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:snowy_coniferous_forest" + } + }, + "snowy_fir_clearing": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:snowy_fir_clearing" + } + }, + "snowy_maple_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:snowy_maple_forest" + } + }, + "tall_dead_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:tall_dead_forest" + } + }, + "tropic_beach": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:tropic_beach" + } + }, + "tropics": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:tropics" + } + }, + "tundra": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:tundra" + } + }, + "tundra_basin": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:tundra_basin" + } + }, + "tundra_bog": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:tundra_bog" + } + }, + "undergrowth": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:undergrowth" + } + }, + "visceral_heap": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:visceral_heap" + } + }, + "volcanic_plains": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:volcanic_plains" + } + }, + "volcano": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:volcano" + } + }, + "wasteland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:wasteland" + } + }, + "wetland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:wetland" + } + }, + "wetland_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:wetland_forest" + } + }, + "withered_abyss": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:withered_abyss" + } + }, + "wooded_scrubland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:wooded_scrubland" + } + }, + "woodland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:woodland" + } + } + }, + "rewards": { + "experience": 1000, + "loot": ["biomesoplenty:advancements/all_biomes"] + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/root.json b/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/root.json new file mode 100644 index 0000000000..020e2ccc35 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/biomesoplenty/root.json @@ -0,0 +1,582 @@ +{ + "display": { + "icon": { + "item": "biomesoplenty:fir_sapling" + }, + "title": { + "translate": "advancements.biomesoplenty.root.title" + }, + "description": { + "translate": "advancements.biomesoplenty.root.description" + }, + "background": "biomesoplenty:textures/gui/advancements/backgrounds/biomesoplenty.png", + "show_toast": false, + "announce_to_chat": false + }, + "criteria": { + "alps": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:alps" + } + }, + "alps_foothills": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:alps_foothills" + } + }, + "bamboo_blossom_grove": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:bamboo_blossom_grove" + } + }, + "bayou": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:bayou" + } + }, + "bayou_mangrove": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:bayou_mangrove" + } + }, + "burnt_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:burnt_forest" + } + }, + "cherry_blossom_grove": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:cherry_blossom_grove" + } + }, + "cold_desert": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:cold_desert" + } + }, + "coniferous_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:coniferous_forest" + } + }, + "coniferous_lakes": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:coniferous_lakes" + } + }, + "crystalline_chasm": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:crystalline_chasm" + } + }, + "dead_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:dead_forest" + } + }, + "deep_bayou": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:deep_bayou" + } + }, + "dense_marsh": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:dense_marsh" + } + }, + "dense_woodland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:dense_woodland" + } + }, + "dryland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:dryland" + } + }, + "dry_boneyard": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:dry_boneyard" + } + }, + "fir_clearing": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:fir_clearing" + } + }, + "flower_meadow": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:flower_meadow" + } + }, + "fungal_field": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:fungal_field" + } + }, + "fungal_jungle": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:fungal_jungle" + } + }, + "golden_prairie": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:golden_prairie" + } + }, + "grassland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:grassland" + } + }, + "grassland_clover_patch": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:grassland_clover_patch" + } + }, + "gravel_beach": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:gravel_beach" + } + }, + "grove": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:grove" + } + }, + "grove_clearing": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:grove_clearing" + } + }, + "grove_lakes": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:grove_lakes" + } + }, + "highland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:highland" + } + }, + "highland_crag": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:highland_crag" + } + }, + "highland_moor": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:highland_moor" + } + }, + "jade_cliffs": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:jade_cliffs" + } + }, + "lavender_field": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:lavender_field" + } + }, + "lavender_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:lavender_forest" + } + }, + "lush_desert": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:lush_desert" + } + }, + "lush_savanna": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:lush_savanna" + } + }, + "marsh": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:marsh" + } + }, + "meadow": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:meadow" + } + }, + "meadow_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:meadow_forest" + } + }, + "muskeg": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:muskeg" + } + }, + "mystic_grove": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:mystic_grove" + } + }, + "mystic_plains": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:mystic_plains" + } + }, + "ominous_woods": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:ominous_woods" + } + }, + "ominous_mire": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:ominous_mire" + } + }, + "orchard": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:orchard" + } + }, + "origin_valley": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:origin_valley" + } + }, + "prairie": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:prairie" + } + }, + "rainbow_hills": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:rainbow_hills" + } + }, + "rainforest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:rainforest" + } + }, + "rainforest_cliffs": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:rainforest_cliffs" + } + }, + "rainforest_floodplain": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:rainforest_floodplain" + } + }, + "redwood_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:redwood_forest" + } + }, + "redwood_forest_edge": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:redwood_forest_edge" + } + }, + "redwood_hills": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:redwood_hills" + } + }, + "scrubland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:scrubland" + } + }, + "seasonal_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:seasonal_forest" + } + }, + "seasonal_orchard": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:seasonal_orchard" + } + }, + "seasonal_pumpkin_patch": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:seasonal_pumpkin_patch" + } + }, + "shroomy_wetland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:shroomy_wetland" + } + }, + "shrubland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:shrubland" + } + }, + "shrubland_hills": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:shrubland_hills" + } + }, + "snowy_coniferous_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:snowy_coniferous_forest" + } + }, + "snowy_maple_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:snowy_maple_forest" + } + }, + "snowy_fir_clearing": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:snowy_fir_clearing" + } + }, + "tall_dead_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:tall_dead_forest" + } + }, + "tropic_beach": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:tropic_beach" + } + }, + "tropics": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:tropics" + } + }, + "tundra": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:tundra" + } + }, + "tundra_basin": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:tundra_basin" + } + }, + "tundra_bog": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:tundra_bog" + } + }, + "undergrowth": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:undergrowth" + } + }, + "visceral_heap": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:visceral_heap" + } + }, + "volcanic_plains": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:volcanic_plains" + } + }, + "volcano": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:volcano" + } + }, + "wasteland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:wasteland" + } + }, + "wetland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:wetland" + } + }, + "wetland_forest": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:wetland_forest" + } + }, + "withered_abyss": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:withered_abyss" + } + }, + "wooded_scrubland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:wooded_scrubland" + } + }, + "woodland": { + "trigger": "minecraft:location", + "conditions": { + "biome": "biomesoplenty:woodland" + } + } + }, + "requirements": [ + [ + "alps", + "alps_foothills", + "bamboo_blossom_grove", + "bayou", + "bayou_mangrove", + "burnt_forest", + "cherry_blossom_grove", + "cold_desert", + "coniferous_forest", + "coniferous_lakes", + "crystalline_chasm", + "dead_forest", + "deep_bayou", + "dense_marsh", + "dense_woodland", + "dryland", + "dry_boneyard", + "fir_clearing", + "flower_meadow", + "fungal_field", + "fungal_jungle", + "golden_prairie", + "grassland", + "grassland_clover_patch", + "gravel_beach", + "grove", + "grove_clearing", + "grove_lakes", + "highland", + "highland_crag", + "highland_moor", + "jade_cliffs", + "lavender_field", + "lavender_forest", + "lush_desert", + "lush_savanna", + "marsh", + "meadow", + "meadow_forest", + "muskeg", + "mystic_grove", + "mystic_plains", + "ominous_woods", + "ominous_mire", + "orchard", + "origin_valley", + "prairie", + "rainbow_hills", + "rainforest", + "rainforest_cliffs", + "rainforest_floodplain", + "redwood_forest", + "redwood_forest_edge", + "redwood_hills", + "scrubland", + "seasonal_forest", + "seasonal_orchard", + "seasonal_pumpkin_patch", + "shroomy_wetland", + "shrubland", + "shrubland_hills", + "snowy_coniferous_forest", + "snowy_fir_clearing", + "snowy_maple_forest", + "tall_dead_forest", + "tropic_beach", + "tropics", + "tundra", + "tundra_basin", + "tundra_bog", + "undergrowth", + "visceral_heap", + "volcanic_plains", + "volcano", + "wasteland", + "wetland", + "wetland_forest", + "withered_abyss", + "wooded_scrubland", + "woodland" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone.json new file mode 100644 index 0000000000..770ccfa647 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:black_sandstone" + ] + }, + "criteria": { + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:black_sandstone" + } + }, + "has_sand": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:black_sand" + } + ] + } + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_sand" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone_slab.json new file mode 100644 index 0000000000..43a529ee17 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone_slab.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:black_sandstone_slab" + ] + }, + "criteria": { + "has_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:black_sandstone_slab" + } + } + }, + "requirements": [ + [ + "has_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone_slab_from_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone_slab_from_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..bc82bb0560 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone_slab_from_black_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:black_sandstone_slab_from_black_sandstone_stonecutting" + ] + }, + "criteria": { + "has_black_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:black_sandstone_slab_from_black_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_black_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone_stairs.json new file mode 100644 index 0000000000..a72efc57c3 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone_stairs.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:black_sandstone_stairs" + ] + }, + "criteria": { + "has_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:black_sandstone_stairs" + } + } + }, + "requirements": [ + [ + "has_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone_stairs_from_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone_stairs_from_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..1abfd6532e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone_stairs_from_black_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:black_sandstone_stairs_from_black_sandstone_stonecutting" + ] + }, + "criteria": { + "has_black_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:black_sandstone_stairs_from_black_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_black_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cherry_planks.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cherry_planks.json new file mode 100644 index 0000000000..98eed88790 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cherry_planks.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cherry_planks" + ] + }, + "criteria": { + "has_logs": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "biomesoplenty:cherry_logs" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cherry_planks" + } + } + }, + "requirements": [ + [ + "has_logs", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cherry_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cherry_slab.json new file mode 100644 index 0000000000..e24ca925e3 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cherry_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cherry_slab" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:cherry_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cherry_slab" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cherry_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cherry_stairs.json new file mode 100644 index 0000000000..72e64fac70 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cherry_stairs.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cherry_stairs" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:cherry_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cherry_stairs" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cherry_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cherry_wood.json new file mode 100644 index 0000000000..36cb224cb2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cherry_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cherry_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:cherry_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cherry_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_black_sandstone.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_black_sandstone.json new file mode 100644 index 0000000000..578297ce1b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_black_sandstone.json @@ -0,0 +1,53 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:chiseled_black_sandstone" + ] + }, + "criteria": { + "has_black_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:black_sandstone" + } + ] + } + }, + "has_chiseled_black_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:chiseled_black_sandstone" + } + ] + } + }, + "has_cut_black_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:cut_black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:chiseled_black_sandstone" + } + } + }, + "requirements": [ + [ + "has_black_sandstone", + "has_chiseled_black_sandstone", + "has_cut_black_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_black_sandstone_from_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_black_sandstone_from_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..4c9f53d117 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_black_sandstone_from_black_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:chiseled_black_sandstone_from_black_sandstone_stonecutting" + ] + }, + "criteria": { + "has_black_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:chiseled_black_sandstone_from_black_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_black_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_orange_sandstone.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_orange_sandstone.json new file mode 100644 index 0000000000..fa4afb5d9a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_orange_sandstone.json @@ -0,0 +1,53 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:chiseled_orange_sandstone" + ] + }, + "criteria": { + "has_orange_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:orange_sandstone" + } + ] + } + }, + "has_chiseled_orange_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:chiseled_orange_sandstone" + } + ] + } + }, + "has_cut_orange_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:cut_orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:chiseled_orange_sandstone" + } + } + }, + "requirements": [ + [ + "has_orange_sandstone", + "has_chiseled_orange_sandstone", + "has_cut_orange_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_orange_sandstone_from_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_orange_sandstone_from_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..8d478207cc --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_orange_sandstone_from_orange_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:chiseled_orange_sandstone_from_orange_sandstone_stonecutting" + ] + }, + "criteria": { + "has_orange_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:chiseled_orange_sandstone_from_orange_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_orange_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_white_sandstone.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_white_sandstone.json new file mode 100644 index 0000000000..0060b0e887 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_white_sandstone.json @@ -0,0 +1,53 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:chiseled_white_sandstone" + ] + }, + "criteria": { + "has_white_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:white_sandstone" + } + ] + } + }, + "has_chiseled_white_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:chiseled_white_sandstone" + } + ] + } + }, + "has_cut_white_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:cut_white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:chiseled_white_sandstone" + } + } + }, + "requirements": [ + [ + "has_white_sandstone", + "has_chiseled_white_sandstone", + "has_cut_white_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_white_sandstone_from_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_white_sandstone_from_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..ae0944e637 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_white_sandstone_from_white_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:chiseled_white_sandstone_from_white_sandstone_stonecutting" + ] + }, + "criteria": { + "has_white_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:chiseled_white_sandstone_from_white_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_white_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_black_sandstone_from_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_black_sandstone_from_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..048e23de87 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_black_sandstone_from_black_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cut_black_sandstone_from_black_sandstone_stonecutting" + ] + }, + "criteria": { + "has_black_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cut_black_sandstone_from_black_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_black_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_black_sandstone_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_black_sandstone_slab.json new file mode 100644 index 0000000000..9f93db9298 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_black_sandstone_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cut_black_sandstone_slab" + ] + }, + "criteria": { + "has_cut_black_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:cut_black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cut_black_sandstone_slab" + } + } + }, + "requirements": [ + [ + "has_cut_black_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_black_sandstone_slab_from_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_black_sandstone_slab_from_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..17d17fcdb5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_black_sandstone_slab_from_black_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cut_black_sandstone_slab_from_black_sandstone_stonecutting" + ] + }, + "criteria": { + "has_black_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cut_black_sandstone_slab_from_black_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_black_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_black_sandstone_slab_from_cut_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_black_sandstone_slab_from_cut_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..a87c7628a2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_black_sandstone_slab_from_cut_black_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cut_black_sandstone_slab_from_cut_black_sandstone_stonecutting" + ] + }, + "criteria": { + "has_cut_black_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cut_black_sandstone_slab_from_cut_black_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_cut_black_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_orange_sandstone_from_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_orange_sandstone_from_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..9087dd63ce --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_orange_sandstone_from_orange_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cut_orange_sandstone_from_orange_sandstone_stonecutting" + ] + }, + "criteria": { + "has_orange_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cut_orange_sandstone_from_orange_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_orange_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_orange_sandstone_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_orange_sandstone_slab.json new file mode 100644 index 0000000000..46b79576d3 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_orange_sandstone_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cut_orange_sandstone_slab" + ] + }, + "criteria": { + "has_cut_orange_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:cut_orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cut_orange_sandstone_slab" + } + } + }, + "requirements": [ + [ + "has_cut_orange_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_orange_sandstone_slab_from_cut_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_orange_sandstone_slab_from_cut_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..145314064d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_orange_sandstone_slab_from_cut_orange_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cut_orange_sandstone_slab_from_cut_orange_sandstone_stonecutting" + ] + }, + "criteria": { + "has_cut_orange_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cut_orange_sandstone_slab_from_cut_orange_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_cut_orange_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_orange_sandstone_slab_from_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_orange_sandstone_slab_from_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..4f2015a66d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_orange_sandstone_slab_from_orange_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cut_orange_sandstone_slab_from_orange_sandstone_stonecutting" + ] + }, + "criteria": { + "has_orange_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cut_orange_sandstone_slab_from_orange_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_orange_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_white_sandstone_from_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_white_sandstone_from_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..fd1d05ab60 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_white_sandstone_from_white_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cut_white_sandstone_from_white_sandstone_stonecutting" + ] + }, + "criteria": { + "has_white_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cut_white_sandstone_from_white_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_white_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_white_sandstone_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_white_sandstone_slab.json new file mode 100644 index 0000000000..91526aa345 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_white_sandstone_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cut_white_sandstone_slab" + ] + }, + "criteria": { + "has_cut_white_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:cut_white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cut_white_sandstone_slab" + } + } + }, + "requirements": [ + [ + "has_cut_white_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_white_sandstone_slab_from_cut_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_white_sandstone_slab_from_cut_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..8d1786c5f8 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_white_sandstone_slab_from_cut_white_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cut_white_sandstone_slab_from_cut_white_sandstone_stonecutting" + ] + }, + "criteria": { + "has_cut_white_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cut_white_sandstone_slab_from_cut_white_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_cut_white_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_white_sandstone_slab_from_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_white_sandstone_slab_from_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..0d11308400 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_white_sandstone_slab_from_white_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cut_white_sandstone_slab_from_white_sandstone_stonecutting" + ] + }, + "criteria": { + "has_white_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cut_white_sandstone_slab_from_white_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_white_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/dead_planks.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/dead_planks.json new file mode 100644 index 0000000000..7ea71357a0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/dead_planks.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:dead_planks" + ] + }, + "criteria": { + "has_logs": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "biomesoplenty:dead_logs" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:dead_planks" + } + } + }, + "requirements": [ + [ + "has_logs", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/dead_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/dead_slab.json new file mode 100644 index 0000000000..b86c9facef --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/dead_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:dead_slab" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:dead_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:dead_slab" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/dead_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/dead_stairs.json new file mode 100644 index 0000000000..93a181fb0d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/dead_stairs.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:dead_stairs" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:dead_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:dead_stairs" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/dead_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/dead_wood.json new file mode 100644 index 0000000000..d4e6750a86 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/dead_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:dead_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:dead_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:dead_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/fir_planks.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/fir_planks.json new file mode 100644 index 0000000000..8f81a18541 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/fir_planks.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:fir_planks" + ] + }, + "criteria": { + "has_logs": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "biomesoplenty:fir_logs" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:fir_planks" + } + } + }, + "requirements": [ + [ + "has_logs", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/fir_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/fir_slab.json new file mode 100644 index 0000000000..48681a7d5b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/fir_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:fir_slab" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:fir_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:fir_slab" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/fir_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/fir_stairs.json new file mode 100644 index 0000000000..ecd3b5c340 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/fir_stairs.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:fir_stairs" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:fir_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:fir_stairs" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/fir_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/fir_wood.json new file mode 100644 index 0000000000..b2ca16668c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/fir_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:fir_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:fir_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:fir_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/hellbark_planks.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/hellbark_planks.json new file mode 100644 index 0000000000..a3123d6715 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/hellbark_planks.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:hellbark_planks" + ] + }, + "criteria": { + "has_logs": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "biomesoplenty:hellbark_logs" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:hellbark_planks" + } + } + }, + "requirements": [ + [ + "has_logs", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/hellbark_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/hellbark_slab.json new file mode 100644 index 0000000000..d861517292 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/hellbark_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:hellbark_slab" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:hellbark_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:hellbark_slab" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/hellbark_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/hellbark_stairs.json new file mode 100644 index 0000000000..5ccd641015 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/hellbark_stairs.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:hellbark_stairs" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:hellbark_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:hellbark_stairs" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/hellbark_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/hellbark_wood.json new file mode 100644 index 0000000000..fce7c03e9e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/hellbark_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:hellbark_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:hellbark_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:hellbark_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/jacaranda_planks.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/jacaranda_planks.json new file mode 100644 index 0000000000..5f2fd7488e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/jacaranda_planks.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:jacaranda_planks" + ] + }, + "criteria": { + "has_logs": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "biomesoplenty:jacaranda_logs" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:jacaranda_planks" + } + } + }, + "requirements": [ + [ + "has_logs", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/jacaranda_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/jacaranda_slab.json new file mode 100644 index 0000000000..6b24ef789d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/jacaranda_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:jacaranda_slab" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:jacaranda_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:jacaranda_slab" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/jacaranda_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/jacaranda_stairs.json new file mode 100644 index 0000000000..c4bacc3c88 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/jacaranda_stairs.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:jacaranda_stairs" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:jacaranda_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:jacaranda_stairs" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/jacaranda_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/jacaranda_wood.json new file mode 100644 index 0000000000..85615cb46c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/jacaranda_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:jacaranda_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:jacaranda_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:jacaranda_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/magic_planks.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/magic_planks.json new file mode 100644 index 0000000000..afb28c3126 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/magic_planks.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:magic_planks" + ] + }, + "criteria": { + "has_logs": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "biomesoplenty:magic_logs" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:magic_planks" + } + } + }, + "requirements": [ + [ + "has_logs", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/magic_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/magic_slab.json new file mode 100644 index 0000000000..1ac8fb3c19 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/magic_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:magic_slab" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:magic_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:magic_slab" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/magic_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/magic_stairs.json new file mode 100644 index 0000000000..6cc28343d5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/magic_stairs.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:magic_stairs" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:magic_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:magic_stairs" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/magic_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/magic_wood.json new file mode 100644 index 0000000000..fa3cd8ba21 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/magic_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:magic_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:magic_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:magic_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mahogany_planks.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mahogany_planks.json new file mode 100644 index 0000000000..cc5bf017a0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mahogany_planks.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:mahogany_planks" + ] + }, + "criteria": { + "has_logs": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "biomesoplenty:mahogany_logs" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mahogany_planks" + } + } + }, + "requirements": [ + [ + "has_logs", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mahogany_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mahogany_slab.json new file mode 100644 index 0000000000..cb7e1f7d27 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mahogany_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:mahogany_slab" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:mahogany_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mahogany_slab" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mahogany_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mahogany_stairs.json new file mode 100644 index 0000000000..0ad608a18a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mahogany_stairs.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:mahogany_stairs" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:mahogany_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mahogany_stairs" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mahogany_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mahogany_wood.json new file mode 100644 index 0000000000..d84fd52807 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mahogany_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:mahogany_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:mahogany_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mahogany_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mossy_cobblestone_from_willow_vine.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mossy_cobblestone_from_willow_vine.json new file mode 100644 index 0000000000..70e9f6b025 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mossy_cobblestone_from_willow_vine.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "minecraft:mossy_cobblestone" + ] + }, + "criteria": { + "has_vine": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:willow_vine" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "minecraft:mossy_cobblestone" + } + } + }, + "requirements": [ + [ + "has_vine", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mud.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mud.json new file mode 100644 index 0000000000..0a1300bc39 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mud.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:mud" + ] + }, + "criteria": { + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mud" + } + }, + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:mud_ball" + } + ] + } + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mud_bricks.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mud_bricks.json new file mode 100644 index 0000000000..7cce2d0888 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mud_bricks.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:mud_bricks" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:mud_brick" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mud_bricks" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mud_bricks_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mud_bricks_slab.json new file mode 100644 index 0000000000..1e8cb9016a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mud_bricks_slab.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:mud_bricks_slab" + ] + }, + "criteria": { + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mud_bricks_slab" + } + }, + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:mud_bricks" + } + ] + } + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_planks" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mud_bricks_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mud_bricks_stairs.json new file mode 100644 index 0000000000..71e5a56821 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mud_bricks_stairs.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:mud_bricks_stairs" + ] + }, + "criteria": { + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mud_bricks_stairs" + } + }, + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:mud_bricks" + } + ] + } + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_planks" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/nether_crystal_block.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/nether_crystal_block.json new file mode 100644 index 0000000000..af9341fcee --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/nether_crystal_block.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:nether_crystal_block" + ] + }, + "criteria": { + "has_nether_crystal": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:nether_crystal" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:nether_crystal_block" + } + } + }, + "requirements": [ + [ + "has_nether_crystal", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone.json new file mode 100644 index 0000000000..65eeddd5d1 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:orange_sandstone" + ] + }, + "criteria": { + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:orange_sandstone" + } + }, + "has_sand": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:orange_sand" + } + ] + } + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_sand" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone_slab.json new file mode 100644 index 0000000000..8b5a18f0a1 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone_slab.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:orange_sandstone_slab" + ] + }, + "criteria": { + "has_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:orange_sandstone_slab" + } + } + }, + "requirements": [ + [ + "has_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone_slab_from_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone_slab_from_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..3b70f8831f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone_slab_from_orange_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:orange_sandstone_slab_from_orange_sandstone_stonecutting" + ] + }, + "criteria": { + "has_orange_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:orange_sandstone_slab_from_orange_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_orange_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone_stairs.json new file mode 100644 index 0000000000..dbda82f933 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone_stairs.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:orange_sandstone_stairs" + ] + }, + "criteria": { + "has_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:orange_sandstone_stairs" + } + } + }, + "requirements": [ + [ + "has_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone_stairs_from_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone_stairs_from_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..28884ed794 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone_stairs_from_orange_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:orange_sandstone_stairs_from_orange_sandstone_stonecutting" + ] + }, + "criteria": { + "has_orange_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:orange_sandstone_stairs_from_orange_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_orange_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/palm_planks.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/palm_planks.json new file mode 100644 index 0000000000..f7fc7cc580 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/palm_planks.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:palm_planks" + ] + }, + "criteria": { + "has_logs": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "biomesoplenty:palm_logs" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:palm_planks" + } + } + }, + "requirements": [ + [ + "has_logs", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/palm_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/palm_slab.json new file mode 100644 index 0000000000..a723b987e6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/palm_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:palm_slab" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:palm_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:palm_slab" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/palm_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/palm_stairs.json new file mode 100644 index 0000000000..6d9424e94f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/palm_stairs.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:palm_stairs" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:palm_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:palm_stairs" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/palm_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/palm_wood.json new file mode 100644 index 0000000000..246264a044 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/palm_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:palm_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:palm_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:palm_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/redwood_planks.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/redwood_planks.json new file mode 100644 index 0000000000..38959b404e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/redwood_planks.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:redwood_planks" + ] + }, + "criteria": { + "has_logs": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "biomesoplenty:redwood_logs" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:redwood_planks" + } + } + }, + "requirements": [ + [ + "has_logs", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/redwood_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/redwood_slab.json new file mode 100644 index 0000000000..59c261d598 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/redwood_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:redwood_slab" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:redwood_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:redwood_slab" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/redwood_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/redwood_stairs.json new file mode 100644 index 0000000000..a49dfe6a22 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/redwood_stairs.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:redwood_stairs" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:redwood_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:redwood_stairs" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/redwood_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/redwood_wood.json new file mode 100644 index 0000000000..267a6c7fbe --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/redwood_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:redwood_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:redwood_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:redwood_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone.json new file mode 100644 index 0000000000..c8328166b6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:smooth_black_sandstone" + ] + }, + "criteria": { + "has_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:smooth_black_sandstone" + } + } + }, + "requirements": [ + [ + "has_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone_slab.json new file mode 100644 index 0000000000..ff39816e33 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:smooth_black_sandstone_slab" + ] + }, + "criteria": { + "has_smooth_black_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:smooth_black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:smooth_black_sandstone_slab" + } + } + }, + "requirements": [ + [ + "has_smooth_black_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone_slab_from_smooth_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone_slab_from_smooth_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..06a0c58937 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone_slab_from_smooth_black_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:smooth_black_sandstone_slab_from_smooth_black_sandstone_stonecutting" + ] + }, + "criteria": { + "has_smooth_black_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:smooth_black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:smooth_black_sandstone_slab_from_smooth_black_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_smooth_black_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone_stairs.json new file mode 100644 index 0000000000..0894674953 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone_stairs.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:smooth_black_sandstone_stairs" + ] + }, + "criteria": { + "has_smooth_black_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:smooth_black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:smooth_black_sandstone_stairs" + } + } + }, + "requirements": [ + [ + "has_smooth_black_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone_stairs_from_smooth_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone_stairs_from_smooth_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..a878fc23d9 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone_stairs_from_smooth_black_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:smooth_black_sandstone_stairs_from_smooth_black_sandstone_stonecutting" + ] + }, + "criteria": { + "has_smooth_black_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:smooth_black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:smooth_black_sandstone_stairs_from_smooth_black_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_smooth_black_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone.json new file mode 100644 index 0000000000..865d0a32a1 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:smooth_orange_sandstone" + ] + }, + "criteria": { + "has_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:smooth_orange_sandstone" + } + } + }, + "requirements": [ + [ + "has_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone_slab.json new file mode 100644 index 0000000000..73b3b50ce8 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:smooth_orange_sandstone_slab" + ] + }, + "criteria": { + "has_smooth_orange_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:smooth_orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:smooth_orange_sandstone_slab" + } + } + }, + "requirements": [ + [ + "has_smooth_orange_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone_slab_from_smooth_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone_slab_from_smooth_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..bdc6077c3c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone_slab_from_smooth_orange_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:smooth_orange_sandstone_slab_from_smooth_orange_sandstone_stonecutting" + ] + }, + "criteria": { + "has_smooth_orange_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:smooth_orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:smooth_orange_sandstone_slab_from_smooth_orange_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_smooth_orange_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone_stairs.json new file mode 100644 index 0000000000..39d1178375 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone_stairs.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:smooth_orange_sandstone_stairs" + ] + }, + "criteria": { + "has_smooth_orange_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:smooth_orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:smooth_orange_sandstone_stairs" + } + } + }, + "requirements": [ + [ + "has_smooth_orange_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone_stairs_from_smooth_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone_stairs_from_smooth_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..004128b7d9 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone_stairs_from_smooth_orange_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:smooth_orange_sandstone_stairs_from_smooth_orange_sandstone_stonecutting" + ] + }, + "criteria": { + "has_smooth_orange_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:smooth_orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:smooth_orange_sandstone_stairs_from_smooth_orange_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_smooth_orange_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone.json new file mode 100644 index 0000000000..6f3a4871fb --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:smooth_white_sandstone" + ] + }, + "criteria": { + "has_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:smooth_white_sandstone" + } + } + }, + "requirements": [ + [ + "has_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone_slab.json new file mode 100644 index 0000000000..1f5a36b0a7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:smooth_white_sandstone_slab" + ] + }, + "criteria": { + "has_smooth_white_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:smooth_white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:smooth_white_sandstone_slab" + } + } + }, + "requirements": [ + [ + "has_smooth_white_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone_slab_from_smooth_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone_slab_from_smooth_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..5a399d8092 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone_slab_from_smooth_white_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:smooth_white_sandstone_slab_from_smooth_white_sandstone_stonecutting" + ] + }, + "criteria": { + "has_smooth_white_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:smooth_white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:smooth_white_sandstone_slab_from_smooth_white_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_smooth_white_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone_stairs.json new file mode 100644 index 0000000000..03c9ab1fcb --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone_stairs.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:smooth_white_sandstone_stairs" + ] + }, + "criteria": { + "has_smooth_white_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:smooth_white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:smooth_white_sandstone_stairs" + } + } + }, + "requirements": [ + [ + "has_smooth_white_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone_stairs_from_smooth_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone_stairs_from_smooth_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..f89b52b499 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone_stairs_from_smooth_white_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:smooth_white_sandstone_stairs_from_smooth_white_sandstone_stonecutting" + ] + }, + "criteria": { + "has_smooth_white_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:smooth_white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:smooth_white_sandstone_stairs_from_smooth_white_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_smooth_white_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_cherry_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_cherry_wood.json new file mode 100644 index 0000000000..3a10e90ef8 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_cherry_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:stripped_cherry_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:stripped_cherry_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:stripped_cherry_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_dead_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_dead_wood.json new file mode 100644 index 0000000000..d242484582 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_dead_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:stripped_dead_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:stripped_dead_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:stripped_dead_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_fir_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_fir_wood.json new file mode 100644 index 0000000000..380e26681c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_fir_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:stripped_fir_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:stripped_fir_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:stripped_fir_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_hellbark_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_hellbark_wood.json new file mode 100644 index 0000000000..0f960b1718 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_hellbark_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:stripped_hellbark_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:stripped_hellbark_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:stripped_hellbark_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_jacaranda_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_jacaranda_wood.json new file mode 100644 index 0000000000..1c7f0d6507 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_jacaranda_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:stripped_jacaranda_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:stripped_jacaranda_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:stripped_jacaranda_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_magic_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_magic_wood.json new file mode 100644 index 0000000000..33e7b4a754 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_magic_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:stripped_magic_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:stripped_magic_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:stripped_magic_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_mahogany_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_mahogany_wood.json new file mode 100644 index 0000000000..943f729d6d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_mahogany_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:stripped_mahogany_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:stripped_mahogany_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:stripped_mahogany_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_palm_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_palm_wood.json new file mode 100644 index 0000000000..7c5ffc7a7a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_palm_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:stripped_palm_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:stripped_palm_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:stripped_palm_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_redwood_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_redwood_wood.json new file mode 100644 index 0000000000..2cafe1e59c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_redwood_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:stripped_redwood_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:stripped_redwood_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:stripped_redwood_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_umbran_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_umbran_wood.json new file mode 100644 index 0000000000..aa800f11ca --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_umbran_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:stripped_umbran_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:stripped_umbran_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:stripped_umbran_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_willow_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_willow_wood.json new file mode 100644 index 0000000000..b1cd29de9d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_willow_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:stripped_willow_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:stripped_willow_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:stripped_willow_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/umbran_planks.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/umbran_planks.json new file mode 100644 index 0000000000..694c6db0bc --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/umbran_planks.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:umbran_planks" + ] + }, + "criteria": { + "has_logs": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "biomesoplenty:umbran_logs" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:umbran_planks" + } + } + }, + "requirements": [ + [ + "has_logs", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/umbran_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/umbran_slab.json new file mode 100644 index 0000000000..9c680e4bc6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/umbran_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:umbran_slab" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:umbran_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:umbran_slab" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/umbran_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/umbran_stairs.json new file mode 100644 index 0000000000..e6329107c6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/umbran_stairs.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:umbran_stairs" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:umbran_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:umbran_stairs" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/umbran_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/umbran_wood.json new file mode 100644 index 0000000000..60225119ea --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/umbran_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:umbran_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:umbran_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:umbran_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone.json new file mode 100644 index 0000000000..62a201f924 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:white_sandstone" + ] + }, + "criteria": { + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:white_sandstone" + } + }, + "has_sand": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:white_sand" + } + ] + } + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_sand" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone_slab.json new file mode 100644 index 0000000000..580eecd24d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone_slab.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:white_sandstone_slab" + ] + }, + "criteria": { + "has_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:white_sandstone_slab" + } + } + }, + "requirements": [ + [ + "has_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone_slab_from_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone_slab_from_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..9fd1474a0e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone_slab_from_white_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:white_sandstone_slab_from_white_sandstone_stonecutting" + ] + }, + "criteria": { + "has_white_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:white_sandstone_slab_from_white_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_white_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone_stairs.json new file mode 100644 index 0000000000..044270100a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone_stairs.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:white_sandstone_stairs" + ] + }, + "criteria": { + "has_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:white_sandstone_stairs" + } + } + }, + "requirements": [ + [ + "has_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone_stairs_from_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone_stairs_from_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..470f89478d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone_stairs_from_white_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:white_sandstone_stairs_from_white_sandstone_stonecutting" + ] + }, + "criteria": { + "has_white_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:white_sandstone_stairs_from_white_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_white_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/willow_planks.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/willow_planks.json new file mode 100644 index 0000000000..6c52657d93 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/willow_planks.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:willow_planks" + ] + }, + "criteria": { + "has_logs": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "biomesoplenty:willow_logs" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:willow_planks" + } + } + }, + "requirements": [ + [ + "has_logs", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/willow_slab.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/willow_slab.json new file mode 100644 index 0000000000..34325d39f3 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/willow_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:willow_slab" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:willow_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:willow_slab" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/willow_stairs.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/willow_stairs.json new file mode 100644 index 0000000000..b3386d4623 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/willow_stairs.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:willow_stairs" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:willow_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:willow_stairs" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/willow_wood.json b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/willow_wood.json new file mode 100644 index 0000000000..a5ef81dae1 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/willow_wood.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:willow_wood" + ] + }, + "criteria": { + "has_log": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:willow_log" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:willow_wood" + } + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/black_sandstone_wall.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/black_sandstone_wall.json new file mode 100644 index 0000000000..00af3f704b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/black_sandstone_wall.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:black_sandstone_wall" + ] + }, + "criteria": { + "has_black_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:black_sandstone_wall" + } + } + }, + "requirements": [ + [ + "has_black_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/black_sandstone_wall_from_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/black_sandstone_wall_from_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..4b6d415bf1 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/black_sandstone_wall_from_black_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:black_sandstone_wall_from_black_sandstone_stonecutting" + ] + }, + "criteria": { + "has_black_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:black_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:black_sandstone_wall_from_black_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_black_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/cherry_fence.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/cherry_fence.json new file mode 100644 index 0000000000..00b5749397 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/cherry_fence.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cherry_fence" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:cherry_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cherry_fence" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/dead_fence.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/dead_fence.json new file mode 100644 index 0000000000..a898d376e4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/dead_fence.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:dead_fence" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:dead_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:dead_fence" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/fir_fence.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/fir_fence.json new file mode 100644 index 0000000000..e0db7a1f94 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/fir_fence.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:fir_fence" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:fir_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:fir_fence" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/hellbark_fence.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/hellbark_fence.json new file mode 100644 index 0000000000..2e803ad1ec --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/hellbark_fence.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:hellbark_fence" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:hellbark_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:hellbark_fence" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/jacaranda_fence.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/jacaranda_fence.json new file mode 100644 index 0000000000..0977292658 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/jacaranda_fence.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:jacaranda_fence" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:jacaranda_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:jacaranda_fence" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/magic_fence.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/magic_fence.json new file mode 100644 index 0000000000..15aaaff223 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/magic_fence.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:magic_fence" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:magic_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:magic_fence" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/mahogany_fence.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/mahogany_fence.json new file mode 100644 index 0000000000..37207f80aa --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/mahogany_fence.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:mahogany_fence" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:mahogany_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mahogany_fence" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/mud_brick_wall.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/mud_brick_wall.json new file mode 100644 index 0000000000..cef5b49ddf --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/mud_brick_wall.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:mud_brick_wall" + ] + }, + "criteria": { + "has_bricks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:mud_bricks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mud_brick_wall" + } + } + }, + "requirements": [ + [ + "has_bricks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/mud_brick_wall_from_mud_bricks_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/mud_brick_wall_from_mud_bricks_stonecutting.json new file mode 100644 index 0000000000..87e389da9c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/mud_brick_wall_from_mud_bricks_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:mud_brick_wall_from_mud_bricks_stonecutting" + ] + }, + "criteria": { + "has_bricks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:mud_bricks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mud_brick_wall_from_mud_bricks_stonecutting" + } + } + }, + "requirements": [ + [ + "has_bricks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/orange_sandstone_wall.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/orange_sandstone_wall.json new file mode 100644 index 0000000000..f2745ce27b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/orange_sandstone_wall.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:orange_sandstone_wall" + ] + }, + "criteria": { + "has_orange_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:orange_sandstone_wall" + } + } + }, + "requirements": [ + [ + "has_orange_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/orange_sandstone_wall_from_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/orange_sandstone_wall_from_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..d62820c202 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/orange_sandstone_wall_from_orange_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:orange_sandstone_wall_from_orange_sandstone_stonecutting" + ] + }, + "criteria": { + "has_orange_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:orange_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:orange_sandstone_wall_from_orange_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_orange_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/palm_fence.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/palm_fence.json new file mode 100644 index 0000000000..9b4a0a5f4a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/palm_fence.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:palm_fence" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:palm_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:palm_fence" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/redwood_fence.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/redwood_fence.json new file mode 100644 index 0000000000..fd11004920 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/redwood_fence.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:redwood_fence" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:redwood_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:redwood_fence" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/umbran_fence.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/umbran_fence.json new file mode 100644 index 0000000000..409a7edbe0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/umbran_fence.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:umbran_fence" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:umbran_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:umbran_fence" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/white_sandstone_wall.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/white_sandstone_wall.json new file mode 100644 index 0000000000..7a7e130f96 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/white_sandstone_wall.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:white_sandstone_wall" + ] + }, + "criteria": { + "has_white_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:white_sandstone_wall" + } + } + }, + "requirements": [ + [ + "has_white_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/white_sandstone_wall_from_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/white_sandstone_wall_from_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..6d6e431f07 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/white_sandstone_wall_from_white_sandstone_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:white_sandstone_wall_from_white_sandstone_stonecutting" + ] + }, + "criteria": { + "has_white_sandstone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:white_sandstone" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:white_sandstone_wall_from_white_sandstone_stonecutting" + } + } + }, + "requirements": [ + [ + "has_white_sandstone", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/willow_fence.json b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/willow_fence.json new file mode 100644 index 0000000000..917f227a98 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/decorations/willow_fence.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:willow_fence" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:willow_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:willow_fence" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/food/rabbit_stew_from_toadstool.json b/src/main/resources/data/biomesoplenty/advancements/recipes/food/rabbit_stew_from_toadstool.json new file mode 100644 index 0000000000..9c3dd9a37a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/food/rabbit_stew_from_toadstool.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:rabbit_stew_from_toadstool" + ] + }, + "criteria": { + "has_cooked_rabbit": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "minecraft:cooked_rabbit" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:rabbit_stew_from_toadstool" + } + } + }, + "requirements": [ + [ + "has_cooked_rabbit", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/misc/cyan_dye_from_glowflower.json b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/cyan_dye_from_glowflower.json new file mode 100644 index 0000000000..61c5e53c69 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/cyan_dye_from_glowflower.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:cyan_dye_from_glowflower" + ] + }, + "criteria": { + "has_flower": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:glowflower" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cyan_dye_from_glowflower" + } + } + }, + "requirements": [ + [ + "has_flower", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/misc/gray_dye_from_wilted_lily.json b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/gray_dye_from_wilted_lily.json new file mode 100644 index 0000000000..e46fb9c4b7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/gray_dye_from_wilted_lily.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:gray_dye_from_wilted_lily" + ] + }, + "criteria": { + "has_flower": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:wilted_lily" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:gray_dye_from_wilted_lily" + } + } + }, + "requirements": [ + [ + "has_flower", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/misc/light_blue_dye_from_blue_hydrangea.json b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/light_blue_dye_from_blue_hydrangea.json new file mode 100644 index 0000000000..87432a25e7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/light_blue_dye_from_blue_hydrangea.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:light_blue_dye_from_blue_hydrangea" + ] + }, + "criteria": { + "has_flower": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:blue_hydrangea" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:light_blue_dye_from_blue_hydrangea" + } + } + }, + "requirements": [ + [ + "has_flower", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/misc/magenta_dye_from_wildflower.json b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/magenta_dye_from_wildflower.json new file mode 100644 index 0000000000..c5450734e0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/magenta_dye_from_wildflower.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:magenta_dye_from_wildflower" + ] + }, + "criteria": { + "has_flower": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:wildflower" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:magenta_dye_from_wildflower" + } + } + }, + "requirements": [ + [ + "has_flower", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/misc/mud_brick_from_smelting.json b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/mud_brick_from_smelting.json new file mode 100644 index 0000000000..6f74d0ab26 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/mud_brick_from_smelting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:mud_brick_from_smelting" + ] + }, + "criteria": { + "has_mud_ball": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:mud_ball" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mud_brick_from_smelting" + } + } + }, + "requirements": [ + [ + "has_mud_ball", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/misc/orange_dye_from_burning_blossom.json b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/orange_dye_from_burning_blossom.json new file mode 100644 index 0000000000..b06ecbd2a8 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/orange_dye_from_burning_blossom.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:orange_dye_from_burning_blossom" + ] + }, + "criteria": { + "has_flower": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:burning_blossom" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:orange_dye_from_burning_blossom" + } + } + }, + "requirements": [ + [ + "has_flower", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/misc/orange_dye_from_orange_cosmos.json b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/orange_dye_from_orange_cosmos.json new file mode 100644 index 0000000000..0f46732221 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/orange_dye_from_orange_cosmos.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:orange_dye_from_orange_cosmos" + ] + }, + "criteria": { + "has_flower": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:orange_cosmos" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:orange_dye_from_orange_cosmos" + } + } + }, + "requirements": [ + [ + "has_flower", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/misc/pink_dye_from_pink_daffodil.json b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/pink_dye_from_pink_daffodil.json new file mode 100644 index 0000000000..da6866d97a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/pink_dye_from_pink_daffodil.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:pink_dye_from_pink_daffodil" + ] + }, + "criteria": { + "has_flower": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:pink_daffodil" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:pink_dye_from_pink_daffodil" + } + } + }, + "requirements": [ + [ + "has_flower", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/misc/pink_dye_from_pink_hibiscus.json b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/pink_dye_from_pink_hibiscus.json new file mode 100644 index 0000000000..e80bb26871 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/pink_dye_from_pink_hibiscus.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:pink_dye_from_pink_hibiscus" + ] + }, + "criteria": { + "has_flower": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:pink_hibiscus" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:pink_dye_from_pink_hibiscus" + } + } + }, + "requirements": [ + [ + "has_flower", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/misc/purple_dye_from_lavender.json b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/purple_dye_from_lavender.json new file mode 100644 index 0000000000..663deebf49 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/purple_dye_from_lavender.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:purple_dye_from_lavender" + ] + }, + "criteria": { + "has_flower": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:lavender" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:purple_dye_from_lavender" + } + } + }, + "requirements": [ + [ + "has_flower", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/misc/purple_dye_from_violet.json b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/purple_dye_from_violet.json new file mode 100644 index 0000000000..110042d591 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/purple_dye_from_violet.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:purple_dye_from_violet" + ] + }, + "criteria": { + "has_flower": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:violet" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:purple_dye_from_violet" + } + } + }, + "requirements": [ + [ + "has_flower", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/misc/red_dye_from_rose.json b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/red_dye_from_rose.json new file mode 100644 index 0000000000..d8fd71770b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/red_dye_from_rose.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:red_dye_from_rose" + ] + }, + "criteria": { + "has_flower": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:rose" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:red_dye_from_rose" + } + } + }, + "requirements": [ + [ + "has_flower", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/misc/yellow_dye_from_goldenrod.json b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/yellow_dye_from_goldenrod.json new file mode 100644 index 0000000000..958d9cf78e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/misc/yellow_dye_from_goldenrod.json @@ -0,0 +1,31 @@ +{ + "rewards": { + "recipes": [ + "biomesoplenty:yellow_dye_from_goldenrod" + ] + }, + "criteria": { + "has_flower": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:goldenrod" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:yellow_dye_from_goldenrod" + } + } + }, + "requirements": [ + [ + "has_flower", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_button.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_button.json new file mode 100644 index 0000000000..cd54cd2274 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_button.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cherry_button" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:cherry_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cherry_button" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_door.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_door.json new file mode 100644 index 0000000000..65ad9d5d64 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_door.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cherry_door" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:cherry_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cherry_door" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_fence_gate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_fence_gate.json new file mode 100644 index 0000000000..7cf237afbc --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_fence_gate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cherry_fence_gate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:cherry_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cherry_fence_gate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_pressure_plate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_pressure_plate.json new file mode 100644 index 0000000000..2c91566ea3 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_pressure_plate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cherry_pressure_plate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:cherry_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cherry_pressure_plate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_trapdoor.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_trapdoor.json new file mode 100644 index 0000000000..3f6abc8434 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_trapdoor.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cherry_trapdoor" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:cherry_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cherry_trapdoor" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_button.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_button.json new file mode 100644 index 0000000000..11c4c8dc40 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_button.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:dead_button" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:dead_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:dead_button" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_door.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_door.json new file mode 100644 index 0000000000..f4cd39b6c6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_door.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:dead_door" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:dead_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:dead_door" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_fence_gate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_fence_gate.json new file mode 100644 index 0000000000..3c6601dc72 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_fence_gate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:dead_fence_gate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:dead_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:dead_fence_gate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_pressure_plate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_pressure_plate.json new file mode 100644 index 0000000000..afbed29f55 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_pressure_plate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:dead_pressure_plate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:dead_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:dead_pressure_plate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_trapdoor.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_trapdoor.json new file mode 100644 index 0000000000..8d77be4b82 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_trapdoor.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:dead_trapdoor" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:dead_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:dead_trapdoor" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_button.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_button.json new file mode 100644 index 0000000000..f1009f59cb --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_button.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:fir_button" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:fir_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:fir_button" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_door.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_door.json new file mode 100644 index 0000000000..1eb3501339 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_door.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:fir_door" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:fir_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:fir_door" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_fence_gate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_fence_gate.json new file mode 100644 index 0000000000..9bff2616fc --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_fence_gate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:fir_fence_gate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:fir_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:fir_fence_gate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_pressure_plate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_pressure_plate.json new file mode 100644 index 0000000000..1d3e868804 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_pressure_plate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:fir_pressure_plate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:fir_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:fir_pressure_plate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_trapdoor.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_trapdoor.json new file mode 100644 index 0000000000..9962c11ee0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_trapdoor.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:fir_trapdoor" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:fir_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:fir_trapdoor" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_button.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_button.json new file mode 100644 index 0000000000..a49dba5946 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_button.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:hellbark_button" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:hellbark_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:hellbark_button" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_door.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_door.json new file mode 100644 index 0000000000..430e84ad83 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_door.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:hellbark_door" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:hellbark_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:hellbark_door" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_fence_gate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_fence_gate.json new file mode 100644 index 0000000000..8e9b34e613 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_fence_gate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:hellbark_fence_gate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:hellbark_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:hellbark_fence_gate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_pressure_plate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_pressure_plate.json new file mode 100644 index 0000000000..70d30f62b7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_pressure_plate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:hellbark_pressure_plate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:hellbark_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:hellbark_pressure_plate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_trapdoor.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_trapdoor.json new file mode 100644 index 0000000000..bc87b0b98b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_trapdoor.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:hellbark_trapdoor" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:hellbark_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:hellbark_trapdoor" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_button.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_button.json new file mode 100644 index 0000000000..dc0d73cd27 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_button.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:jacaranda_button" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:jacaranda_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:jacaranda_button" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_door.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_door.json new file mode 100644 index 0000000000..e321286488 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_door.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:jacaranda_door" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:jacaranda_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:jacaranda_door" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_fence_gate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_fence_gate.json new file mode 100644 index 0000000000..f95542089a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_fence_gate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:jacaranda_fence_gate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:jacaranda_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:jacaranda_fence_gate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_pressure_plate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_pressure_plate.json new file mode 100644 index 0000000000..d74e997c9e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_pressure_plate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:jacaranda_pressure_plate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:jacaranda_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:jacaranda_pressure_plate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_trapdoor.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_trapdoor.json new file mode 100644 index 0000000000..74324bf51e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_trapdoor.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:jacaranda_trapdoor" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:jacaranda_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:jacaranda_trapdoor" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_button.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_button.json new file mode 100644 index 0000000000..ff2f860a39 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_button.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:magic_button" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:magic_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:magic_button" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_door.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_door.json new file mode 100644 index 0000000000..23e187f20a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_door.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:magic_door" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:magic_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:magic_door" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_fence_gate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_fence_gate.json new file mode 100644 index 0000000000..1828e22647 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_fence_gate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:magic_fence_gate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:magic_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:magic_fence_gate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_pressure_plate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_pressure_plate.json new file mode 100644 index 0000000000..05961ec150 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_pressure_plate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:magic_pressure_plate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:magic_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:magic_pressure_plate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_trapdoor.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_trapdoor.json new file mode 100644 index 0000000000..85ab3f104a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_trapdoor.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:magic_trapdoor" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:magic_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:magic_trapdoor" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_button.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_button.json new file mode 100644 index 0000000000..fdd4009a31 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_button.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:mahogany_button" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:mahogany_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mahogany_button" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_door.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_door.json new file mode 100644 index 0000000000..fe04e8aa8b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_door.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:mahogany_door" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:mahogany_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mahogany_door" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_fence_gate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_fence_gate.json new file mode 100644 index 0000000000..f124ab41c6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_fence_gate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:mahogany_fence_gate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:mahogany_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mahogany_fence_gate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_pressure_plate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_pressure_plate.json new file mode 100644 index 0000000000..b16685c6dc --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_pressure_plate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:mahogany_pressure_plate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:mahogany_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mahogany_pressure_plate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_trapdoor.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_trapdoor.json new file mode 100644 index 0000000000..66b30cf28a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_trapdoor.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:mahogany_trapdoor" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:mahogany_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mahogany_trapdoor" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_button.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_button.json new file mode 100644 index 0000000000..673cf7d4dd --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_button.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:palm_button" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:palm_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:palm_button" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_door.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_door.json new file mode 100644 index 0000000000..938f3f4d89 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_door.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:palm_door" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:palm_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:palm_door" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_fence_gate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_fence_gate.json new file mode 100644 index 0000000000..ac6e6842c6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_fence_gate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:palm_fence_gate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:palm_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:palm_fence_gate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_pressure_plate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_pressure_plate.json new file mode 100644 index 0000000000..6ff8a715f8 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_pressure_plate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:palm_pressure_plate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:palm_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:palm_pressure_plate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_trapdoor.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_trapdoor.json new file mode 100644 index 0000000000..486baebd91 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_trapdoor.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:palm_trapdoor" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:palm_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:palm_trapdoor" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_button.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_button.json new file mode 100644 index 0000000000..00a71b8736 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_button.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:redwood_button" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:redwood_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:redwood_button" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_door.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_door.json new file mode 100644 index 0000000000..7435cf57c9 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_door.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:redwood_door" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:redwood_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:redwood_door" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_fence_gate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_fence_gate.json new file mode 100644 index 0000000000..dbe2f9b73a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_fence_gate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:redwood_fence_gate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:redwood_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:redwood_fence_gate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_pressure_plate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_pressure_plate.json new file mode 100644 index 0000000000..cab11f1c84 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_pressure_plate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:redwood_pressure_plate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:redwood_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:redwood_pressure_plate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_trapdoor.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_trapdoor.json new file mode 100644 index 0000000000..119434aa13 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_trapdoor.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:redwood_trapdoor" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:redwood_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:redwood_trapdoor" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_button.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_button.json new file mode 100644 index 0000000000..6f7f73cbf3 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_button.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:umbran_button" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:umbran_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:umbran_button" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_door.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_door.json new file mode 100644 index 0000000000..9f372b3480 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_door.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:umbran_door" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:umbran_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:umbran_door" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_fence_gate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_fence_gate.json new file mode 100644 index 0000000000..7e2b3cb055 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_fence_gate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:umbran_fence_gate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:umbran_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:umbran_fence_gate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_pressure_plate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_pressure_plate.json new file mode 100644 index 0000000000..fb41e49165 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_pressure_plate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:umbran_pressure_plate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:umbran_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:umbran_pressure_plate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_trapdoor.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_trapdoor.json new file mode 100644 index 0000000000..5767840176 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_trapdoor.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:umbran_trapdoor" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:umbran_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:umbran_trapdoor" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_button.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_button.json new file mode 100644 index 0000000000..6db1c1a55f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_button.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:willow_button" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:willow_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:willow_button" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_door.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_door.json new file mode 100644 index 0000000000..a222acbe65 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_door.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:willow_door" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:willow_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:willow_door" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_fence_gate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_fence_gate.json new file mode 100644 index 0000000000..71d56928a0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_fence_gate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:willow_fence_gate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:willow_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:willow_fence_gate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_pressure_plate.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_pressure_plate.json new file mode 100644 index 0000000000..4a433fb9be --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_pressure_plate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:willow_pressure_plate" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:willow_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:willow_pressure_plate" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_trapdoor.json b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_trapdoor.json new file mode 100644 index 0000000000..a20aacfc93 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_trapdoor.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:willow_trapdoor" + ] + }, + "criteria": { + "has_planks": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "biomesoplenty:willow_planks" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:willow_trapdoor" + } + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/cherry_boat.json b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/cherry_boat.json new file mode 100644 index 0000000000..62a5dddf4f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/cherry_boat.json @@ -0,0 +1,28 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:cherry_boat" + ] + }, + "criteria": { + "in_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:cherry_boat" + } + } + }, + "requirements": [ + [ + "in_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/dead_boat.json b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/dead_boat.json new file mode 100644 index 0000000000..fd61b6bca7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/dead_boat.json @@ -0,0 +1,28 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:dead_boat" + ] + }, + "criteria": { + "in_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:dead_boat" + } + } + }, + "requirements": [ + [ + "in_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/fir_boat.json b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/fir_boat.json new file mode 100644 index 0000000000..9dfcf51a24 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/fir_boat.json @@ -0,0 +1,28 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:fir_boat" + ] + }, + "criteria": { + "in_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:fir_boat" + } + } + }, + "requirements": [ + [ + "in_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/hellbark_boat.json b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/hellbark_boat.json new file mode 100644 index 0000000000..535eea6579 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/hellbark_boat.json @@ -0,0 +1,28 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:hellbark_boat" + ] + }, + "criteria": { + "in_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:hellbark_boat" + } + } + }, + "requirements": [ + [ + "in_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/jacaranda_boat.json b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/jacaranda_boat.json new file mode 100644 index 0000000000..56363e95fb --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/jacaranda_boat.json @@ -0,0 +1,28 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:jacaranda_boat" + ] + }, + "criteria": { + "in_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:jacaranda_boat" + } + } + }, + "requirements": [ + [ + "in_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/magic_boat.json b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/magic_boat.json new file mode 100644 index 0000000000..9b2fbc37fb --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/magic_boat.json @@ -0,0 +1,28 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:magic_boat" + ] + }, + "criteria": { + "in_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:magic_boat" + } + } + }, + "requirements": [ + [ + "in_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/mahogany_boat.json b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/mahogany_boat.json new file mode 100644 index 0000000000..e42459b59d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/mahogany_boat.json @@ -0,0 +1,28 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:mahogany_boat" + ] + }, + "criteria": { + "in_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:mahogany_boat" + } + } + }, + "requirements": [ + [ + "in_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/palm_boat.json b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/palm_boat.json new file mode 100644 index 0000000000..6a4d392064 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/palm_boat.json @@ -0,0 +1,28 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:palm_boat" + ] + }, + "criteria": { + "in_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:palm_boat" + } + } + }, + "requirements": [ + [ + "in_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/redwood_boat.json b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/redwood_boat.json new file mode 100644 index 0000000000..d50741a693 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/redwood_boat.json @@ -0,0 +1,28 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:redwood_boat" + ] + }, + "criteria": { + "in_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:redwood_boat" + } + } + }, + "requirements": [ + [ + "in_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/umbran_boat.json b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/umbran_boat.json new file mode 100644 index 0000000000..3ac383cbd8 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/umbran_boat.json @@ -0,0 +1,28 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:umbran_boat" + ] + }, + "criteria": { + "in_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:umbran_boat" + } + } + }, + "requirements": [ + [ + "in_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/willow_boat.json b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/willow_boat.json new file mode 100644 index 0000000000..3614c62d91 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/advancements/recipes/transportation/willow_boat.json @@ -0,0 +1,28 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "biomesoplenty:willow_boat" + ] + }, + "criteria": { + "in_water": { + "trigger": "minecraft:enter_block", + "conditions": { + "block": "minecraft:water" + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "biomesoplenty:willow_boat" + } + } + }, + "requirements": [ + [ + "in_water", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/advancements/all_biomes.json b/src/main/resources/data/biomesoplenty/loot_tables/advancements/all_biomes.json new file mode 100644 index 0000000000..4cf0c195ab --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/advancements/all_biomes.json @@ -0,0 +1,24 @@ +{ + "pools": [ + { + "rolls": 1, + "name": "all_biomes", + "entries": [ + { + "type": "item", + "name": "biomesoplenty:music_disc_wanderer", + "weight": 1, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 1 + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/barley.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/barley.json new file mode 100644 index 0000000000..99898292b0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/barley.json @@ -0,0 +1,47 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + } + ], + "name": "biomesoplenty:barley" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:barley", + "properties": { + "half": "lower" + } + }, + { + "condition": "minecraft:random_chance", + "chance": 0.125 + } + ], + "name": "minecraft:wheat_seeds" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sand.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sand.json new file mode 100644 index 0000000000..d25fad88a4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sand.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:black_sand" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sandstone.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sandstone.json new file mode 100644 index 0000000000..dcb7dc7603 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sandstone.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:black_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sandstone_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sandstone_slab.json new file mode 100644 index 0000000000..248db106fd --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sandstone_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:black_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:black_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sandstone_stairs.json new file mode 100644 index 0000000000..9db16d4aad --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sandstone_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:black_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sandstone_wall.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sandstone_wall.json new file mode 100644 index 0000000000..1438af181d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sandstone_wall.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:black_sandstone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/blue_hydrangea.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/blue_hydrangea.json new file mode 100644 index 0000000000..1dfa61907c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/blue_hydrangea.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:blue_hydrangea", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:blue_hydrangea" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/bramble.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/bramble.json new file mode 100644 index 0000000000..57e14a1cb5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/bramble.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:bramble" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/burning_blossom.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/burning_blossom.json new file mode 100644 index 0000000000..48d74a074d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/burning_blossom.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:burning_blossom" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/bush.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/bush.json new file mode 100644 index 0000000000..9ea6e0369a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/bush.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:bush" + } + ], + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cattail.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cattail.json new file mode 100644 index 0000000000..15c2bd9689 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cattail.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:cattail", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:cattail" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_button.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_button.json new file mode 100644 index 0000000000..272699014e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_button.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:cherry_button" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_door.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_door.json new file mode 100644 index 0000000000..752aaad4a5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_door.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:cherry_door", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:cherry_door" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_fence.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_fence.json new file mode 100644 index 0000000000..3265224e29 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_fence.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:cherry_fence" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_fence_gate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_fence_gate.json new file mode 100644 index 0000000000..6e4e0a52d5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:cherry_fence_gate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_log.json new file mode 100644 index 0000000000..5e22f5435a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:cherry_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_planks.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_planks.json new file mode 100644 index 0000000000..2d9b215d62 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_planks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:cherry_planks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_pressure_plate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_pressure_plate.json new file mode 100644 index 0000000000..34978c372e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_pressure_plate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:cherry_pressure_plate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_slab.json new file mode 100644 index 0000000000..3cc8a91a78 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:cherry_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:cherry_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_stairs.json new file mode 100644 index 0000000000..10ba8f44a1 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:cherry_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_trapdoor.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_trapdoor.json new file mode 100644 index 0000000000..d282a4e851 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_trapdoor.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:cherry_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_wood.json new file mode 100644 index 0000000000..6fd39f3c84 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:cherry_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/chiseled_black_sandstone.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/chiseled_black_sandstone.json new file mode 100644 index 0000000000..6764902dba --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/chiseled_black_sandstone.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:chiseled_black_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/chiseled_orange_sandstone.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/chiseled_orange_sandstone.json new file mode 100644 index 0000000000..f0ecc5cbf7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/chiseled_orange_sandstone.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:chiseled_orange_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/chiseled_white_sandstone.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/chiseled_white_sandstone.json new file mode 100644 index 0000000000..2f1a710f69 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/chiseled_white_sandstone.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:chiseled_white_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/clover.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/clover.json new file mode 100644 index 0000000000..d6ca611b2b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/clover.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:clover" + } + ], + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_black_sandstone.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_black_sandstone.json new file mode 100644 index 0000000000..743e83c3ad --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_black_sandstone.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:cut_black_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_black_sandstone_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_black_sandstone_slab.json new file mode 100644 index 0000000000..4af4cb3828 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_black_sandstone_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:cut_black_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:cut_black_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_orange_sandstone.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_orange_sandstone.json new file mode 100644 index 0000000000..246a5a9db2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_orange_sandstone.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:cut_orange_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_orange_sandstone_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_orange_sandstone_slab.json new file mode 100644 index 0000000000..6d44d269c2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_orange_sandstone_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:cut_orange_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:cut_orange_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_white_sandstone.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_white_sandstone.json new file mode 100644 index 0000000000..513bf6c764 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_white_sandstone.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:cut_white_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_white_sandstone_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_white_sandstone_slab.json new file mode 100644 index 0000000000..5dc41ce246 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_white_sandstone_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:cut_white_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:cut_white_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_branch.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_branch.json new file mode 100644 index 0000000000..dc86408d34 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_branch.json @@ -0,0 +1,50 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + } + ], + "name": "biomesoplenty:dead_branch" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:random_chance", + "chance": 0.125 + } + ], + "functions": [ + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:uniform_bonus_count", + "parameters": { + "bonusMultiplier": 2 + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_button.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_button.json new file mode 100644 index 0000000000..37c7aafe7c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_button.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:dead_button" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_door.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_door.json new file mode 100644 index 0000000000..b76cfd8895 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_door.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:dead_door", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:dead_door" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_fence.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_fence.json new file mode 100644 index 0000000000..02c5432ea5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_fence.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:dead_fence" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_fence_gate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_fence_gate.json new file mode 100644 index 0000000000..a353f978f6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:dead_fence_gate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_grass.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_grass.json new file mode 100644 index 0000000000..b32bc05be3 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_grass.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:dead_grass" + } + ], + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_leaves.json new file mode 100644 index 0000000000..76f90d192a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_leaves.json @@ -0,0 +1,128 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:dead_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:dead_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_log.json new file mode 100644 index 0000000000..7cadfbb1ae --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:dead_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_planks.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_planks.json new file mode 100644 index 0000000000..fa4756b9ae --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_planks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:dead_planks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_pressure_plate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_pressure_plate.json new file mode 100644 index 0000000000..9e52a95bf3 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_pressure_plate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:dead_pressure_plate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_sapling.json new file mode 100644 index 0000000000..318fb4e348 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:dead_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_slab.json new file mode 100644 index 0000000000..748de5b3fb --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:dead_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:dead_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_stairs.json new file mode 100644 index 0000000000..487421dadb --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:dead_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_trapdoor.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_trapdoor.json new file mode 100644 index 0000000000..3165e0c5e6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_trapdoor.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:dead_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_wood.json new file mode 100644 index 0000000000..69f0db858f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:dead_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/desert_grass.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/desert_grass.json new file mode 100644 index 0000000000..93d17f49d4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/desert_grass.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:desert_grass" + } + ], + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dried_salt.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dried_salt.json new file mode 100644 index 0000000000..55a08749d2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dried_salt.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:dried_salt" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/dune_grass.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dune_grass.json new file mode 100644 index 0000000000..69bd7a9eed --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/dune_grass.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:dune_grass" + } + ], + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_button.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_button.json new file mode 100644 index 0000000000..e686139dca --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_button.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:fir_button" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_door.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_door.json new file mode 100644 index 0000000000..de10d81cea --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_door.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:fir_door", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:fir_door" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_fence.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_fence.json new file mode 100644 index 0000000000..cab8310a7e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_fence.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:fir_fence" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_fence_gate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_fence_gate.json new file mode 100644 index 0000000000..d2f380a0ac --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:fir_fence_gate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_leaves.json new file mode 100644 index 0000000000..33f65f91b0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_leaves.json @@ -0,0 +1,128 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:fir_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:fir_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_log.json new file mode 100644 index 0000000000..a8be403d41 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:fir_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_planks.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_planks.json new file mode 100644 index 0000000000..333d78bceb --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_planks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:fir_planks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_pressure_plate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_pressure_plate.json new file mode 100644 index 0000000000..1d0f0c37dc --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_pressure_plate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:fir_pressure_plate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_sapling.json new file mode 100644 index 0000000000..8aa4d99b93 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:fir_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_slab.json new file mode 100644 index 0000000000..50a05a9f9f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:fir_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:fir_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_stairs.json new file mode 100644 index 0000000000..eae5f19f8c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:fir_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_trapdoor.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_trapdoor.json new file mode 100644 index 0000000000..e52f7531fd --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_trapdoor.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:fir_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_wood.json new file mode 100644 index 0000000000..daeb133aa2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:fir_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/flesh.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/flesh.json new file mode 100644 index 0000000000..7439293497 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/flesh.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:flesh" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/flowering_oak_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/flowering_oak_leaves.json new file mode 100644 index 0000000000..0a058dbf7c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/flowering_oak_leaves.json @@ -0,0 +1,182 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:flowering_oak_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:flowering_oak_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.005, + 0.0055555557, + 0.00625, + 0.008333334, + 0.025 + ] + } + ], + "name": "minecraft:apple" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/flowering_oak_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/flowering_oak_sapling.json new file mode 100644 index 0000000000..e4f0b7a6eb --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/flowering_oak_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:flowering_oak_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/glowflower.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/glowflower.json new file mode 100644 index 0000000000..436c9943ca --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/glowflower.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:glowflower" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/glowshroom.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/glowshroom.json new file mode 100644 index 0000000000..6ef3cd9614 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/glowshroom.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:glowshroom" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/glowshroom_block.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/glowshroom_block.json new file mode 100644 index 0000000000..1073097d9b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/glowshroom_block.json @@ -0,0 +1,57 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "biomesoplenty:glowshroom_block" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": -6.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:limit_count", + "limit": { + "min": 0 + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:glowshroom" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/goldenrod.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/goldenrod.json new file mode 100644 index 0000000000..83262073a8 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/goldenrod.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:goldenrod", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:goldenrod" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_button.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_button.json new file mode 100644 index 0000000000..3c7efe9a55 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_button.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:hellbark_button" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_door.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_door.json new file mode 100644 index 0000000000..618c26d8e5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_door.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:hellbark_door", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:hellbark_door" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_fence.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_fence.json new file mode 100644 index 0000000000..8849a57ecf --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_fence.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:hellbark_fence" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_fence_gate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_fence_gate.json new file mode 100644 index 0000000000..51ce1776f2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:hellbark_fence_gate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_leaves.json new file mode 100644 index 0000000000..694a322aa8 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_leaves.json @@ -0,0 +1,128 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:hellbark_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:hellbark_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_log.json new file mode 100644 index 0000000000..84383f8c18 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:hellbark_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_planks.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_planks.json new file mode 100644 index 0000000000..3fe6477e92 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_planks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:hellbark_planks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_pressure_plate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_pressure_plate.json new file mode 100644 index 0000000000..23369cc081 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_pressure_plate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:hellbark_pressure_plate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_sapling.json new file mode 100644 index 0000000000..386c0107a8 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:hellbark_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_slab.json new file mode 100644 index 0000000000..7c1d90c60e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:hellbark_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:hellbark_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_stairs.json new file mode 100644 index 0000000000..f07bb3767f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:hellbark_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_trapdoor.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_trapdoor.json new file mode 100644 index 0000000000..10e651e0d0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_trapdoor.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:hellbark_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_wood.json new file mode 100644 index 0000000000..2cf1da76ee --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:hellbark_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/huge_clover_petal.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/huge_clover_petal.json new file mode 100644 index 0000000000..55b758bcff --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/huge_clover_petal.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:huge_clover_petal" + } + ], + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_button.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_button.json new file mode 100644 index 0000000000..b8db619162 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_button.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:jacaranda_button" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_door.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_door.json new file mode 100644 index 0000000000..4540e53cf9 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_door.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:jacaranda_door", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:jacaranda_door" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_fence.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_fence.json new file mode 100644 index 0000000000..21832354a6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_fence.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:jacaranda_fence" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_fence_gate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_fence_gate.json new file mode 100644 index 0000000000..f31fee55d4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:jacaranda_fence_gate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_leaves.json new file mode 100644 index 0000000000..fc5584092b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_leaves.json @@ -0,0 +1,128 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:jacaranda_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:jacaranda_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_log.json new file mode 100644 index 0000000000..5df6b4b59d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:jacaranda_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_planks.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_planks.json new file mode 100644 index 0000000000..b3d4962844 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_planks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:jacaranda_planks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_pressure_plate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_pressure_plate.json new file mode 100644 index 0000000000..dbcec5e65e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_pressure_plate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:jacaranda_pressure_plate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_sapling.json new file mode 100644 index 0000000000..d48d2425c9 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:jacaranda_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_slab.json new file mode 100644 index 0000000000..bdf37210af --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:jacaranda_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:jacaranda_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_stairs.json new file mode 100644 index 0000000000..4f4e715f20 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:jacaranda_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_trapdoor.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_trapdoor.json new file mode 100644 index 0000000000..f94964bb77 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_trapdoor.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:jacaranda_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_wood.json new file mode 100644 index 0000000000..3a6443bc26 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:jacaranda_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/lavender.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/lavender.json new file mode 100644 index 0000000000..56ca8d48f9 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/lavender.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:lavender" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_button.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_button.json new file mode 100644 index 0000000000..5ccc6f296c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_button.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:magic_button" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_door.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_door.json new file mode 100644 index 0000000000..de1b1499ec --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_door.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:magic_door", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:magic_door" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_fence.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_fence.json new file mode 100644 index 0000000000..d1114fa685 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_fence.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:magic_fence" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_fence_gate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_fence_gate.json new file mode 100644 index 0000000000..39663a9553 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:magic_fence_gate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_leaves.json new file mode 100644 index 0000000000..d562b7b09d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_leaves.json @@ -0,0 +1,128 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:magic_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:magic_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_log.json new file mode 100644 index 0000000000..159f81b69d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:magic_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_planks.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_planks.json new file mode 100644 index 0000000000..290e885f86 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_planks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:magic_planks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_pressure_plate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_pressure_plate.json new file mode 100644 index 0000000000..72cec65fda --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_pressure_plate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:magic_pressure_plate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_sapling.json new file mode 100644 index 0000000000..195b57125f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:magic_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_slab.json new file mode 100644 index 0000000000..8526fbf89d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:magic_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:magic_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_stairs.json new file mode 100644 index 0000000000..a57223710a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:magic_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_trapdoor.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_trapdoor.json new file mode 100644 index 0000000000..af136a17da --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_trapdoor.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:magic_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_wood.json new file mode 100644 index 0000000000..a3a98b018e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:magic_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_button.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_button.json new file mode 100644 index 0000000000..d92665da9c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_button.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:mahogany_button" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_door.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_door.json new file mode 100644 index 0000000000..1f639311a1 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_door.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:mahogany_door", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:mahogany_door" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_fence.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_fence.json new file mode 100644 index 0000000000..fdc2019c56 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_fence.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:mahogany_fence" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_fence_gate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_fence_gate.json new file mode 100644 index 0000000000..16e2263e0d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:mahogany_fence_gate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_leaves.json new file mode 100644 index 0000000000..395f03802a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_leaves.json @@ -0,0 +1,128 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:mahogany_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:mahogany_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_log.json new file mode 100644 index 0000000000..08449c0521 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:mahogany_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_planks.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_planks.json new file mode 100644 index 0000000000..ed9139fd44 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_planks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:mahogany_planks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_pressure_plate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_pressure_plate.json new file mode 100644 index 0000000000..37e4820753 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_pressure_plate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:mahogany_pressure_plate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_sapling.json new file mode 100644 index 0000000000..3bda4a2f45 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:mahogany_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_slab.json new file mode 100644 index 0000000000..1aa13e715c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:mahogany_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:mahogany_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_stairs.json new file mode 100644 index 0000000000..80a391c4f1 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:mahogany_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_trapdoor.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_trapdoor.json new file mode 100644 index 0000000000..e0487a33f1 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_trapdoor.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:mahogany_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_wood.json new file mode 100644 index 0000000000..8bb10d938e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:mahogany_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mangrove_root.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mangrove_root.json new file mode 100644 index 0000000000..366ab36ec9 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mangrove_root.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:mangrove_root", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:mangrove_root" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/maple_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/maple_leaves.json new file mode 100644 index 0000000000..09dc8c9325 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/maple_leaves.json @@ -0,0 +1,182 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:maple_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:maple_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.005, + 0.0055555557, + 0.00625, + 0.008333334, + 0.025 + ] + } + ], + "name": "minecraft:apple" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/maple_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/maple_sapling.json new file mode 100644 index 0000000000..fedf7df646 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/maple_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:maple_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mud.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mud.json new file mode 100644 index 0000000000..9a86e3a129 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mud.json @@ -0,0 +1,47 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "biomesoplenty:mud" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": 4 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:mud_ball" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mud_brick_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mud_brick_slab.json new file mode 100644 index 0000000000..ce84db921f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mud_brick_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:mud_brick_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:mud_brick_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mud_brick_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mud_brick_stairs.json new file mode 100644 index 0000000000..4a59b050da --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mud_brick_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:mud_brick_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mud_brick_wall.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mud_brick_wall.json new file mode 100644 index 0000000000..3aec190752 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mud_brick_wall.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:mud_brick_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/mud_bricks.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mud_bricks.json new file mode 100644 index 0000000000..f702933a4e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/mud_bricks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:mud_bricks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/nether_crystal.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/nether_crystal.json new file mode 100644 index 0000000000..2fecfab269 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/nether_crystal.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:nether_crystal" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/nether_crystal_block.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/nether_crystal_block.json new file mode 100644 index 0000000000..361f96c500 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/nether_crystal_block.json @@ -0,0 +1,66 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "biomesoplenty:nether_crystal_block" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 2.0, + "max": 4.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:uniform_bonus_count", + "parameters": { + "bonusMultiplier": 1 + } + }, + { + "function": "minecraft:limit_count", + "limit": { + "max": 4, + "min": 1 + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:nether_crystal" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_autumn_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_autumn_leaves.json new file mode 100644 index 0000000000..a095aaa904 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_autumn_leaves.json @@ -0,0 +1,182 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:orange_autumn_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:orange_autumn_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.005, + 0.0055555557, + 0.00625, + 0.008333334, + 0.025 + ] + } + ], + "name": "minecraft:apple" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_autumn_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_autumn_sapling.json new file mode 100644 index 0000000000..1d6568172d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_autumn_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:orange_autumn_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_cosmos.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_cosmos.json new file mode 100644 index 0000000000..8aac0cef38 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_cosmos.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:orange_cosmos" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sand.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sand.json new file mode 100644 index 0000000000..4303d02fd6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sand.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:orange_sand" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sandstone.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sandstone.json new file mode 100644 index 0000000000..2e1440ddde --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sandstone.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:orange_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sandstone_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sandstone_slab.json new file mode 100644 index 0000000000..00b72e08d0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sandstone_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:orange_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:orange_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sandstone_stairs.json new file mode 100644 index 0000000000..6e641e08c0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sandstone_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:orange_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sandstone_wall.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sandstone_wall.json new file mode 100644 index 0000000000..7420ae3b41 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sandstone_wall.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:orange_sandstone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/origin_grass_block.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/origin_grass_block.json new file mode 100644 index 0000000000..d383a8746e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/origin_grass_block.json @@ -0,0 +1,43 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "biomesoplenty:origin_grass_block" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "name": "minecraft:dirt" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/origin_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/origin_leaves.json new file mode 100644 index 0000000000..1167d56c37 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/origin_leaves.json @@ -0,0 +1,182 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:origin_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:origin_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.005, + 0.0055555557, + 0.00625, + 0.008333334, + 0.025 + ] + } + ], + "name": "minecraft:apple" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/origin_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/origin_sapling.json new file mode 100644 index 0000000000..aff84af50f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/origin_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:origin_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_button.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_button.json new file mode 100644 index 0000000000..eb8edcb100 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_button.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:palm_button" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_door.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_door.json new file mode 100644 index 0000000000..c78b1ad964 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_door.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:palm_door", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:palm_door" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_fence.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_fence.json new file mode 100644 index 0000000000..4d4ff54966 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_fence.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:palm_fence" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_fence_gate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_fence_gate.json new file mode 100644 index 0000000000..c06d6334b5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:palm_fence_gate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_leaves.json new file mode 100644 index 0000000000..864466ce4f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_leaves.json @@ -0,0 +1,128 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:palm_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:palm_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_log.json new file mode 100644 index 0000000000..e0fa95ec04 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:palm_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_planks.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_planks.json new file mode 100644 index 0000000000..4f565f9789 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_planks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:palm_planks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_pressure_plate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_pressure_plate.json new file mode 100644 index 0000000000..31dfda22e1 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_pressure_plate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:palm_pressure_plate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_sapling.json new file mode 100644 index 0000000000..b4bf3586e4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:palm_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_slab.json new file mode 100644 index 0000000000..c3d43a561f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:palm_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:palm_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_stairs.json new file mode 100644 index 0000000000..a78e218310 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:palm_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_trapdoor.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_trapdoor.json new file mode 100644 index 0000000000..4f5570110c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_trapdoor.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:palm_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_wood.json new file mode 100644 index 0000000000..5f820ac2f4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:palm_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/pink_cherry_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/pink_cherry_leaves.json new file mode 100644 index 0000000000..d788cb2cc7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/pink_cherry_leaves.json @@ -0,0 +1,128 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:pink_cherry_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:pink_cherry_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/pink_cherry_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/pink_cherry_sapling.json new file mode 100644 index 0000000000..1ed77f122f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/pink_cherry_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:pink_cherry_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/pink_daffodil.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/pink_daffodil.json new file mode 100644 index 0000000000..2a696a287a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/pink_daffodil.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:pink_daffodil" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/pink_hibiscus.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/pink_hibiscus.json new file mode 100644 index 0000000000..9913ad2403 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/pink_hibiscus.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:pink_hibiscus" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_blue_hydrangea.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_blue_hydrangea.json new file mode 100644 index 0000000000..0e87babf7a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_blue_hydrangea.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:blue_hydrangea" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_burning_blossom.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_burning_blossom.json new file mode 100644 index 0000000000..24403a81c2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_burning_blossom.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:burning_blossom" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_clover.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_clover.json new file mode 100644 index 0000000000..32f7e102b4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_clover.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:clover" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_dead_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_dead_sapling.json new file mode 100644 index 0000000000..0d99490b1d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_dead_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:dead_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_fir_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_fir_sapling.json new file mode 100644 index 0000000000..4dfb0e1d02 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_fir_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:fir_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_flowering_oak_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_flowering_oak_sapling.json new file mode 100644 index 0000000000..964598895f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_flowering_oak_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:flowering_oak_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_glowflower.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_glowflower.json new file mode 100644 index 0000000000..10223904c5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_glowflower.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:glowflower" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_glowshroom.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_glowshroom.json new file mode 100644 index 0000000000..1389c9ef43 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_glowshroom.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:glowshroom" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_hellbark_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_hellbark_sapling.json new file mode 100644 index 0000000000..97ec239437 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_hellbark_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:hellbark_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_jacaranda_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_jacaranda_sapling.json new file mode 100644 index 0000000000..3a9db02311 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_jacaranda_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:jacaranda_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_lavender.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_lavender.json new file mode 100644 index 0000000000..8a43cfef3f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_lavender.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:lavender" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_magic_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_magic_sapling.json new file mode 100644 index 0000000000..689aa3d44a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_magic_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:magic_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_mahogany_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_mahogany_sapling.json new file mode 100644 index 0000000000..b81a70ae05 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_mahogany_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:mahogany_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_maple_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_maple_sapling.json new file mode 100644 index 0000000000..6c2cfceccc --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_maple_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:maple_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_orange_autumn_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_orange_autumn_sapling.json new file mode 100644 index 0000000000..f770ada99b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_orange_autumn_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:orange_autumn_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_orange_cosmos.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_orange_cosmos.json new file mode 100644 index 0000000000..b3703dedb9 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_orange_cosmos.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:orange_cosmos" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_origin_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_origin_sapling.json new file mode 100644 index 0000000000..87400189b4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_origin_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:origin_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_palm_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_palm_sapling.json new file mode 100644 index 0000000000..947f3f67ee --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_palm_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:palm_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_pink_cherry_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_pink_cherry_sapling.json new file mode 100644 index 0000000000..f569e0a946 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_pink_cherry_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:pink_cherry_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_pink_daffodil.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_pink_daffodil.json new file mode 100644 index 0000000000..5b9026528e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_pink_daffodil.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:pink_daffodil" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_pink_hibiscus.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_pink_hibiscus.json new file mode 100644 index 0000000000..2c33dd3e9f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_pink_hibiscus.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:pink_hibiscus" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_rainbow_birch_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_rainbow_birch_sapling.json new file mode 100644 index 0000000000..965d426485 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_rainbow_birch_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:rainbow_birch_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_redwood_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_redwood_sapling.json new file mode 100644 index 0000000000..25601832e9 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_redwood_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:redwood_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_rose.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_rose.json new file mode 100644 index 0000000000..1fcc10d54c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_rose.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:rose" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_sprout.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_sprout.json new file mode 100644 index 0000000000..fd03af647d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_sprout.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:sprout" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_toadstool.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_toadstool.json new file mode 100644 index 0000000000..f27c57fd80 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_toadstool.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:toadstool" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_umbran_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_umbran_sapling.json new file mode 100644 index 0000000000..cd16dae47e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_umbran_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:umbran_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_violet.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_violet.json new file mode 100644 index 0000000000..31fec8c4ac --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_violet.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:violet" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_white_cherry_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_white_cherry_sapling.json new file mode 100644 index 0000000000..7ab71e57e8 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_white_cherry_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:white_cherry_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_wildflower.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_wildflower.json new file mode 100644 index 0000000000..15a10ce6aa --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_wildflower.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:wildflower" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_willow_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_willow_sapling.json new file mode 100644 index 0000000000..dd630e0ac0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_willow_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:willow_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_wilted_lily.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_wilted_lily.json new file mode 100644 index 0000000000..582193a556 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_wilted_lily.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:wilted_lily" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_yellow_autumn_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_yellow_autumn_sapling.json new file mode 100644 index 0000000000..56d475cf12 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_yellow_autumn_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:yellow_autumn_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/rainbow_birch_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/rainbow_birch_leaves.json new file mode 100644 index 0000000000..3551de0387 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/rainbow_birch_leaves.json @@ -0,0 +1,182 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:rainbow_birch_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:rainbow_birch_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.005, + 0.0055555557, + 0.00625, + 0.008333334, + 0.025 + ] + } + ], + "name": "minecraft:apple" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/rainbow_birch_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/rainbow_birch_sapling.json new file mode 100644 index 0000000000..6717192756 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/rainbow_birch_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:rainbow_birch_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_button.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_button.json new file mode 100644 index 0000000000..0e502a36f5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_button.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:redwood_button" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_door.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_door.json new file mode 100644 index 0000000000..816f8294af --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_door.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:redwood_door", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:redwood_door" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_fence.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_fence.json new file mode 100644 index 0000000000..b7b11bdd80 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_fence.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:redwood_fence" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_fence_gate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_fence_gate.json new file mode 100644 index 0000000000..09769a5967 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:redwood_fence_gate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_leaves.json new file mode 100644 index 0000000000..4f5750e12a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_leaves.json @@ -0,0 +1,128 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:redwood_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:redwood_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_log.json new file mode 100644 index 0000000000..bcb05974e0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:redwood_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_planks.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_planks.json new file mode 100644 index 0000000000..f9dbe0794b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_planks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:redwood_planks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_pressure_plate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_pressure_plate.json new file mode 100644 index 0000000000..4e7868271a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_pressure_plate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:redwood_pressure_plate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_sapling.json new file mode 100644 index 0000000000..f73736f8a4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:redwood_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_slab.json new file mode 100644 index 0000000000..d5dc6a3196 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:redwood_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:redwood_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_stairs.json new file mode 100644 index 0000000000..6a623ac84c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:redwood_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_trapdoor.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_trapdoor.json new file mode 100644 index 0000000000..9b6ec7639a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_trapdoor.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:redwood_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_wood.json new file mode 100644 index 0000000000..9660bc31bb --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:redwood_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/reed.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/reed.json new file mode 100644 index 0000000000..0826e9f9f2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/reed.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:reed", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:reed" + } + ], + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/rose.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/rose.json new file mode 100644 index 0000000000..0b2a81ce53 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/rose.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:rose" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_black_sandstone.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_black_sandstone.json new file mode 100644 index 0000000000..793afee911 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_black_sandstone.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:smooth_black_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_black_sandstone_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_black_sandstone_slab.json new file mode 100644 index 0000000000..02a003e042 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_black_sandstone_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:smooth_black_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:smooth_black_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_black_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_black_sandstone_stairs.json new file mode 100644 index 0000000000..e77b50e89a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_black_sandstone_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:smooth_black_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_orange_sandstone.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_orange_sandstone.json new file mode 100644 index 0000000000..3c98de71c4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_orange_sandstone.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:smooth_orange_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_orange_sandstone_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_orange_sandstone_slab.json new file mode 100644 index 0000000000..b5b5e07190 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_orange_sandstone_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:smooth_orange_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:smooth_orange_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_orange_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_orange_sandstone_stairs.json new file mode 100644 index 0000000000..debde3c4bf --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_orange_sandstone_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:smooth_orange_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_white_sandstone.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_white_sandstone.json new file mode 100644 index 0000000000..370112f75a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_white_sandstone.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:smooth_white_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_white_sandstone_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_white_sandstone_slab.json new file mode 100644 index 0000000000..5b2704f79a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_white_sandstone_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:smooth_white_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:smooth_white_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_white_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_white_sandstone_stairs.json new file mode 100644 index 0000000000..a18f622bdd --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_white_sandstone_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:smooth_white_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/spanish_moss.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/spanish_moss.json new file mode 100644 index 0000000000..1c5c31704e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/spanish_moss.json @@ -0,0 +1,64 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "items": [ + "minecraft:shears" + ] + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:spanish_moss" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.33, + 0.55, + 0.77, + 1.0 + ] + } + ], + "name": "biomesoplenty:spanish_moss" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/spanish_moss_plant.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/spanish_moss_plant.json new file mode 100644 index 0000000000..1c5c31704e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/spanish_moss_plant.json @@ -0,0 +1,64 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "items": [ + "minecraft:shears" + ] + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:spanish_moss" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.33, + 0.55, + 0.77, + 1.0 + ] + } + ], + "name": "biomesoplenty:spanish_moss" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/sprout.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/sprout.json new file mode 100644 index 0000000000..b4a77ab4b4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/sprout.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:sprout" + } + ], + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_cherry_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_cherry_log.json new file mode 100644 index 0000000000..aac0de736e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_cherry_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_cherry_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_cherry_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_cherry_wood.json new file mode 100644 index 0000000000..8c89c99f5f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_cherry_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_cherry_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_dead_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_dead_log.json new file mode 100644 index 0000000000..6f69fd84de --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_dead_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_dead_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_dead_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_dead_wood.json new file mode 100644 index 0000000000..c297596ede --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_dead_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_dead_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_fir_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_fir_log.json new file mode 100644 index 0000000000..71c83a35c4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_fir_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_fir_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_fir_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_fir_wood.json new file mode 100644 index 0000000000..568586bf8d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_fir_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_fir_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_hellbark_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_hellbark_log.json new file mode 100644 index 0000000000..f96564edd7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_hellbark_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_hellbark_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_hellbark_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_hellbark_wood.json new file mode 100644 index 0000000000..2bd800cea6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_hellbark_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_hellbark_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_jacaranda_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_jacaranda_log.json new file mode 100644 index 0000000000..8ba5abeaca --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_jacaranda_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_jacaranda_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_jacaranda_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_jacaranda_wood.json new file mode 100644 index 0000000000..108bcdabab --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_jacaranda_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_jacaranda_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_magic_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_magic_log.json new file mode 100644 index 0000000000..c5e4ae2803 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_magic_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_magic_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_magic_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_magic_wood.json new file mode 100644 index 0000000000..acdc72f289 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_magic_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_magic_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_mahogany_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_mahogany_log.json new file mode 100644 index 0000000000..94db1aeade --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_mahogany_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_mahogany_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_mahogany_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_mahogany_wood.json new file mode 100644 index 0000000000..1fcdcb0b74 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_mahogany_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_mahogany_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_palm_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_palm_log.json new file mode 100644 index 0000000000..8129950adb --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_palm_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_palm_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_palm_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_palm_wood.json new file mode 100644 index 0000000000..36599d9adc --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_palm_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_palm_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_redwood_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_redwood_log.json new file mode 100644 index 0000000000..6a90ffb081 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_redwood_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_redwood_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_redwood_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_redwood_wood.json new file mode 100644 index 0000000000..b76b8e23c4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_redwood_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_redwood_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_umbran_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_umbran_log.json new file mode 100644 index 0000000000..c4645508dc --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_umbran_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_umbran_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_umbran_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_umbran_wood.json new file mode 100644 index 0000000000..615039cd1a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_umbran_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_umbran_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_willow_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_willow_log.json new file mode 100644 index 0000000000..cfc53f1396 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_willow_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_willow_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_willow_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_willow_wood.json new file mode 100644 index 0000000000..785c37cf18 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_willow_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:stripped_willow_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/toadstool.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/toadstool.json new file mode 100644 index 0000000000..76af9e76b4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/toadstool.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:toadstool" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/toadstool_block.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/toadstool_block.json new file mode 100644 index 0000000000..07c0d1f47a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/toadstool_block.json @@ -0,0 +1,57 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "biomesoplenty:toadstool_block" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": -6.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:limit_count", + "limit": { + "min": 0 + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:toadstool" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_button.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_button.json new file mode 100644 index 0000000000..5ceaa94759 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_button.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:umbran_button" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_door.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_door.json new file mode 100644 index 0000000000..7c3c1adbee --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_door.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:umbran_door", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:umbran_door" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_fence.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_fence.json new file mode 100644 index 0000000000..d97671024d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_fence.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:umbran_fence" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_fence_gate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_fence_gate.json new file mode 100644 index 0000000000..f48aa6e4ac --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:umbran_fence_gate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_leaves.json new file mode 100644 index 0000000000..817916ace7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_leaves.json @@ -0,0 +1,128 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:umbran_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:umbran_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_log.json new file mode 100644 index 0000000000..cfcdfa1d8c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:umbran_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_planks.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_planks.json new file mode 100644 index 0000000000..7f67dd25d9 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_planks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:umbran_planks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_pressure_plate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_pressure_plate.json new file mode 100644 index 0000000000..df2e1c3c71 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_pressure_plate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:umbran_pressure_plate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_sapling.json new file mode 100644 index 0000000000..155048f935 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:umbran_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_slab.json new file mode 100644 index 0000000000..3f30eb79af --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:umbran_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:umbran_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_stairs.json new file mode 100644 index 0000000000..697252eb07 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:umbran_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_trapdoor.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_trapdoor.json new file mode 100644 index 0000000000..c94b585368 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_trapdoor.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:umbran_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_wood.json new file mode 100644 index 0000000000..2c664144fa --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:umbran_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/violet.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/violet.json new file mode 100644 index 0000000000..ac338b4f46 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/violet.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:violet" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/watergrass.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/watergrass.json new file mode 100644 index 0000000000..59dcf8c094 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/watergrass.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:watergrass", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:watergrass" + } + ], + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_cherry_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_cherry_leaves.json new file mode 100644 index 0000000000..d6966e04fe --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_cherry_leaves.json @@ -0,0 +1,128 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:white_cherry_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:white_cherry_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_cherry_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_cherry_sapling.json new file mode 100644 index 0000000000..657e1ca054 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_cherry_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:white_cherry_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sand.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sand.json new file mode 100644 index 0000000000..3bad59466f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sand.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:white_sand" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sandstone.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sandstone.json new file mode 100644 index 0000000000..2b609b6a1b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sandstone.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:white_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sandstone_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sandstone_slab.json new file mode 100644 index 0000000000..34bb4b20db --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sandstone_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:white_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:white_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sandstone_stairs.json new file mode 100644 index 0000000000..e25fe627e6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sandstone_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:white_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sandstone_wall.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sandstone_wall.json new file mode 100644 index 0000000000..238ac7a35f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sandstone_wall.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:white_sandstone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/wildflower.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/wildflower.json new file mode 100644 index 0000000000..8593290501 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/wildflower.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:wildflower" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_button.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_button.json new file mode 100644 index 0000000000..88e4c7914f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_button.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:willow_button" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_door.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_door.json new file mode 100644 index 0000000000..537a0ef175 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_door.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:willow_door", + "properties": { + "half": "lower" + } + } + ], + "name": "biomesoplenty:willow_door" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_fence.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_fence.json new file mode 100644 index 0000000000..af03f22013 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_fence.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:willow_fence" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_fence_gate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_fence_gate.json new file mode 100644 index 0000000000..5917bfb1bc --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:willow_fence_gate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_leaves.json new file mode 100644 index 0000000000..da7aa751bc --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_leaves.json @@ -0,0 +1,128 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:willow_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:willow_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_log.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_log.json new file mode 100644 index 0000000000..01cd0894e7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:willow_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_planks.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_planks.json new file mode 100644 index 0000000000..f8e393c208 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_planks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:willow_planks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_pressure_plate.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_pressure_plate.json new file mode 100644 index 0000000000..bbf1152108 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_pressure_plate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:willow_pressure_plate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_sapling.json new file mode 100644 index 0000000000..c4fb22b2e0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:willow_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_slab.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_slab.json new file mode 100644 index 0000000000..884a15808e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "biomesoplenty:willow_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "biomesoplenty:willow_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_stairs.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_stairs.json new file mode 100644 index 0000000000..33bc9129e7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:willow_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_trapdoor.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_trapdoor.json new file mode 100644 index 0000000000..b1311d8010 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_trapdoor.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:willow_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_vine.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_vine.json new file mode 100644 index 0000000000..69e83274e8 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_vine.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:willow_vine" + } + ], + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_wood.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_wood.json new file mode 100644 index 0000000000..a0a831ce8f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:willow_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/wilted_lily.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/wilted_lily.json new file mode 100644 index 0000000000..3477168ad1 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/wilted_lily.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:wilted_lily" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/yellow_autumn_leaves.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/yellow_autumn_leaves.json new file mode 100644 index 0000000000..9a115be7c2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/yellow_autumn_leaves.json @@ -0,0 +1,182 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "biomesoplenty:yellow_autumn_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "biomesoplenty:yellow_autumn_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.005, + 0.0055555557, + 0.00625, + 0.008333334, + 0.025 + ] + } + ], + "name": "minecraft:apple" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/loot_tables/blocks/yellow_autumn_sapling.json b/src/main/resources/data/biomesoplenty/loot_tables/blocks/yellow_autumn_sapling.json new file mode 100644 index 0000000000..4849fc89e8 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/loot_tables/blocks/yellow_autumn_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "biomesoplenty:yellow_autumn_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/acacia_sign_from_palm_planks.json b/src/main/resources/data/biomesoplenty/recipes/acacia_sign_from_palm_planks.json new file mode 100644 index 0000000000..576b6ca59d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/acacia_sign_from_palm_planks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + " X " + ], + "key": { + "#": { + "item": "biomesoplenty:palm_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "minecraft:acacia_sign", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/acacia_sign_from_redwood_planks.json b/src/main/resources/data/biomesoplenty/recipes/acacia_sign_from_redwood_planks.json new file mode 100644 index 0000000000..00083f5373 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/acacia_sign_from_redwood_planks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + " X " + ], + "key": { + "#": { + "item": "biomesoplenty:redwood_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "minecraft:acacia_sign", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/birch_sign_from_magic_planks.json b/src/main/resources/data/biomesoplenty/recipes/birch_sign_from_magic_planks.json new file mode 100644 index 0000000000..71d9a3afd9 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/birch_sign_from_magic_planks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + " X " + ], + "key": { + "#": { + "item": "biomesoplenty:magic_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "minecraft:birch_sign", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/black_sandstone.json b/src/main/resources/data/biomesoplenty/recipes/black_sandstone.json new file mode 100644 index 0000000000..6f7c98bdce --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/black_sandstone.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:black_sand" + } + }, + "result": { + "item": "biomesoplenty:black_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/black_sandstone_slab.json b/src/main/resources/data/biomesoplenty/recipes/black_sandstone_slab.json new file mode 100644 index 0000000000..db7741b7d7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/black_sandstone_slab.json @@ -0,0 +1,23 @@ +{ + "type": "crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "biomesoplenty:black_sandstone" + }, + { + "item": "biomesoplenty:chiseled_black_sandstone" + }, + { + "item": "biomesoplenty:cut_black_sandstone" + } + ] + }, + "result": { + "item": "biomesoplenty:black_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/black_sandstone_slab_from_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/black_sandstone_slab_from_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..b7e0514b44 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/black_sandstone_slab_from_black_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:black_sandstone" + }, + "result": "biomesoplenty:black_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/black_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/recipes/black_sandstone_stairs.json new file mode 100644 index 0000000000..e23854aecc --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/black_sandstone_stairs.json @@ -0,0 +1,25 @@ +{ + "type": "crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "biomesoplenty:black_sandstone" + }, + { + "item": "biomesoplenty:chiseled_black_sandstone" + }, + { + "item": "biomesoplenty:cut_black_sandstone" + } + ] + }, + "result": { + "item": "biomesoplenty:black_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/black_sandstone_stairs_from_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/black_sandstone_stairs_from_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..7e55b3677e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/black_sandstone_stairs_from_black_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:black_sandstone" + }, + "result": "biomesoplenty:black_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/black_sandstone_wall.json b/src/main/resources/data/biomesoplenty/recipes/black_sandstone_wall.json new file mode 100644 index 0000000000..791eaa9b2d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/black_sandstone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:black_sandstone" + } + }, + "result": { + "item": "biomesoplenty:black_sandstone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/black_sandstone_wall_from_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/black_sandstone_wall_from_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..1ecd203b6d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/black_sandstone_wall_from_black_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:black_sandstone" + }, + "result": "biomesoplenty:black_sandstone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cherry_boat.json b/src/main/resources/data/biomesoplenty/recipes/cherry_boat.json new file mode 100644 index 0000000000..e274a660e6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cherry_boat.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:cherry_planks" + } + }, + "result": { + "item": "biomesoplenty:cherry_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cherry_button.json b/src/main/resources/data/biomesoplenty/recipes/cherry_button.json new file mode 100644 index 0000000000..7807beebae --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cherry_button.json @@ -0,0 +1,12 @@ +{ + "type": "crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "biomesoplenty:cherry_planks" + } + ], + "result": { + "item": "biomesoplenty:cherry_button" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cherry_door.json b/src/main/resources/data/biomesoplenty/recipes/cherry_door.json new file mode 100644 index 0000000000..7230cea3c2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cherry_door.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_door", + "pattern": [ + "##", + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:cherry_planks" + } + }, + "result": { + "item": "biomesoplenty:cherry_door", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cherry_fence.json b/src/main/resources/data/biomesoplenty/recipes/cherry_fence.json new file mode 100644 index 0000000000..afb77519e5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cherry_fence.json @@ -0,0 +1,20 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence", + "pattern": [ + "W#W", + "W#W" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:cherry_planks" + } + }, + "result": { + "item": "biomesoplenty:cherry_fence", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cherry_fence_gate.json b/src/main/resources/data/biomesoplenty/recipes/cherry_fence_gate.json new file mode 100644 index 0000000000..48c17f9a1d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cherry_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence_gate", + "pattern": [ + "#W#", + "#W#" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:cherry_planks" + } + }, + "result": { + "item": "biomesoplenty:cherry_fence_gate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cherry_planks.json b/src/main/resources/data/biomesoplenty/recipes/cherry_planks.json new file mode 100644 index 0000000000..a183418363 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cherry_planks.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "biomesoplenty:cherry_logs" + } + ], + "result": { + "item": "biomesoplenty:cherry_planks", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cherry_pressure_plate.json b/src/main/resources/data/biomesoplenty/recipes/cherry_pressure_plate.json new file mode 100644 index 0000000000..82cc2e4178 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cherry_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "group": "wooden_pressure_plate", + "pattern": [ + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:cherry_planks" + } + }, + "result": { + "item": "biomesoplenty:cherry_pressure_plate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cherry_slab.json b/src/main/resources/data/biomesoplenty/recipes/cherry_slab.json new file mode 100644 index 0000000000..c736149415 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cherry_slab.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "wooden_slab", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:cherry_planks" + } + }, + "result": { + "item": "biomesoplenty:cherry_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cherry_stairs.json b/src/main/resources/data/biomesoplenty/recipes/cherry_stairs.json new file mode 100644 index 0000000000..3296213b88 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cherry_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_stairs", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:cherry_planks" + } + }, + "result": { + "item": "biomesoplenty:cherry_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cherry_trapdoor.json b/src/main/resources/data/biomesoplenty/recipes/cherry_trapdoor.json new file mode 100644 index 0000000000..9a529cf7e3 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cherry_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "wooden_trapdoor", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:cherry_planks" + } + }, + "result": { + "item": "biomesoplenty:cherry_trapdoor", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cherry_wood.json b/src/main/resources/data/biomesoplenty/recipes/cherry_wood.json new file mode 100644 index 0000000000..bf874e5e49 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cherry_wood.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:cherry_log" + } + }, + "result": { + "item": "biomesoplenty:cherry_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/chiseled_black_sandstone.json b/src/main/resources/data/biomesoplenty/recipes/chiseled_black_sandstone.json new file mode 100644 index 0000000000..852683fd7e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/chiseled_black_sandstone.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "pattern": [ + "#", + "#" + ], + "key": { + "#": { + "item": "biomesoplenty:black_sandstone_slab" + } + }, + "result": { + "item": "biomesoplenty:chiseled_black_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/chiseled_black_sandstone_from_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/chiseled_black_sandstone_from_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..84ff9f5b4b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/chiseled_black_sandstone_from_black_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:black_sandstone" + }, + "result": "biomesoplenty:chiseled_black_sandstone", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/chiseled_orange_sandstone.json b/src/main/resources/data/biomesoplenty/recipes/chiseled_orange_sandstone.json new file mode 100644 index 0000000000..97a661d82c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/chiseled_orange_sandstone.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "pattern": [ + "#", + "#" + ], + "key": { + "#": { + "item": "biomesoplenty:orange_sandstone_slab" + } + }, + "result": { + "item": "biomesoplenty:chiseled_orange_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/chiseled_orange_sandstone_from_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/chiseled_orange_sandstone_from_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..e5b3994213 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/chiseled_orange_sandstone_from_orange_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:orange_sandstone" + }, + "result": "biomesoplenty:chiseled_orange_sandstone", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/chiseled_white_sandstone.json b/src/main/resources/data/biomesoplenty/recipes/chiseled_white_sandstone.json new file mode 100644 index 0000000000..4f439800da --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/chiseled_white_sandstone.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "pattern": [ + "#", + "#" + ], + "key": { + "#": { + "item": "biomesoplenty:white_sandstone_slab" + } + }, + "result": { + "item": "biomesoplenty:chiseled_white_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/chiseled_white_sandstone_from_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/chiseled_white_sandstone_from_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..e6d42f7903 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/chiseled_white_sandstone_from_white_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:white_sandstone" + }, + "result": "biomesoplenty:chiseled_white_sandstone", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone.json b/src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone.json new file mode 100644 index 0000000000..40e2735ec9 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:black_sandstone" + } + }, + "result": { + "item": "biomesoplenty:cut_black_sandstone", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone_from_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone_from_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..cef764a33e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone_from_black_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:black_sandstone" + }, + "result": "biomesoplenty:cut_black_sandstone", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone_slab.json b/src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone_slab.json new file mode 100644 index 0000000000..ae30f59bf8 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:cut_black_sandstone" + } + }, + "result": { + "item": "biomesoplenty:cut_black_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone_slab_from_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone_slab_from_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..e9382551e7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone_slab_from_black_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:black_sandstone" + }, + "result": "biomesoplenty:cut_black_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone_slab_from_cut_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone_slab_from_cut_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..0aecb384a2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone_slab_from_cut_black_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:cut_black_sandstone" + }, + "result": "biomesoplenty:cut_black_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone.json b/src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone.json new file mode 100644 index 0000000000..bfc4f17154 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:orange_sandstone" + } + }, + "result": { + "item": "biomesoplenty:cut_orange_sandstone", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone_from_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone_from_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..c375da47f9 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone_from_orange_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:orange_sandstone" + }, + "result": "biomesoplenty:cut_orange_sandstone", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone_slab.json b/src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone_slab.json new file mode 100644 index 0000000000..2c1d591835 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:cut_orange_sandstone" + } + }, + "result": { + "item": "biomesoplenty:cut_orange_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone_slab_from_cut_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone_slab_from_cut_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..b9d6f9f595 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone_slab_from_cut_orange_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:cut_orange_sandstone" + }, + "result": "biomesoplenty:cut_orange_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone_slab_from_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone_slab_from_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..530822b5f6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone_slab_from_orange_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:orange_sandstone" + }, + "result": "biomesoplenty:cut_orange_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone.json b/src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone.json new file mode 100644 index 0000000000..93c159879b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:white_sandstone" + } + }, + "result": { + "item": "biomesoplenty:cut_white_sandstone", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone_from_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone_from_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..520a925dd5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone_from_white_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:white_sandstone" + }, + "result": "biomesoplenty:cut_white_sandstone", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone_slab.json b/src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone_slab.json new file mode 100644 index 0000000000..568c317dbb --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:cut_white_sandstone" + } + }, + "result": { + "item": "biomesoplenty:cut_white_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone_slab_from_cut_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone_slab_from_cut_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..1813e188b0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone_slab_from_cut_white_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:cut_white_sandstone" + }, + "result": "biomesoplenty:cut_white_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone_slab_from_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone_slab_from_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..87b444c9c0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone_slab_from_white_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:white_sandstone" + }, + "result": "biomesoplenty:cut_white_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/cyan_dye_from_glowflower.json b/src/main/resources/data/biomesoplenty/recipes/cyan_dye_from_glowflower.json new file mode 100644 index 0000000000..a4d61f9cf7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/cyan_dye_from_glowflower.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "cyan_dye", + "ingredients": [ + { + "item": "biomesoplenty:glowflower" + } + ], + "result": { + "item": "minecraft:cyan_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/dark_oak_sign_from_hellbark_planks.json b/src/main/resources/data/biomesoplenty/recipes/dark_oak_sign_from_hellbark_planks.json new file mode 100644 index 0000000000..f1f1fd6544 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/dark_oak_sign_from_hellbark_planks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + " X " + ], + "key": { + "#": { + "item": "biomesoplenty:hellbark_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "minecraft:dark_oak_sign", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/dark_oak_sign_from_umbran_planks.json b/src/main/resources/data/biomesoplenty/recipes/dark_oak_sign_from_umbran_planks.json new file mode 100644 index 0000000000..6a8c59a088 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/dark_oak_sign_from_umbran_planks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + " X " + ], + "key": { + "#": { + "item": "biomesoplenty:umbran_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "minecraft:dark_oak_sign", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/dead_boat.json b/src/main/resources/data/biomesoplenty/recipes/dead_boat.json new file mode 100644 index 0000000000..75cf52cb59 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/dead_boat.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:dead_planks" + } + }, + "result": { + "item": "biomesoplenty:dead_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/dead_button.json b/src/main/resources/data/biomesoplenty/recipes/dead_button.json new file mode 100644 index 0000000000..ebc49a09bd --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/dead_button.json @@ -0,0 +1,12 @@ +{ + "type": "crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "biomesoplenty:dead_planks" + } + ], + "result": { + "item": "biomesoplenty:dead_button" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/dead_door.json b/src/main/resources/data/biomesoplenty/recipes/dead_door.json new file mode 100644 index 0000000000..423d083598 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/dead_door.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_door", + "pattern": [ + "##", + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:dead_planks" + } + }, + "result": { + "item": "biomesoplenty:dead_door", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/dead_fence.json b/src/main/resources/data/biomesoplenty/recipes/dead_fence.json new file mode 100644 index 0000000000..980910b92b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/dead_fence.json @@ -0,0 +1,20 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence", + "pattern": [ + "W#W", + "W#W" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:dead_planks" + } + }, + "result": { + "item": "biomesoplenty:dead_fence", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/dead_fence_gate.json b/src/main/resources/data/biomesoplenty/recipes/dead_fence_gate.json new file mode 100644 index 0000000000..424eff36be --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/dead_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence_gate", + "pattern": [ + "#W#", + "#W#" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:dead_planks" + } + }, + "result": { + "item": "biomesoplenty:dead_fence_gate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/dead_planks.json b/src/main/resources/data/biomesoplenty/recipes/dead_planks.json new file mode 100644 index 0000000000..80336a4697 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/dead_planks.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "biomesoplenty:dead_logs" + } + ], + "result": { + "item": "biomesoplenty:dead_planks", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/dead_pressure_plate.json b/src/main/resources/data/biomesoplenty/recipes/dead_pressure_plate.json new file mode 100644 index 0000000000..0d63e4962d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/dead_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "group": "wooden_pressure_plate", + "pattern": [ + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:dead_planks" + } + }, + "result": { + "item": "biomesoplenty:dead_pressure_plate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/dead_slab.json b/src/main/resources/data/biomesoplenty/recipes/dead_slab.json new file mode 100644 index 0000000000..f982035f2d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/dead_slab.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "wooden_slab", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:dead_planks" + } + }, + "result": { + "item": "biomesoplenty:dead_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/dead_stairs.json b/src/main/resources/data/biomesoplenty/recipes/dead_stairs.json new file mode 100644 index 0000000000..c7240f5279 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/dead_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_stairs", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:dead_planks" + } + }, + "result": { + "item": "biomesoplenty:dead_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/dead_trapdoor.json b/src/main/resources/data/biomesoplenty/recipes/dead_trapdoor.json new file mode 100644 index 0000000000..ad370111ff --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/dead_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "wooden_trapdoor", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:dead_planks" + } + }, + "result": { + "item": "biomesoplenty:dead_trapdoor", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/dead_wood.json b/src/main/resources/data/biomesoplenty/recipes/dead_wood.json new file mode 100644 index 0000000000..99617e32e0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/dead_wood.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:dead_log" + } + }, + "result": { + "item": "biomesoplenty:dead_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/fir_boat.json b/src/main/resources/data/biomesoplenty/recipes/fir_boat.json new file mode 100644 index 0000000000..8761b533f9 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/fir_boat.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:fir_planks" + } + }, + "result": { + "item": "biomesoplenty:fir_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/fir_button.json b/src/main/resources/data/biomesoplenty/recipes/fir_button.json new file mode 100644 index 0000000000..29f644d248 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/fir_button.json @@ -0,0 +1,12 @@ +{ + "type": "crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "biomesoplenty:fir_planks" + } + ], + "result": { + "item": "biomesoplenty:fir_button" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/fir_door.json b/src/main/resources/data/biomesoplenty/recipes/fir_door.json new file mode 100644 index 0000000000..ee3eb107e2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/fir_door.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_door", + "pattern": [ + "##", + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:fir_planks" + } + }, + "result": { + "item": "biomesoplenty:fir_door", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/fir_fence.json b/src/main/resources/data/biomesoplenty/recipes/fir_fence.json new file mode 100644 index 0000000000..da3161139a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/fir_fence.json @@ -0,0 +1,20 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence", + "pattern": [ + "W#W", + "W#W" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:fir_planks" + } + }, + "result": { + "item": "biomesoplenty:fir_fence", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/fir_fence_gate.json b/src/main/resources/data/biomesoplenty/recipes/fir_fence_gate.json new file mode 100644 index 0000000000..d3e0535511 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/fir_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence_gate", + "pattern": [ + "#W#", + "#W#" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:fir_planks" + } + }, + "result": { + "item": "biomesoplenty:fir_fence_gate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/fir_planks.json b/src/main/resources/data/biomesoplenty/recipes/fir_planks.json new file mode 100644 index 0000000000..526c1fe060 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/fir_planks.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "biomesoplenty:fir_logs" + } + ], + "result": { + "item": "biomesoplenty:fir_planks", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/fir_pressure_plate.json b/src/main/resources/data/biomesoplenty/recipes/fir_pressure_plate.json new file mode 100644 index 0000000000..e108f3cf9b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/fir_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "group": "wooden_pressure_plate", + "pattern": [ + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:fir_planks" + } + }, + "result": { + "item": "biomesoplenty:fir_pressure_plate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/fir_slab.json b/src/main/resources/data/biomesoplenty/recipes/fir_slab.json new file mode 100644 index 0000000000..5aff3cffc5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/fir_slab.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "wooden_slab", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:fir_planks" + } + }, + "result": { + "item": "biomesoplenty:fir_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/fir_stairs.json b/src/main/resources/data/biomesoplenty/recipes/fir_stairs.json new file mode 100644 index 0000000000..843b9b2e06 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/fir_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_stairs", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:fir_planks" + } + }, + "result": { + "item": "biomesoplenty:fir_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/fir_trapdoor.json b/src/main/resources/data/biomesoplenty/recipes/fir_trapdoor.json new file mode 100644 index 0000000000..c7d1cba5ee --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/fir_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "wooden_trapdoor", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:fir_planks" + } + }, + "result": { + "item": "biomesoplenty:fir_trapdoor", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/fir_wood.json b/src/main/resources/data/biomesoplenty/recipes/fir_wood.json new file mode 100644 index 0000000000..b0735c9e6c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/fir_wood.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:fir_log" + } + }, + "result": { + "item": "biomesoplenty:fir_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/gray_dye_from_wilted_lily.json b/src/main/resources/data/biomesoplenty/recipes/gray_dye_from_wilted_lily.json new file mode 100644 index 0000000000..a7d21d1576 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/gray_dye_from_wilted_lily.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "gray_dye", + "ingredients": [ + { + "item": "biomesoplenty:wilted_lily" + } + ], + "result": { + "item": "minecraft:gray_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/hellbark_boat.json b/src/main/resources/data/biomesoplenty/recipes/hellbark_boat.json new file mode 100644 index 0000000000..3583e31267 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/hellbark_boat.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:hellbark_planks" + } + }, + "result": { + "item": "biomesoplenty:hellbark_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/hellbark_button.json b/src/main/resources/data/biomesoplenty/recipes/hellbark_button.json new file mode 100644 index 0000000000..e20c8e5b33 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/hellbark_button.json @@ -0,0 +1,12 @@ +{ + "type": "crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "biomesoplenty:hellbark_planks" + } + ], + "result": { + "item": "biomesoplenty:hellbark_button" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/hellbark_door.json b/src/main/resources/data/biomesoplenty/recipes/hellbark_door.json new file mode 100644 index 0000000000..7350d2abe6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/hellbark_door.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_door", + "pattern": [ + "##", + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:hellbark_planks" + } + }, + "result": { + "item": "biomesoplenty:hellbark_door", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/hellbark_fence.json b/src/main/resources/data/biomesoplenty/recipes/hellbark_fence.json new file mode 100644 index 0000000000..bfd621539d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/hellbark_fence.json @@ -0,0 +1,20 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence", + "pattern": [ + "W#W", + "W#W" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:hellbark_planks" + } + }, + "result": { + "item": "biomesoplenty:hellbark_fence", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/hellbark_fence_gate.json b/src/main/resources/data/biomesoplenty/recipes/hellbark_fence_gate.json new file mode 100644 index 0000000000..dc79e8243d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/hellbark_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence_gate", + "pattern": [ + "#W#", + "#W#" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:hellbark_planks" + } + }, + "result": { + "item": "biomesoplenty:hellbark_fence_gate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/hellbark_planks.json b/src/main/resources/data/biomesoplenty/recipes/hellbark_planks.json new file mode 100644 index 0000000000..359c03d28d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/hellbark_planks.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "biomesoplenty:hellbark_logs" + } + ], + "result": { + "item": "biomesoplenty:hellbark_planks", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/hellbark_pressure_plate.json b/src/main/resources/data/biomesoplenty/recipes/hellbark_pressure_plate.json new file mode 100644 index 0000000000..a742a1f208 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/hellbark_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "group": "wooden_pressure_plate", + "pattern": [ + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:hellbark_planks" + } + }, + "result": { + "item": "biomesoplenty:hellbark_pressure_plate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/hellbark_slab.json b/src/main/resources/data/biomesoplenty/recipes/hellbark_slab.json new file mode 100644 index 0000000000..ea872bbf65 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/hellbark_slab.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "wooden_slab", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:hellbark_planks" + } + }, + "result": { + "item": "biomesoplenty:hellbark_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/hellbark_stairs.json b/src/main/resources/data/biomesoplenty/recipes/hellbark_stairs.json new file mode 100644 index 0000000000..5719e9d195 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/hellbark_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_stairs", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:hellbark_planks" + } + }, + "result": { + "item": "biomesoplenty:hellbark_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/hellbark_trapdoor.json b/src/main/resources/data/biomesoplenty/recipes/hellbark_trapdoor.json new file mode 100644 index 0000000000..a9927f013c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/hellbark_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "wooden_trapdoor", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:hellbark_planks" + } + }, + "result": { + "item": "biomesoplenty:hellbark_trapdoor", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/hellbark_wood.json b/src/main/resources/data/biomesoplenty/recipes/hellbark_wood.json new file mode 100644 index 0000000000..4b056a76bd --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/hellbark_wood.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:hellbark_log" + } + }, + "result": { + "item": "biomesoplenty:hellbark_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/jacaranda_boat.json b/src/main/resources/data/biomesoplenty/recipes/jacaranda_boat.json new file mode 100644 index 0000000000..c53f48acc0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/jacaranda_boat.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:jacaranda_planks" + } + }, + "result": { + "item": "biomesoplenty:jacaranda_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/jacaranda_button.json b/src/main/resources/data/biomesoplenty/recipes/jacaranda_button.json new file mode 100644 index 0000000000..99d355aa19 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/jacaranda_button.json @@ -0,0 +1,12 @@ +{ + "type": "crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "biomesoplenty:jacaranda_planks" + } + ], + "result": { + "item": "biomesoplenty:jacaranda_button" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/jacaranda_door.json b/src/main/resources/data/biomesoplenty/recipes/jacaranda_door.json new file mode 100644 index 0000000000..4aa4173a9c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/jacaranda_door.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_door", + "pattern": [ + "##", + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:jacaranda_planks" + } + }, + "result": { + "item": "biomesoplenty:jacaranda_door", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/jacaranda_fence.json b/src/main/resources/data/biomesoplenty/recipes/jacaranda_fence.json new file mode 100644 index 0000000000..214a7c7bc3 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/jacaranda_fence.json @@ -0,0 +1,20 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence", + "pattern": [ + "W#W", + "W#W" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:jacaranda_planks" + } + }, + "result": { + "item": "biomesoplenty:jacaranda_fence", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/jacaranda_fence_gate.json b/src/main/resources/data/biomesoplenty/recipes/jacaranda_fence_gate.json new file mode 100644 index 0000000000..7dec3564cf --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/jacaranda_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence_gate", + "pattern": [ + "#W#", + "#W#" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:jacaranda_planks" + } + }, + "result": { + "item": "biomesoplenty:jacaranda_fence_gate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/jacaranda_planks.json b/src/main/resources/data/biomesoplenty/recipes/jacaranda_planks.json new file mode 100644 index 0000000000..4c821d763c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/jacaranda_planks.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "biomesoplenty:jacaranda_logs" + } + ], + "result": { + "item": "biomesoplenty:jacaranda_planks", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/jacaranda_pressure_plate.json b/src/main/resources/data/biomesoplenty/recipes/jacaranda_pressure_plate.json new file mode 100644 index 0000000000..10be0729ea --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/jacaranda_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "group": "wooden_pressure_plate", + "pattern": [ + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:jacaranda_planks" + } + }, + "result": { + "item": "biomesoplenty:jacaranda_pressure_plate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/jacaranda_slab.json b/src/main/resources/data/biomesoplenty/recipes/jacaranda_slab.json new file mode 100644 index 0000000000..c55ff123e0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/jacaranda_slab.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "wooden_slab", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:jacaranda_planks" + } + }, + "result": { + "item": "biomesoplenty:jacaranda_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/jacaranda_stairs.json b/src/main/resources/data/biomesoplenty/recipes/jacaranda_stairs.json new file mode 100644 index 0000000000..b584e5063d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/jacaranda_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_stairs", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:jacaranda_planks" + } + }, + "result": { + "item": "biomesoplenty:jacaranda_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/jacaranda_trapdoor.json b/src/main/resources/data/biomesoplenty/recipes/jacaranda_trapdoor.json new file mode 100644 index 0000000000..6c67eeb0b2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/jacaranda_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "wooden_trapdoor", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:jacaranda_planks" + } + }, + "result": { + "item": "biomesoplenty:jacaranda_trapdoor", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/jacaranda_wood.json b/src/main/resources/data/biomesoplenty/recipes/jacaranda_wood.json new file mode 100644 index 0000000000..79eb3b030a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/jacaranda_wood.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:jacaranda_log" + } + }, + "result": { + "item": "biomesoplenty:jacaranda_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/jungle_sign_from_cherry_planks.json b/src/main/resources/data/biomesoplenty/recipes/jungle_sign_from_cherry_planks.json new file mode 100644 index 0000000000..b48234dc56 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/jungle_sign_from_cherry_planks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + " X " + ], + "key": { + "#": { + "item": "biomesoplenty:cherry_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "minecraft:jungle_sign", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/jungle_sign_from_jacaranda_planks.json b/src/main/resources/data/biomesoplenty/recipes/jungle_sign_from_jacaranda_planks.json new file mode 100644 index 0000000000..06f0e7b1eb --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/jungle_sign_from_jacaranda_planks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + " X " + ], + "key": { + "#": { + "item": "biomesoplenty:jacaranda_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "minecraft:jungle_sign", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/jungle_sign_from_mahogany_planks.json b/src/main/resources/data/biomesoplenty/recipes/jungle_sign_from_mahogany_planks.json new file mode 100644 index 0000000000..ee36985376 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/jungle_sign_from_mahogany_planks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + " X " + ], + "key": { + "#": { + "item": "biomesoplenty:mahogany_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "minecraft:jungle_sign", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/light_blue_dye_from_blue_hydrangea.json b/src/main/resources/data/biomesoplenty/recipes/light_blue_dye_from_blue_hydrangea.json new file mode 100644 index 0000000000..1df6ac2e71 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/light_blue_dye_from_blue_hydrangea.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "light_blue_dye", + "ingredients": [ + { + "item": "biomesoplenty:blue_hydrangea" + } + ], + "result": { + "item": "minecraft:light_blue_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/magenta_dye_from_wildflower.json b/src/main/resources/data/biomesoplenty/recipes/magenta_dye_from_wildflower.json new file mode 100644 index 0000000000..d041a048e5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/magenta_dye_from_wildflower.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "magenta_dye", + "ingredients": [ + { + "item": "biomesoplenty:wildflower" + } + ], + "result": { + "item": "minecraft:magenta_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/magic_boat.json b/src/main/resources/data/biomesoplenty/recipes/magic_boat.json new file mode 100644 index 0000000000..d0d5dc1978 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/magic_boat.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:magic_planks" + } + }, + "result": { + "item": "biomesoplenty:magic_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/magic_button.json b/src/main/resources/data/biomesoplenty/recipes/magic_button.json new file mode 100644 index 0000000000..1564192ef4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/magic_button.json @@ -0,0 +1,12 @@ +{ + "type": "crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "biomesoplenty:magic_planks" + } + ], + "result": { + "item": "biomesoplenty:magic_button" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/magic_door.json b/src/main/resources/data/biomesoplenty/recipes/magic_door.json new file mode 100644 index 0000000000..1b59e00508 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/magic_door.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_door", + "pattern": [ + "##", + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:magic_planks" + } + }, + "result": { + "item": "biomesoplenty:magic_door", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/magic_fence.json b/src/main/resources/data/biomesoplenty/recipes/magic_fence.json new file mode 100644 index 0000000000..d45dc70554 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/magic_fence.json @@ -0,0 +1,20 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence", + "pattern": [ + "W#W", + "W#W" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:magic_planks" + } + }, + "result": { + "item": "biomesoplenty:magic_fence", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/magic_fence_gate.json b/src/main/resources/data/biomesoplenty/recipes/magic_fence_gate.json new file mode 100644 index 0000000000..e8fe660f77 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/magic_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence_gate", + "pattern": [ + "#W#", + "#W#" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:magic_planks" + } + }, + "result": { + "item": "biomesoplenty:magic_fence_gate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/magic_planks.json b/src/main/resources/data/biomesoplenty/recipes/magic_planks.json new file mode 100644 index 0000000000..3a585e3c2b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/magic_planks.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "biomesoplenty:magic_logs" + } + ], + "result": { + "item": "biomesoplenty:magic_planks", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/magic_pressure_plate.json b/src/main/resources/data/biomesoplenty/recipes/magic_pressure_plate.json new file mode 100644 index 0000000000..6a4fdd6539 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/magic_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "group": "wooden_pressure_plate", + "pattern": [ + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:magic_planks" + } + }, + "result": { + "item": "biomesoplenty:magic_pressure_plate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/magic_slab.json b/src/main/resources/data/biomesoplenty/recipes/magic_slab.json new file mode 100644 index 0000000000..e248818884 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/magic_slab.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "wooden_slab", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:magic_planks" + } + }, + "result": { + "item": "biomesoplenty:magic_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/magic_stairs.json b/src/main/resources/data/biomesoplenty/recipes/magic_stairs.json new file mode 100644 index 0000000000..2294dc7a6b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/magic_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_stairs", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:magic_planks" + } + }, + "result": { + "item": "biomesoplenty:magic_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/magic_trapdoor.json b/src/main/resources/data/biomesoplenty/recipes/magic_trapdoor.json new file mode 100644 index 0000000000..6f0f23412b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/magic_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "wooden_trapdoor", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:magic_planks" + } + }, + "result": { + "item": "biomesoplenty:magic_trapdoor", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/magic_wood.json b/src/main/resources/data/biomesoplenty/recipes/magic_wood.json new file mode 100644 index 0000000000..1889d3cf69 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/magic_wood.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:magic_log" + } + }, + "result": { + "item": "biomesoplenty:magic_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mahogany_boat.json b/src/main/resources/data/biomesoplenty/recipes/mahogany_boat.json new file mode 100644 index 0000000000..0b81998aa4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mahogany_boat.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:mahogany_planks" + } + }, + "result": { + "item": "biomesoplenty:mahogany_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mahogany_button.json b/src/main/resources/data/biomesoplenty/recipes/mahogany_button.json new file mode 100644 index 0000000000..7e98d3c92e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mahogany_button.json @@ -0,0 +1,12 @@ +{ + "type": "crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "biomesoplenty:mahogany_planks" + } + ], + "result": { + "item": "biomesoplenty:mahogany_button" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mahogany_door.json b/src/main/resources/data/biomesoplenty/recipes/mahogany_door.json new file mode 100644 index 0000000000..12c279272c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mahogany_door.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_door", + "pattern": [ + "##", + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:mahogany_planks" + } + }, + "result": { + "item": "biomesoplenty:mahogany_door", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mahogany_fence.json b/src/main/resources/data/biomesoplenty/recipes/mahogany_fence.json new file mode 100644 index 0000000000..6744f332f3 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mahogany_fence.json @@ -0,0 +1,20 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence", + "pattern": [ + "W#W", + "W#W" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:mahogany_planks" + } + }, + "result": { + "item": "biomesoplenty:mahogany_fence", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mahogany_fence_gate.json b/src/main/resources/data/biomesoplenty/recipes/mahogany_fence_gate.json new file mode 100644 index 0000000000..d078f38588 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mahogany_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence_gate", + "pattern": [ + "#W#", + "#W#" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:mahogany_planks" + } + }, + "result": { + "item": "biomesoplenty:mahogany_fence_gate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mahogany_planks.json b/src/main/resources/data/biomesoplenty/recipes/mahogany_planks.json new file mode 100644 index 0000000000..0b59ec441c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mahogany_planks.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "biomesoplenty:mahogany_logs" + } + ], + "result": { + "item": "biomesoplenty:mahogany_planks", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mahogany_pressure_plate.json b/src/main/resources/data/biomesoplenty/recipes/mahogany_pressure_plate.json new file mode 100644 index 0000000000..4157daad20 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mahogany_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "group": "wooden_pressure_plate", + "pattern": [ + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:mahogany_planks" + } + }, + "result": { + "item": "biomesoplenty:mahogany_pressure_plate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mahogany_slab.json b/src/main/resources/data/biomesoplenty/recipes/mahogany_slab.json new file mode 100644 index 0000000000..18a665ff11 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mahogany_slab.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "wooden_slab", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:mahogany_planks" + } + }, + "result": { + "item": "biomesoplenty:mahogany_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mahogany_stairs.json b/src/main/resources/data/biomesoplenty/recipes/mahogany_stairs.json new file mode 100644 index 0000000000..dc081b1185 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mahogany_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_stairs", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:mahogany_planks" + } + }, + "result": { + "item": "biomesoplenty:mahogany_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mahogany_trapdoor.json b/src/main/resources/data/biomesoplenty/recipes/mahogany_trapdoor.json new file mode 100644 index 0000000000..951a53c59e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mahogany_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "wooden_trapdoor", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:mahogany_planks" + } + }, + "result": { + "item": "biomesoplenty:mahogany_trapdoor", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mahogany_wood.json b/src/main/resources/data/biomesoplenty/recipes/mahogany_wood.json new file mode 100644 index 0000000000..82557852c2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mahogany_wood.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:mahogany_log" + } + }, + "result": { + "item": "biomesoplenty:mahogany_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mossy_cobblestone_from_willow_vine.json b/src/main/resources/data/biomesoplenty/recipes/mossy_cobblestone_from_willow_vine.json new file mode 100644 index 0000000000..4c0b1aa2f7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mossy_cobblestone_from_willow_vine.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:cobblestone" + }, + { + "item": "biomesoplenty:willow_vine" + } + ], + "result": { + "item": "minecraft:mossy_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mossy_stone_bricks_from_willow_vine.json b/src/main/resources/data/biomesoplenty/recipes/mossy_stone_bricks_from_willow_vine.json new file mode 100644 index 0000000000..f7d30f0693 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mossy_stone_bricks_from_willow_vine.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:stone_bricks" + }, + { + "item": "biomesoplenty:willow_vine" + } + ], + "result": { + "item": "minecraft:mossy_stone_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mud.json b/src/main/resources/data/biomesoplenty/recipes/mud.json new file mode 100644 index 0000000000..b8700fd045 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mud.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:mud_ball" + } + }, + "result": { + "item": "biomesoplenty:mud" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mud_brick_from_smelting.json b/src/main/resources/data/biomesoplenty/recipes/mud_brick_from_smelting.json new file mode 100644 index 0000000000..38cdbd8883 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mud_brick_from_smelting.json @@ -0,0 +1,9 @@ +{ + "type": "smelting", + "ingredient": { + "item": "biomesoplenty:mud_ball" + }, + "result": "biomesoplenty:mud_brick", + "experience": 0.3, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mud_brick_slab.json b/src/main/resources/data/biomesoplenty/recipes/mud_brick_slab.json new file mode 100644 index 0000000000..9bee509080 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mud_brick_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:mud_bricks" + } + }, + "result": { + "item": "biomesoplenty:mud_brick_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mud_brick_stairs.json b/src/main/resources/data/biomesoplenty/recipes/mud_brick_stairs.json new file mode 100644 index 0000000000..996d402226 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mud_brick_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " #", + " ##", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:mud_bricks" + } + }, + "result": { + "item": "biomesoplenty:mud_brick_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mud_brick_wall.json b/src/main/resources/data/biomesoplenty/recipes/mud_brick_wall.json new file mode 100644 index 0000000000..c3b1a2d14a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mud_brick_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:mud_bricks" + } + }, + "result": { + "item": "biomesoplenty:mud_brick_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mud_brick_wall_from_mud_bricks_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/mud_brick_wall_from_mud_bricks_stonecutting.json new file mode 100644 index 0000000000..c3cbd478f7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mud_brick_wall_from_mud_bricks_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:mud_bricks" + }, + "result": "biomesoplenty:mud_brick_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/mud_bricks.json b/src/main/resources/data/biomesoplenty/recipes/mud_bricks.json new file mode 100644 index 0000000000..d28cca6763 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/mud_bricks.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:mud_brick" + } + }, + "result": { + "item": "biomesoplenty:mud_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/nether_crystal_block.json b/src/main/resources/data/biomesoplenty/recipes/nether_crystal_block.json new file mode 100644 index 0000000000..caef709a2c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/nether_crystal_block.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:nether_crystal" + } + }, + "result": { + "item": "biomesoplenty:nether_crystal_block" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/oak_sign_from_fir_planks.json b/src/main/resources/data/biomesoplenty/recipes/oak_sign_from_fir_planks.json new file mode 100644 index 0000000000..927b724293 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/oak_sign_from_fir_planks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + " X " + ], + "key": { + "#": { + "item": "biomesoplenty:fir_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "minecraft:oak_sign", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/oak_sign_from_willow_planks.json b/src/main/resources/data/biomesoplenty/recipes/oak_sign_from_willow_planks.json new file mode 100644 index 0000000000..f5b8df5fe2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/oak_sign_from_willow_planks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + " X " + ], + "key": { + "#": { + "item": "biomesoplenty:willow_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "minecraft:oak_sign", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/orange_dye_from_burning_blossom.json b/src/main/resources/data/biomesoplenty/recipes/orange_dye_from_burning_blossom.json new file mode 100644 index 0000000000..0ea92d4c7d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/orange_dye_from_burning_blossom.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "orange_dye", + "ingredients": [ + { + "item": "biomesoplenty:burning_blossom" + } + ], + "result": { + "item": "minecraft:orange_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/orange_dye_from_orange_cosmos.json b/src/main/resources/data/biomesoplenty/recipes/orange_dye_from_orange_cosmos.json new file mode 100644 index 0000000000..59ee3c1fdd --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/orange_dye_from_orange_cosmos.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "orange_dye", + "ingredients": [ + { + "item": "biomesoplenty:orange_cosmos" + } + ], + "result": { + "item": "minecraft:orange_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/orange_sandstone.json b/src/main/resources/data/biomesoplenty/recipes/orange_sandstone.json new file mode 100644 index 0000000000..ce178b29bd --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/orange_sandstone.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:orange_sand" + } + }, + "result": { + "item": "biomesoplenty:orange_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_orange_from_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_orange_from_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..0e0826373f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_orange_from_orange_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:orange_sandstone" + }, + "result": "biomesoplenty:orange_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_slab.json b/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_slab.json new file mode 100644 index 0000000000..230e3732da --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_slab.json @@ -0,0 +1,23 @@ +{ + "type": "crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "biomesoplenty:orange_sandstone" + }, + { + "item": "biomesoplenty:chiseled_orange_sandstone" + }, + { + "item": "biomesoplenty:cut_orange_sandstone" + } + ] + }, + "result": { + "item": "biomesoplenty:orange_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_stairs.json new file mode 100644 index 0000000000..9b3c6cc9ff --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_stairs.json @@ -0,0 +1,25 @@ +{ + "type": "crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "biomesoplenty:orange_sandstone" + }, + { + "item": "biomesoplenty:chiseled_orange_sandstone" + }, + { + "item": "biomesoplenty:cut_orange_sandstone" + } + ] + }, + "result": { + "item": "biomesoplenty:orange_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_stairs_from_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_stairs_from_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..301475a6b4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_stairs_from_orange_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:orange_sandstone" + }, + "result": "biomesoplenty:orange_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_wall.json b/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_wall.json new file mode 100644 index 0000000000..c344eafce2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:orange_sandstone" + } + }, + "result": { + "item": "biomesoplenty:orange_sandstone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_wall_from_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_wall_from_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..82ed717d4b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/orange_sandstone_wall_from_orange_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:orange_sandstone" + }, + "result": "biomesoplenty:orange_sandstone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/palm_boat.json b/src/main/resources/data/biomesoplenty/recipes/palm_boat.json new file mode 100644 index 0000000000..ffc64b7d44 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/palm_boat.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:palm_planks" + } + }, + "result": { + "item": "biomesoplenty:palm_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/palm_button.json b/src/main/resources/data/biomesoplenty/recipes/palm_button.json new file mode 100644 index 0000000000..e19265fa83 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/palm_button.json @@ -0,0 +1,12 @@ +{ + "type": "crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "biomesoplenty:palm_planks" + } + ], + "result": { + "item": "biomesoplenty:palm_button" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/palm_door.json b/src/main/resources/data/biomesoplenty/recipes/palm_door.json new file mode 100644 index 0000000000..f215bb3cb4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/palm_door.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_door", + "pattern": [ + "##", + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:palm_planks" + } + }, + "result": { + "item": "biomesoplenty:palm_door", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/palm_fence.json b/src/main/resources/data/biomesoplenty/recipes/palm_fence.json new file mode 100644 index 0000000000..b3ebb3d02b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/palm_fence.json @@ -0,0 +1,20 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence", + "pattern": [ + "W#W", + "W#W" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:palm_planks" + } + }, + "result": { + "item": "biomesoplenty:palm_fence", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/palm_fence_gate.json b/src/main/resources/data/biomesoplenty/recipes/palm_fence_gate.json new file mode 100644 index 0000000000..204ee66a02 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/palm_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence_gate", + "pattern": [ + "#W#", + "#W#" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:palm_planks" + } + }, + "result": { + "item": "biomesoplenty:palm_fence_gate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/palm_planks.json b/src/main/resources/data/biomesoplenty/recipes/palm_planks.json new file mode 100644 index 0000000000..794308d3bc --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/palm_planks.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "biomesoplenty:palm_logs" + } + ], + "result": { + "item": "biomesoplenty:palm_planks", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/palm_pressure_plate.json b/src/main/resources/data/biomesoplenty/recipes/palm_pressure_plate.json new file mode 100644 index 0000000000..501b144f59 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/palm_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "group": "wooden_pressure_plate", + "pattern": [ + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:palm_planks" + } + }, + "result": { + "item": "biomesoplenty:palm_pressure_plate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/palm_slab.json b/src/main/resources/data/biomesoplenty/recipes/palm_slab.json new file mode 100644 index 0000000000..dcb62b2ce1 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/palm_slab.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "wooden_slab", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:palm_planks" + } + }, + "result": { + "item": "biomesoplenty:palm_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/palm_stairs.json b/src/main/resources/data/biomesoplenty/recipes/palm_stairs.json new file mode 100644 index 0000000000..f9597381fa --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/palm_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_stairs", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:palm_planks" + } + }, + "result": { + "item": "biomesoplenty:palm_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/palm_trapdoor.json b/src/main/resources/data/biomesoplenty/recipes/palm_trapdoor.json new file mode 100644 index 0000000000..b2ca6a82e2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/palm_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "wooden_trapdoor", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:palm_planks" + } + }, + "result": { + "item": "biomesoplenty:palm_trapdoor", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/palm_wood.json b/src/main/resources/data/biomesoplenty/recipes/palm_wood.json new file mode 100644 index 0000000000..b9a190aef3 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/palm_wood.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:palm_log" + } + }, + "result": { + "item": "biomesoplenty:palm_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/pink_dye_from_pink_daffodil.json b/src/main/resources/data/biomesoplenty/recipes/pink_dye_from_pink_daffodil.json new file mode 100644 index 0000000000..b3fd92c0ff --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/pink_dye_from_pink_daffodil.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "pink_dye", + "ingredients": [ + { + "item": "biomesoplenty:pink_daffodil" + } + ], + "result": { + "item": "minecraft:pink_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/pink_dye_from_pink_hibiscus.json b/src/main/resources/data/biomesoplenty/recipes/pink_dye_from_pink_hibiscus.json new file mode 100644 index 0000000000..8c6b543f42 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/pink_dye_from_pink_hibiscus.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "pink_dye", + "ingredients": [ + { + "item": "biomesoplenty:pink_hibiscus" + } + ], + "result": { + "item": "minecraft:pink_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/purple_dye_from_lavender.json b/src/main/resources/data/biomesoplenty/recipes/purple_dye_from_lavender.json new file mode 100644 index 0000000000..84cb2cc165 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/purple_dye_from_lavender.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "purple_dye", + "ingredients": [ + { + "item": "biomesoplenty:lavender" + } + ], + "result": { + "item": "minecraft:purple_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/purple_dye_from_violet.json b/src/main/resources/data/biomesoplenty/recipes/purple_dye_from_violet.json new file mode 100644 index 0000000000..eec65905ef --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/purple_dye_from_violet.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "purple_dye", + "ingredients": [ + { + "item": "biomesoplenty:violet" + } + ], + "result": { + "item": "minecraft:purple_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/rabbit_stew_from_toadstool.json b/src/main/resources/data/biomesoplenty/recipes/rabbit_stew_from_toadstool.json new file mode 100644 index 0000000000..1508a116e2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/rabbit_stew_from_toadstool.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "rabbit_stew", + "ingredients": [ + { + "item": "minecraft:baked_potato" + }, + { + "item": "minecraft:cooked_rabbit" + }, + { + "item": "minecraft:bowl" + }, + { + "item": "minecraft:carrot" + }, + { + "item": "biomesoplenty:toadstool" + } + ], + "result": { + "item": "minecraft:rabbit_stew" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/red_dye_from_rose.json b/src/main/resources/data/biomesoplenty/recipes/red_dye_from_rose.json new file mode 100644 index 0000000000..3374bc5928 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/red_dye_from_rose.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "red_dye", + "ingredients": [ + { + "item": "biomesoplenty:rose" + } + ], + "result": { + "item": "minecraft:red_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/redwood_boat.json b/src/main/resources/data/biomesoplenty/recipes/redwood_boat.json new file mode 100644 index 0000000000..f0ebb42192 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/redwood_boat.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:redwood_planks" + } + }, + "result": { + "item": "biomesoplenty:redwood_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/redwood_button.json b/src/main/resources/data/biomesoplenty/recipes/redwood_button.json new file mode 100644 index 0000000000..0052ff899f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/redwood_button.json @@ -0,0 +1,12 @@ +{ + "type": "crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "biomesoplenty:redwood_planks" + } + ], + "result": { + "item": "biomesoplenty:redwood_button" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/redwood_door.json b/src/main/resources/data/biomesoplenty/recipes/redwood_door.json new file mode 100644 index 0000000000..c1910a9812 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/redwood_door.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_door", + "pattern": [ + "##", + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:redwood_planks" + } + }, + "result": { + "item": "biomesoplenty:redwood_door", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/redwood_fence.json b/src/main/resources/data/biomesoplenty/recipes/redwood_fence.json new file mode 100644 index 0000000000..3ff30a044d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/redwood_fence.json @@ -0,0 +1,20 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence", + "pattern": [ + "W#W", + "W#W" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:redwood_planks" + } + }, + "result": { + "item": "biomesoplenty:redwood_fence", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/redwood_fence_gate.json b/src/main/resources/data/biomesoplenty/recipes/redwood_fence_gate.json new file mode 100644 index 0000000000..38afe0c01b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/redwood_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence_gate", + "pattern": [ + "#W#", + "#W#" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:redwood_planks" + } + }, + "result": { + "item": "biomesoplenty:redwood_fence_gate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/redwood_planks.json b/src/main/resources/data/biomesoplenty/recipes/redwood_planks.json new file mode 100644 index 0000000000..eee001a95e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/redwood_planks.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "biomesoplenty:redwood_logs" + } + ], + "result": { + "item": "biomesoplenty:redwood_planks", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/redwood_pressure_plate.json b/src/main/resources/data/biomesoplenty/recipes/redwood_pressure_plate.json new file mode 100644 index 0000000000..65e97b0044 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/redwood_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "group": "wooden_pressure_plate", + "pattern": [ + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:redwood_planks" + } + }, + "result": { + "item": "biomesoplenty:redwood_pressure_plate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/redwood_slab.json b/src/main/resources/data/biomesoplenty/recipes/redwood_slab.json new file mode 100644 index 0000000000..e69a5a4c52 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/redwood_slab.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "wooden_slab", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:redwood_planks" + } + }, + "result": { + "item": "biomesoplenty:redwood_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/redwood_stairs.json b/src/main/resources/data/biomesoplenty/recipes/redwood_stairs.json new file mode 100644 index 0000000000..acd442f811 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/redwood_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_stairs", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:redwood_planks" + } + }, + "result": { + "item": "biomesoplenty:redwood_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/redwood_trapdoor.json b/src/main/resources/data/biomesoplenty/recipes/redwood_trapdoor.json new file mode 100644 index 0000000000..4f8ed66f39 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/redwood_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "wooden_trapdoor", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:redwood_planks" + } + }, + "result": { + "item": "biomesoplenty:redwood_trapdoor", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/redwood_wood.json b/src/main/resources/data/biomesoplenty/recipes/redwood_wood.json new file mode 100644 index 0000000000..6c6e4c5338 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/redwood_wood.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:redwood_log" + } + }, + "result": { + "item": "biomesoplenty:redwood_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone.json b/src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone.json new file mode 100644 index 0000000000..a04ed29bc1 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "biomesoplenty:black_sandstone" + }, + "result": "biomesoplenty:smooth_black_sandstone", + "experience": 0.1, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone_slab.json b/src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone_slab.json new file mode 100644 index 0000000000..4ecaa014e4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:smooth_black_sandstone" + } + }, + "result": { + "item": "biomesoplenty:smooth_black_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone_slab_from_smooth_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone_slab_from_smooth_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..cce45863ce --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone_slab_from_smooth_black_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:smooth_black_sandstone" + }, + "result": "biomesoplenty:smooth_black_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone_stairs.json new file mode 100644 index 0000000000..114eab4d3f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:smooth_black_sandstone" + } + }, + "result": { + "item": "biomesoplenty:smooth_black_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone_stairs_from_smooth_black_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone_stairs_from_smooth_black_sandstone_stonecutting.json new file mode 100644 index 0000000000..6c87242efd --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone_stairs_from_smooth_black_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:smooth_black_sandstone" + }, + "result": "biomesoplenty:smooth_black_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone.json b/src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone.json new file mode 100644 index 0000000000..708c75f3ec --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "biomesoplenty:orange_sandstone" + }, + "result": "biomesoplenty:smooth_orange_sandstone", + "experience": 0.1, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone_slab.json b/src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone_slab.json new file mode 100644 index 0000000000..e0fc86b07e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:smooth_orange_sandstone" + } + }, + "result": { + "item": "biomesoplenty:smooth_orange_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone_slab_from_smooth_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone_slab_from_smooth_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..ecee73d05e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone_slab_from_smooth_orange_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:smooth_orange_sandstone" + }, + "result": "biomesoplenty:smooth_orange_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone_stairs.json new file mode 100644 index 0000000000..9287026c68 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:smooth_orange_sandstone" + } + }, + "result": { + "item": "biomesoplenty:smooth_orange_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone_stairs_from_smooth_orange_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone_stairs_from_smooth_orange_sandstone_stonecutting.json new file mode 100644 index 0000000000..694f9bec07 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone_stairs_from_smooth_orange_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:smooth_orange_sandstone" + }, + "result": "biomesoplenty:smooth_orange_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone.json b/src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone.json new file mode 100644 index 0000000000..13e91d2c1f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "biomesoplenty:white_sandstone" + }, + "result": "biomesoplenty:smooth_white_sandstone", + "experience": 0.1, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone_slab.json b/src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone_slab.json new file mode 100644 index 0000000000..c5503fdac8 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:smooth_white_sandstone" + } + }, + "result": { + "item": "biomesoplenty:smooth_white_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone_slab_from_smooth_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone_slab_from_smooth_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..a4f4d0c4f5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone_slab_from_smooth_white_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:smooth_white_sandstone" + }, + "result": "biomesoplenty:smooth_white_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone_stairs.json new file mode 100644 index 0000000000..a177e2714f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:smooth_white_sandstone" + } + }, + "result": { + "item": "biomesoplenty:smooth_white_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone_stairs_from_smooth_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone_stairs_from_smooth_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..5fb61fb687 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone_stairs_from_smooth_white_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:smooth_white_sandstone" + }, + "result": "biomesoplenty:smooth_white_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/spruce_sign_from_dead_planks.json b/src/main/resources/data/biomesoplenty/recipes/spruce_sign_from_dead_planks.json new file mode 100644 index 0000000000..8a6e5c25a5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/spruce_sign_from_dead_planks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + " X " + ], + "key": { + "#": { + "item": "biomesoplenty:dead_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "minecraft:spruce_sign", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/stripped_cherry_wood.json b/src/main/resources/data/biomesoplenty/recipes/stripped_cherry_wood.json new file mode 100644 index 0000000000..704b6d3873 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/stripped_cherry_wood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:stripped_cherry_log" + } + }, + "result": { + "item": "biomesoplenty:stripped_cherry_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/stripped_dead_wood.json b/src/main/resources/data/biomesoplenty/recipes/stripped_dead_wood.json new file mode 100644 index 0000000000..448933bc97 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/stripped_dead_wood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:stripped_dead_log" + } + }, + "result": { + "item": "biomesoplenty:stripped_dead_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/stripped_fir_wood.json b/src/main/resources/data/biomesoplenty/recipes/stripped_fir_wood.json new file mode 100644 index 0000000000..27a6df46d5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/stripped_fir_wood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:stripped_fir_log" + } + }, + "result": { + "item": "biomesoplenty:stripped_fir_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/stripped_hellbark_wood.json b/src/main/resources/data/biomesoplenty/recipes/stripped_hellbark_wood.json new file mode 100644 index 0000000000..fa400b9d0b --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/stripped_hellbark_wood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:stripped_hellbark_log" + } + }, + "result": { + "item": "biomesoplenty:stripped_hellbark_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/stripped_jacaranda_wood.json b/src/main/resources/data/biomesoplenty/recipes/stripped_jacaranda_wood.json new file mode 100644 index 0000000000..5caa9837ae --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/stripped_jacaranda_wood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:stripped_jacaranda_log" + } + }, + "result": { + "item": "biomesoplenty:stripped_jacaranda_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/stripped_magic_wood.json b/src/main/resources/data/biomesoplenty/recipes/stripped_magic_wood.json new file mode 100644 index 0000000000..a44dd905a4 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/stripped_magic_wood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:stripped_magic_log" + } + }, + "result": { + "item": "biomesoplenty:stripped_magic_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/stripped_mahogany_wood.json b/src/main/resources/data/biomesoplenty/recipes/stripped_mahogany_wood.json new file mode 100644 index 0000000000..51596bbff6 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/stripped_mahogany_wood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:stripped_mahogany_log" + } + }, + "result": { + "item": "biomesoplenty:stripped_mahogany_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/stripped_palm_wood.json b/src/main/resources/data/biomesoplenty/recipes/stripped_palm_wood.json new file mode 100644 index 0000000000..11e60ff911 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/stripped_palm_wood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:stripped_palm_log" + } + }, + "result": { + "item": "biomesoplenty:stripped_palm_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/stripped_redwood_wood.json b/src/main/resources/data/biomesoplenty/recipes/stripped_redwood_wood.json new file mode 100644 index 0000000000..fe5c335280 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/stripped_redwood_wood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:stripped_redwood_log" + } + }, + "result": { + "item": "biomesoplenty:stripped_redwood_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/stripped_umbran_wood.json b/src/main/resources/data/biomesoplenty/recipes/stripped_umbran_wood.json new file mode 100644 index 0000000000..e035cc3534 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/stripped_umbran_wood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:stripped_umbran_log" + } + }, + "result": { + "item": "biomesoplenty:stripped_umbran_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/stripped_willow_wood.json b/src/main/resources/data/biomesoplenty/recipes/stripped_willow_wood.json new file mode 100644 index 0000000000..59ece466ca --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/stripped_willow_wood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:stripped_willow_log" + } + }, + "result": { + "item": "biomesoplenty:stripped_willow_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/umbran_boat.json b/src/main/resources/data/biomesoplenty/recipes/umbran_boat.json new file mode 100644 index 0000000000..bbbb1d8982 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/umbran_boat.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:umbran_planks" + } + }, + "result": { + "item": "biomesoplenty:umbran_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/umbran_button.json b/src/main/resources/data/biomesoplenty/recipes/umbran_button.json new file mode 100644 index 0000000000..e54c620dfc --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/umbran_button.json @@ -0,0 +1,12 @@ +{ + "type": "crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "biomesoplenty:umbran_planks" + } + ], + "result": { + "item": "biomesoplenty:umbran_button" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/umbran_door.json b/src/main/resources/data/biomesoplenty/recipes/umbran_door.json new file mode 100644 index 0000000000..04875142f2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/umbran_door.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_door", + "pattern": [ + "##", + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:umbran_planks" + } + }, + "result": { + "item": "biomesoplenty:umbran_door", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/umbran_fence.json b/src/main/resources/data/biomesoplenty/recipes/umbran_fence.json new file mode 100644 index 0000000000..437264aa8e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/umbran_fence.json @@ -0,0 +1,20 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence", + "pattern": [ + "W#W", + "W#W" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:umbran_planks" + } + }, + "result": { + "item": "biomesoplenty:umbran_fence", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/umbran_fence_gate.json b/src/main/resources/data/biomesoplenty/recipes/umbran_fence_gate.json new file mode 100644 index 0000000000..1adc6e22c3 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/umbran_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence_gate", + "pattern": [ + "#W#", + "#W#" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:umbran_planks" + } + }, + "result": { + "item": "biomesoplenty:umbran_fence_gate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/umbran_planks.json b/src/main/resources/data/biomesoplenty/recipes/umbran_planks.json new file mode 100644 index 0000000000..d25b7d752f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/umbran_planks.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "biomesoplenty:umbran_logs" + } + ], + "result": { + "item": "biomesoplenty:umbran_planks", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/umbran_pressure_plate.json b/src/main/resources/data/biomesoplenty/recipes/umbran_pressure_plate.json new file mode 100644 index 0000000000..4389de0478 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/umbran_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "group": "wooden_pressure_plate", + "pattern": [ + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:umbran_planks" + } + }, + "result": { + "item": "biomesoplenty:umbran_pressure_plate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/umbran_slab.json b/src/main/resources/data/biomesoplenty/recipes/umbran_slab.json new file mode 100644 index 0000000000..6c1898450f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/umbran_slab.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "wooden_slab", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:umbran_planks" + } + }, + "result": { + "item": "biomesoplenty:umbran_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/umbran_stairs.json b/src/main/resources/data/biomesoplenty/recipes/umbran_stairs.json new file mode 100644 index 0000000000..28e0e03825 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/umbran_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_stairs", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:umbran_planks" + } + }, + "result": { + "item": "biomesoplenty:umbran_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/umbran_trapdoor.json b/src/main/resources/data/biomesoplenty/recipes/umbran_trapdoor.json new file mode 100644 index 0000000000..5038fd895a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/umbran_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "wooden_trapdoor", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:umbran_planks" + } + }, + "result": { + "item": "biomesoplenty:umbran_trapdoor", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/umbran_wood.json b/src/main/resources/data/biomesoplenty/recipes/umbran_wood.json new file mode 100644 index 0000000000..1e6da7da19 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/umbran_wood.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:umbran_log" + } + }, + "result": { + "item": "biomesoplenty:umbran_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/white_sandstone.json b/src/main/resources/data/biomesoplenty/recipes/white_sandstone.json new file mode 100644 index 0000000000..4bc07d02bf --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/white_sandstone.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:white_sand" + } + }, + "result": { + "item": "biomesoplenty:white_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/white_sandstone_slab.json b/src/main/resources/data/biomesoplenty/recipes/white_sandstone_slab.json new file mode 100644 index 0000000000..e3c898dfa3 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/white_sandstone_slab.json @@ -0,0 +1,23 @@ +{ + "type": "crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "biomesoplenty:white_sandstone" + }, + { + "item": "biomesoplenty:chiseled_white_sandstone" + }, + { + "item": "biomesoplenty:cut_white_sandstone" + } + ] + }, + "result": { + "item": "biomesoplenty:white_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/white_sandstone_slab_from_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/white_sandstone_slab_from_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..ee19e84f2a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/white_sandstone_slab_from_white_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:white_sandstone" + }, + "result": "biomesoplenty:white_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/white_sandstone_stairs.json b/src/main/resources/data/biomesoplenty/recipes/white_sandstone_stairs.json new file mode 100644 index 0000000000..a3463c1c18 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/white_sandstone_stairs.json @@ -0,0 +1,25 @@ +{ + "type": "crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "biomesoplenty:white_sandstone" + }, + { + "item": "biomesoplenty:chiseled_white_sandstone" + }, + { + "item": "biomesoplenty:cut_white_sandstone" + } + ] + }, + "result": { + "item": "biomesoplenty:white_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/white_sandstone_stairs_from_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/white_sandstone_stairs_from_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..d79bfd1e77 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/white_sandstone_stairs_from_white_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:white_sandstone" + }, + "result": "biomesoplenty:white_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/white_sandstone_wall.json b/src/main/resources/data/biomesoplenty/recipes/white_sandstone_wall.json new file mode 100644 index 0000000000..be4571f26e --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/white_sandstone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:white_sandstone" + } + }, + "result": { + "item": "biomesoplenty:white_sandstone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/white_sandstone_wall_from_white_sandstone_stonecutting.json b/src/main/resources/data/biomesoplenty/recipes/white_sandstone_wall_from_white_sandstone_stonecutting.json new file mode 100644 index 0000000000..caf085ff9c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/white_sandstone_wall_from_white_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "biomesoplenty:white_sandstone" + }, + "result": "biomesoplenty:white_sandstone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/willow_boat.json b/src/main/resources/data/biomesoplenty/recipes/willow_boat.json new file mode 100644 index 0000000000..fc53c87a7c --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/willow_boat.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:willow_planks" + } + }, + "result": { + "item": "biomesoplenty:willow_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/willow_button.json b/src/main/resources/data/biomesoplenty/recipes/willow_button.json new file mode 100644 index 0000000000..7aef6a0733 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/willow_button.json @@ -0,0 +1,12 @@ +{ + "type": "crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "biomesoplenty:willow_planks" + } + ], + "result": { + "item": "biomesoplenty:willow_button" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/willow_door.json b/src/main/resources/data/biomesoplenty/recipes/willow_door.json new file mode 100644 index 0000000000..f800b6c7a5 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/willow_door.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_door", + "pattern": [ + "##", + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:willow_planks" + } + }, + "result": { + "item": "biomesoplenty:willow_door", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/willow_fence.json b/src/main/resources/data/biomesoplenty/recipes/willow_fence.json new file mode 100644 index 0000000000..6f426ddb59 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/willow_fence.json @@ -0,0 +1,20 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence", + "pattern": [ + "W#W", + "W#W" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:willow_planks" + } + }, + "result": { + "item": "biomesoplenty:willow_fence", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/willow_fence_gate.json b/src/main/resources/data/biomesoplenty/recipes/willow_fence_gate.json new file mode 100644 index 0000000000..9cf040cfbe --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/willow_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence_gate", + "pattern": [ + "#W#", + "#W#" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "biomesoplenty:willow_planks" + } + }, + "result": { + "item": "biomesoplenty:willow_fence_gate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/willow_planks.json b/src/main/resources/data/biomesoplenty/recipes/willow_planks.json new file mode 100644 index 0000000000..84a00461e3 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/willow_planks.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "biomesoplenty:willow_logs" + } + ], + "result": { + "item": "biomesoplenty:willow_planks", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/willow_pressure_plate.json b/src/main/resources/data/biomesoplenty/recipes/willow_pressure_plate.json new file mode 100644 index 0000000000..5adbb2d9d8 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/willow_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "group": "wooden_pressure_plate", + "pattern": [ + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:willow_planks" + } + }, + "result": { + "item": "biomesoplenty:willow_pressure_plate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/willow_slab.json b/src/main/resources/data/biomesoplenty/recipes/willow_slab.json new file mode 100644 index 0000000000..ac1381b1c2 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/willow_slab.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "wooden_slab", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:willow_planks" + } + }, + "result": { + "item": "biomesoplenty:willow_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/willow_stairs.json b/src/main/resources/data/biomesoplenty/recipes/willow_stairs.json new file mode 100644 index 0000000000..29b22af06d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/willow_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_stairs", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:willow_planks" + } + }, + "result": { + "item": "biomesoplenty:willow_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/willow_trapdoor.json b/src/main/resources/data/biomesoplenty/recipes/willow_trapdoor.json new file mode 100644 index 0000000000..f799ca5e44 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/willow_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "wooden_trapdoor", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "biomesoplenty:willow_planks" + } + }, + "result": { + "item": "biomesoplenty:willow_trapdoor", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/willow_wood.json b/src/main/resources/data/biomesoplenty/recipes/willow_wood.json new file mode 100644 index 0000000000..aab5670115 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/willow_wood.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "biomesoplenty:willow_log" + } + }, + "result": { + "item": "biomesoplenty:willow_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/recipes/yellow_dye_from_goldenrod.json b/src/main/resources/data/biomesoplenty/recipes/yellow_dye_from_goldenrod.json new file mode 100644 index 0000000000..4a44ff4d94 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/recipes/yellow_dye_from_goldenrod.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "yellow_dye", + "ingredients": [ + { + "item": "biomesoplenty:goldenrod" + } + ], + "result": { + "item": "minecraft:yellow_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/blocks/cherry_logs.json b/src/main/resources/data/biomesoplenty/tags/blocks/cherry_logs.json new file mode 100644 index 0000000000..e902f04b5f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/blocks/cherry_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:cherry_log", + "biomesoplenty:cherry_wood", + "biomesoplenty:stripped_cherry_log", + "biomesoplenty:stripped_cherry_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/blocks/dead_logs.json b/src/main/resources/data/biomesoplenty/tags/blocks/dead_logs.json new file mode 100644 index 0000000000..9fd002dfd7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/blocks/dead_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:dead_log", + "biomesoplenty:dead_wood", + "biomesoplenty:stripped_dead_log", + "biomesoplenty:stripped_dead_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/blocks/fir_logs.json b/src/main/resources/data/biomesoplenty/tags/blocks/fir_logs.json new file mode 100644 index 0000000000..5e218e2e9f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/blocks/fir_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_log", + "biomesoplenty:fir_wood", + "biomesoplenty:stripped_fir_log", + "biomesoplenty:stripped_fir_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/blocks/hellbark_logs.json b/src/main/resources/data/biomesoplenty/tags/blocks/hellbark_logs.json new file mode 100644 index 0000000000..3b1a124c63 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/blocks/hellbark_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:hellbark_log", + "biomesoplenty:hellbark_wood", + "biomesoplenty:stripped_hellbark_log", + "biomesoplenty:stripped_hellbark_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/blocks/jacaranda_logs.json b/src/main/resources/data/biomesoplenty/tags/blocks/jacaranda_logs.json new file mode 100644 index 0000000000..8920d9edb0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/blocks/jacaranda_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:jacaranda_log", + "biomesoplenty:jacaranda_wood", + "biomesoplenty:stripped_jacaranda_log", + "biomesoplenty:stripped_jacaranda_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/blocks/magic_logs.json b/src/main/resources/data/biomesoplenty/tags/blocks/magic_logs.json new file mode 100644 index 0000000000..71387ed16a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/blocks/magic_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:magic_log", + "biomesoplenty:magic_wood", + "biomesoplenty:stripped_magic_log", + "biomesoplenty:stripped_magic_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/blocks/mahogany_logs.json b/src/main/resources/data/biomesoplenty/tags/blocks/mahogany_logs.json new file mode 100644 index 0000000000..cd0498a78f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/blocks/mahogany_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:mahogany_log", + "biomesoplenty:mahogany_wood", + "biomesoplenty:stripped_mahogany_log", + "biomesoplenty:stripped_mahogany_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/blocks/palm_logs.json b/src/main/resources/data/biomesoplenty/tags/blocks/palm_logs.json new file mode 100644 index 0000000000..3cf8c60187 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/blocks/palm_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:palm_log", + "biomesoplenty:palm_wood", + "biomesoplenty:stripped_palm_log", + "biomesoplenty:stripped_palm_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/blocks/redwood_logs.json b/src/main/resources/data/biomesoplenty/tags/blocks/redwood_logs.json new file mode 100644 index 0000000000..c7d3b99e00 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/blocks/redwood_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:redwood_log", + "biomesoplenty:redwood_wood", + "biomesoplenty:stripped_redwood_log", + "biomesoplenty:stripped_redwood_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/blocks/umbran_logs.json b/src/main/resources/data/biomesoplenty/tags/blocks/umbran_logs.json new file mode 100644 index 0000000000..57efac9e7d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/blocks/umbran_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:umbran_log", + "biomesoplenty:umbran_wood", + "biomesoplenty:stripped_umbran_log", + "biomesoplenty:stripped_umbran_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/blocks/willow_logs.json b/src/main/resources/data/biomesoplenty/tags/blocks/willow_logs.json new file mode 100644 index 0000000000..af9ba07683 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/blocks/willow_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:willow_log", + "biomesoplenty:willow_wood", + "biomesoplenty:stripped_willow_log", + "biomesoplenty:stripped_willow_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/items/cherry_logs.json b/src/main/resources/data/biomesoplenty/tags/items/cherry_logs.json new file mode 100644 index 0000000000..e902f04b5f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/items/cherry_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:cherry_log", + "biomesoplenty:cherry_wood", + "biomesoplenty:stripped_cherry_log", + "biomesoplenty:stripped_cherry_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/items/dead_logs.json b/src/main/resources/data/biomesoplenty/tags/items/dead_logs.json new file mode 100644 index 0000000000..9fd002dfd7 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/items/dead_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:dead_log", + "biomesoplenty:dead_wood", + "biomesoplenty:stripped_dead_log", + "biomesoplenty:stripped_dead_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/items/fir_logs.json b/src/main/resources/data/biomesoplenty/tags/items/fir_logs.json new file mode 100644 index 0000000000..5e218e2e9f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/items/fir_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_log", + "biomesoplenty:fir_wood", + "biomesoplenty:stripped_fir_log", + "biomesoplenty:stripped_fir_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/items/hellbark_logs.json b/src/main/resources/data/biomesoplenty/tags/items/hellbark_logs.json new file mode 100644 index 0000000000..3b1a124c63 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/items/hellbark_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:hellbark_log", + "biomesoplenty:hellbark_wood", + "biomesoplenty:stripped_hellbark_log", + "biomesoplenty:stripped_hellbark_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/items/jacaranda_logs.json b/src/main/resources/data/biomesoplenty/tags/items/jacaranda_logs.json new file mode 100644 index 0000000000..8920d9edb0 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/items/jacaranda_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:jacaranda_log", + "biomesoplenty:jacaranda_wood", + "biomesoplenty:stripped_jacaranda_log", + "biomesoplenty:stripped_jacaranda_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/items/magic_logs.json b/src/main/resources/data/biomesoplenty/tags/items/magic_logs.json new file mode 100644 index 0000000000..71387ed16a --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/items/magic_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:magic_log", + "biomesoplenty:magic_wood", + "biomesoplenty:stripped_magic_log", + "biomesoplenty:stripped_magic_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/items/mahogany_logs.json b/src/main/resources/data/biomesoplenty/tags/items/mahogany_logs.json new file mode 100644 index 0000000000..cd0498a78f --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/items/mahogany_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:mahogany_log", + "biomesoplenty:mahogany_wood", + "biomesoplenty:stripped_mahogany_log", + "biomesoplenty:stripped_mahogany_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/items/palm_logs.json b/src/main/resources/data/biomesoplenty/tags/items/palm_logs.json new file mode 100644 index 0000000000..3cf8c60187 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/items/palm_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:palm_log", + "biomesoplenty:palm_wood", + "biomesoplenty:stripped_palm_log", + "biomesoplenty:stripped_palm_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/items/redwood_logs.json b/src/main/resources/data/biomesoplenty/tags/items/redwood_logs.json new file mode 100644 index 0000000000..c7d3b99e00 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/items/redwood_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:redwood_log", + "biomesoplenty:redwood_wood", + "biomesoplenty:stripped_redwood_log", + "biomesoplenty:stripped_redwood_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/items/umbran_logs.json b/src/main/resources/data/biomesoplenty/tags/items/umbran_logs.json new file mode 100644 index 0000000000..57efac9e7d --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/items/umbran_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:umbran_log", + "biomesoplenty:umbran_wood", + "biomesoplenty:stripped_umbran_log", + "biomesoplenty:stripped_umbran_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/biomesoplenty/tags/items/willow_logs.json b/src/main/resources/data/biomesoplenty/tags/items/willow_logs.json new file mode 100644 index 0000000000..af9ba07683 --- /dev/null +++ b/src/main/resources/data/biomesoplenty/tags/items/willow_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:willow_log", + "biomesoplenty:willow_wood", + "biomesoplenty:stripped_willow_log", + "biomesoplenty:stripped_willow_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/blocks/dirt.json b/src/main/resources/data/forge/tags/blocks/dirt.json new file mode 100644 index 0000000000..f3b4e78be0 --- /dev/null +++ b/src/main/resources/data/forge/tags/blocks/dirt.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:origin_grass_block" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/blocks/fence_gates/wooden.json b/src/main/resources/data/forge/tags/blocks/fence_gates/wooden.json new file mode 100644 index 0000000000..43605fc4d5 --- /dev/null +++ b/src/main/resources/data/forge/tags/blocks/fence_gates/wooden.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_fence_gate", + "biomesoplenty:redwood_fence_gate", + "biomesoplenty:cherry_fence_gate", + "biomesoplenty:mahogany_fence_gate", + "biomesoplenty:jacaranda_fence_gate", + "biomesoplenty:palm_fence_gate", + "biomesoplenty:willow_fence_gate", + "biomesoplenty:dead_fence_gate", + "biomesoplenty:magic_fence_gate", + "biomesoplenty:umbran_fence_gate", + "biomesoplenty:hellbark_fence_gate" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/blocks/fences/wooden.json b/src/main/resources/data/forge/tags/blocks/fences/wooden.json new file mode 100644 index 0000000000..623081c000 --- /dev/null +++ b/src/main/resources/data/forge/tags/blocks/fences/wooden.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_fence", + "biomesoplenty:redwood_fence", + "biomesoplenty:cherry_fence", + "biomesoplenty:mahogany_fence", + "biomesoplenty:jacaranda_fence", + "biomesoplenty:palm_fence", + "biomesoplenty:willow_fence", + "biomesoplenty:dead_fence", + "biomesoplenty:magic_fence", + "biomesoplenty:umbran_fence", + "biomesoplenty:hellbark_fence" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/blocks/sand.json b/src/main/resources/data/forge/tags/blocks/sand.json new file mode 100644 index 0000000000..da8c33dbed --- /dev/null +++ b/src/main/resources/data/forge/tags/blocks/sand.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:black_sand", + "biomesoplenty:orange_sand", + "biomesoplenty:white_sand" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/blocks/sandstone.json b/src/main/resources/data/forge/tags/blocks/sandstone.json new file mode 100644 index 0000000000..bc519b3c71 --- /dev/null +++ b/src/main/resources/data/forge/tags/blocks/sandstone.json @@ -0,0 +1,17 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:black_sandstone", + "biomesoplenty:cut_black_sandstone", + "biomesoplenty:chiseled_black_sandstone", + "biomesoplenty:smooth_black_sandstone", + "biomesoplenty:orange_sandstone", + "biomesoplenty:cut_orange_sandstone", + "biomesoplenty:chiseled_orange_sandstone", + "biomesoplenty:smooth_orange_sandstone", + "biomesoplenty:white_sandstone", + "biomesoplenty:cut_white_sandstone", + "biomesoplenty:chiseled_white_sandstone", + "biomesoplenty:smooth_white_sandstone" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/fence_gates/wooden.json b/src/main/resources/data/forge/tags/items/fence_gates/wooden.json new file mode 100644 index 0000000000..43605fc4d5 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/fence_gates/wooden.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_fence_gate", + "biomesoplenty:redwood_fence_gate", + "biomesoplenty:cherry_fence_gate", + "biomesoplenty:mahogany_fence_gate", + "biomesoplenty:jacaranda_fence_gate", + "biomesoplenty:palm_fence_gate", + "biomesoplenty:willow_fence_gate", + "biomesoplenty:dead_fence_gate", + "biomesoplenty:magic_fence_gate", + "biomesoplenty:umbran_fence_gate", + "biomesoplenty:hellbark_fence_gate" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/fences/wooden.json b/src/main/resources/data/forge/tags/items/fences/wooden.json new file mode 100644 index 0000000000..623081c000 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/fences/wooden.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_fence", + "biomesoplenty:redwood_fence", + "biomesoplenty:cherry_fence", + "biomesoplenty:mahogany_fence", + "biomesoplenty:jacaranda_fence", + "biomesoplenty:palm_fence", + "biomesoplenty:willow_fence", + "biomesoplenty:dead_fence", + "biomesoplenty:magic_fence", + "biomesoplenty:umbran_fence", + "biomesoplenty:hellbark_fence" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/mushrooms.json b/src/main/resources/data/forge/tags/items/mushrooms.json new file mode 100644 index 0000000000..e3f68d37a3 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/mushrooms.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:glowshroom", + "biomesoplenty:toadstool" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/music_discs.json b/src/main/resources/data/forge/tags/items/music_discs.json new file mode 100644 index 0000000000..6d43c3cd31 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/music_discs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:music_disc_wanderer" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/sand.json b/src/main/resources/data/forge/tags/items/sand.json new file mode 100644 index 0000000000..3b3a56b19d --- /dev/null +++ b/src/main/resources/data/forge/tags/items/sand.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:black_sand", + "biomesoplenty:orange_sand", + "biomesoplenty:white_sand" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/sandstone.json b/src/main/resources/data/forge/tags/items/sandstone.json new file mode 100644 index 0000000000..bc519b3c71 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/sandstone.json @@ -0,0 +1,17 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:black_sandstone", + "biomesoplenty:cut_black_sandstone", + "biomesoplenty:chiseled_black_sandstone", + "biomesoplenty:smooth_black_sandstone", + "biomesoplenty:orange_sandstone", + "biomesoplenty:cut_orange_sandstone", + "biomesoplenty:chiseled_orange_sandstone", + "biomesoplenty:smooth_orange_sandstone", + "biomesoplenty:white_sandstone", + "biomesoplenty:cut_white_sandstone", + "biomesoplenty:chiseled_white_sandstone", + "biomesoplenty:smooth_white_sandstone" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/recipes/tnt.json b/src/main/resources/data/minecraft/recipes/tnt.json new file mode 100644 index 0000000000..53b2af481f --- /dev/null +++ b/src/main/resources/data/minecraft/recipes/tnt.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "X#X", + "#X#", + "X#X" + ], + "key": { + "#": { + "tag": "minecraft:sand" + }, + "X": { + "item": "minecraft:gunpowder" + } + }, + "result": { + "item": "minecraft:tnt" + } +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/bamboo_plantable_on.json b/src/main/resources/data/minecraft/tags/blocks/bamboo_plantable_on.json new file mode 100644 index 0000000000..f3b4e78be0 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/bamboo_plantable_on.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:origin_grass_block" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/climbable.json b/src/main/resources/data/minecraft/tags/blocks/climbable.json new file mode 100644 index 0000000000..4daa3ed144 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/climbable.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:willow_vine" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/enderman_holdable.json b/src/main/resources/data/minecraft/tags/blocks/enderman_holdable.json new file mode 100644 index 0000000000..a8c9d4c724 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/enderman_holdable.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:black_sand", + "biomesoplenty:orange_sand", + "biomesoplenty:white_sand", + "biomesoplenty:toadstool", + "biomesoplenty:glowshroom", + "biomesoplenty:origin_grass_block" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/fence_gates.json b/src/main/resources/data/minecraft/tags/blocks/fence_gates.json new file mode 100644 index 0000000000..43605fc4d5 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/fence_gates.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_fence_gate", + "biomesoplenty:redwood_fence_gate", + "biomesoplenty:cherry_fence_gate", + "biomesoplenty:mahogany_fence_gate", + "biomesoplenty:jacaranda_fence_gate", + "biomesoplenty:palm_fence_gate", + "biomesoplenty:willow_fence_gate", + "biomesoplenty:dead_fence_gate", + "biomesoplenty:magic_fence_gate", + "biomesoplenty:umbran_fence_gate", + "biomesoplenty:hellbark_fence_gate" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/flower_pots.json b/src/main/resources/data/minecraft/tags/blocks/flower_pots.json new file mode 100644 index 0000000000..3c76e0498e --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/flower_pots.json @@ -0,0 +1,37 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:potted_origin_sapling", + "biomesoplenty:potted_flowering_oak_sapling", + "biomesoplenty:potted_rainbow_birch_sapling", + "biomesoplenty:potted_yellow_autumn_sapling", + "biomesoplenty:potted_orange_autumn_sapling", + "biomesoplenty:potted_maple_sapling", + "biomesoplenty:potted_fir_sapling", + "biomesoplenty:potted_redwood_sapling", + "biomesoplenty:potted_white_cherry_sapling", + "biomesoplenty:potted_pink_cherry_sapling", + "biomesoplenty:potted_mahogany_sapling", + "biomesoplenty:potted_jacaranda_sapling", + "biomesoplenty:potted_palm_sapling", + "biomesoplenty:potted_willow_sapling", + "biomesoplenty:potted_dead_sapling", + "biomesoplenty:potted_magic_sapling", + "biomesoplenty:potted_umbran_sapling", + "biomesoplenty:potted_hellbark_sapling", + "biomesoplenty:potted_rose", + "biomesoplenty:potted_violet", + "biomesoplenty:potted_lavender", + "biomesoplenty:potted_wildflower", + "biomesoplenty:potted_orange_cosmos", + "biomesoplenty:potted_pink_daffodil", + "biomesoplenty:potted_pink_hibiscus", + "biomesoplenty:potted_glowflower", + "biomesoplenty:potted_wilted_lily", + "biomesoplenty:potted_burning_blossom", + "biomesoplenty:potted_sprout", + "biomesoplenty:potted_clover", + "biomesoplenty:potted_toadstool", + "biomesoplenty:potted_glowshroom" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/leaves.json b/src/main/resources/data/minecraft/tags/blocks/leaves.json new file mode 100644 index 0000000000..07a2d4a2ef --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/leaves.json @@ -0,0 +1,23 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:origin_leaves", + "biomesoplenty:flowering_oak_leaves", + "biomesoplenty:rainbow_birch_leaves", + "biomesoplenty:yellow_autumn_leaves", + "biomesoplenty:orange_autumn_leaves", + "biomesoplenty:maple_leaves", + "biomesoplenty:fir_leaves", + "biomesoplenty:redwood_leaves", + "biomesoplenty:white_cherry_leaves", + "biomesoplenty:pink_cherry_leaves", + "biomesoplenty:mahogany_leaves", + "biomesoplenty:jacaranda_leaves", + "biomesoplenty:palm_leaves", + "biomesoplenty:willow_leaves", + "biomesoplenty:dead_leaves", + "biomesoplenty:magic_leaves", + "biomesoplenty:umbran_leaves", + "biomesoplenty:hellbark_leaves" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/logs.json b/src/main/resources/data/minecraft/tags/blocks/logs.json new file mode 100644 index 0000000000..15cd662486 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/logs.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "#biomesoplenty:fir_logs", + "#biomesoplenty:redwood_logs", + "#biomesoplenty:cherry_logs", + "#biomesoplenty:mahogany_logs", + "#biomesoplenty:jacaranda_logs", + "#biomesoplenty:palm_logs", + "#biomesoplenty:willow_logs", + "#biomesoplenty:dead_logs", + "#biomesoplenty:magic_logs", + "#biomesoplenty:umbran_logs", + "#biomesoplenty:hellbark_logs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/logs_that_burn.json b/src/main/resources/data/minecraft/tags/blocks/logs_that_burn.json new file mode 100644 index 0000000000..41e136e493 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/logs_that_burn.json @@ -0,0 +1,15 @@ +{ + "replace": false, + "values": [ + "#biomesoplenty:fir_logs", + "#biomesoplenty:redwood_logs", + "#biomesoplenty:cherry_logs", + "#biomesoplenty:mahogany_logs", + "#biomesoplenty:jacaranda_logs", + "#biomesoplenty:palm_logs", + "#biomesoplenty:willow_logs", + "#biomesoplenty:dead_logs", + "#biomesoplenty:magic_logs", + "#biomesoplenty:umbran_logs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/non_flammable_wood.json b/src/main/resources/data/minecraft/tags/blocks/non_flammable_wood.json new file mode 100644 index 0000000000..dcc040c4f2 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/non_flammable_wood.json @@ -0,0 +1,18 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:hellbark_log", + "biomesoplenty:hellbark_wood", + "biomesoplenty:stripped_hellbark_log", + "biomesoplenty:stripped_hellbark_wood", + "biomesoplenty:hellbark_planks", + "biomesoplenty:hellbark_slab", + "biomesoplenty:hellbark_pressure_plate", + "biomesoplenty:hellbark_fence", + "biomesoplenty:hellbark_trapdoor", + "biomesoplenty:hellbark_fence_gate", + "biomesoplenty:hellbark_stairs", + "biomesoplenty:hellbark_button", + "biomesoplenty:hellbark_door" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/planks.json b/src/main/resources/data/minecraft/tags/blocks/planks.json new file mode 100644 index 0000000000..25550907b0 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/planks.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_planks", + "biomesoplenty:redwood_planks", + "biomesoplenty:cherry_planks", + "biomesoplenty:mahogany_planks", + "biomesoplenty:jacaranda_planks", + "biomesoplenty:palm_planks", + "biomesoplenty:willow_planks", + "biomesoplenty:dead_planks", + "biomesoplenty:magic_planks", + "biomesoplenty:umbran_planks", + "biomesoplenty:hellbark_planks" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/sand.json b/src/main/resources/data/minecraft/tags/blocks/sand.json new file mode 100644 index 0000000000..da8c33dbed --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/sand.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:black_sand", + "biomesoplenty:orange_sand", + "biomesoplenty:white_sand" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/saplings.json b/src/main/resources/data/minecraft/tags/blocks/saplings.json new file mode 100644 index 0000000000..ea61d2b535 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/saplings.json @@ -0,0 +1,23 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:origin_sapling", + "biomesoplenty:flowering_oak_sapling", + "biomesoplenty:rainbow_birch_sapling", + "biomesoplenty:yellow_autumn_sapling", + "biomesoplenty:orange_autumn_sapling", + "biomesoplenty:maple_sapling", + "biomesoplenty:fir_sapling", + "biomesoplenty:redwood_sapling", + "biomesoplenty:white_cherry_sapling", + "biomesoplenty:pink_cherry_sapling", + "biomesoplenty:mahogany_sapling", + "biomesoplenty:jacaranda_sapling", + "biomesoplenty:palm_sapling", + "biomesoplenty:willow_sapling", + "biomesoplenty:dead_sapling", + "biomesoplenty:magic_sapling", + "biomesoplenty:umbran_sapling", + "biomesoplenty:hellbark_sapling" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/slabs.json b/src/main/resources/data/minecraft/tags/blocks/slabs.json new file mode 100644 index 0000000000..33a42adc33 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/slabs.json @@ -0,0 +1,26 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:black_sandstone_slab", + "biomesoplenty:cut_black_sandstone_slab", + "biomesoplenty:smooth_black_sandstone_slab", + "biomesoplenty:orange_sandstone_slab", + "biomesoplenty:cut_orange_sandstone_slab", + "biomesoplenty:smooth_orange_sandstone_slab", + "biomesoplenty:white_sandstone_slab", + "biomesoplenty:cut_white_sandstone_slab", + "biomesoplenty:smooth_white_sandstone_slab", + "biomesoplenty:mud_brick_slab", + "biomesoplenty:fir_slab", + "biomesoplenty:redwood_slab", + "biomesoplenty:cherry_slab", + "biomesoplenty:mahogany_slab", + "biomesoplenty:jacaranda_slab", + "biomesoplenty:palm_slab", + "biomesoplenty:willow_slab", + "biomesoplenty:dead_slab", + "biomesoplenty:magic_slab", + "biomesoplenty:umbran_slab", + "biomesoplenty:hellbark_slab" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/small_flowers.json b/src/main/resources/data/minecraft/tags/blocks/small_flowers.json new file mode 100644 index 0000000000..9b9eda1780 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/small_flowers.json @@ -0,0 +1,15 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:rose", + "biomesoplenty:violet", + "biomesoplenty:lavender", + "biomesoplenty:wildflower", + "biomesoplenty:orange_cosmos", + "biomesoplenty:pink_daffodil", + "biomesoplenty:pink_hibiscus", + "biomesoplenty:glowflower", + "biomesoplenty:wilted_lily", + "biomesoplenty:burning_blossom" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/stairs.json b/src/main/resources/data/minecraft/tags/blocks/stairs.json new file mode 100644 index 0000000000..fb5505c6c0 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/stairs.json @@ -0,0 +1,23 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:black_sandstone_stairs", + "biomesoplenty:smooth_black_sandstone_stairs", + "biomesoplenty:orange_sandstone_stairs", + "biomesoplenty:smooth_orange_sandstone_stairs", + "biomesoplenty:white_sandstone_stairs", + "biomesoplenty:smooth_white_sandstone_stairs", + "biomesoplenty:mud_brick_stairs", + "biomesoplenty:fir_stairs", + "biomesoplenty:redwood_stairs", + "biomesoplenty:cherry_stairs", + "biomesoplenty:mahogany_stairs", + "biomesoplenty:jacaranda_stairs", + "biomesoplenty:palm_stairs", + "biomesoplenty:willow_stairs", + "biomesoplenty:dead_stairs", + "biomesoplenty:magic_stairs", + "biomesoplenty:umbran_stairs", + "biomesoplenty:hellbark_stairs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/tall_flowers.json b/src/main/resources/data/minecraft/tags/blocks/tall_flowers.json new file mode 100644 index 0000000000..9f43de6864 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/tall_flowers.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:blue_hydrangea", + "biomesoplenty:goldenrod" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/valid_spawn.json b/src/main/resources/data/minecraft/tags/blocks/valid_spawn.json new file mode 100644 index 0000000000..f3b4e78be0 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/valid_spawn.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:origin_grass_block" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/walls.json b/src/main/resources/data/minecraft/tags/blocks/walls.json new file mode 100644 index 0000000000..d35f03f6b5 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/walls.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:black_sandstone_wall", + "biomesoplenty:orange_sandstone_wall", + "biomesoplenty:white_sandstone_wall", + "biomesoplenty:mud_brick_wall" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/wooden_buttons.json b/src/main/resources/data/minecraft/tags/blocks/wooden_buttons.json new file mode 100644 index 0000000000..48ef6d368a --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/wooden_buttons.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_button", + "biomesoplenty:redwood_button", + "biomesoplenty:cherry_button", + "biomesoplenty:mahogany_button", + "biomesoplenty:jacaranda_button", + "biomesoplenty:palm_button", + "biomesoplenty:willow_button", + "biomesoplenty:dead_button", + "biomesoplenty:magic_button", + "biomesoplenty:umbran_button", + "biomesoplenty:hellbark_button" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/wooden_doors.json b/src/main/resources/data/minecraft/tags/blocks/wooden_doors.json new file mode 100644 index 0000000000..d45d5a66d3 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/wooden_doors.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_door", + "biomesoplenty:redwood_door", + "biomesoplenty:cherry_door", + "biomesoplenty:mahogany_door", + "biomesoplenty:jacaranda_door", + "biomesoplenty:palm_door", + "biomesoplenty:willow_door", + "biomesoplenty:dead_door", + "biomesoplenty:magic_door", + "biomesoplenty:umbran_door", + "biomesoplenty:hellbark_door" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/wooden_fences.json b/src/main/resources/data/minecraft/tags/blocks/wooden_fences.json new file mode 100644 index 0000000000..623081c000 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/wooden_fences.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_fence", + "biomesoplenty:redwood_fence", + "biomesoplenty:cherry_fence", + "biomesoplenty:mahogany_fence", + "biomesoplenty:jacaranda_fence", + "biomesoplenty:palm_fence", + "biomesoplenty:willow_fence", + "biomesoplenty:dead_fence", + "biomesoplenty:magic_fence", + "biomesoplenty:umbran_fence", + "biomesoplenty:hellbark_fence" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/wooden_pressure_plates.json b/src/main/resources/data/minecraft/tags/blocks/wooden_pressure_plates.json new file mode 100644 index 0000000000..e6b76c50f9 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/wooden_pressure_plates.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_pressure_plate", + "biomesoplenty:redwood_pressure_plate", + "biomesoplenty:cherry_pressure_plate", + "biomesoplenty:mahogany_pressure_plate", + "biomesoplenty:jacaranda_pressure_plate", + "biomesoplenty:palm_pressure_plate", + "biomesoplenty:willow_pressure_plate", + "biomesoplenty:dead_pressure_plate", + "biomesoplenty:magic_pressure_plate", + "biomesoplenty:umbran_pressure_plate", + "biomesoplenty:hellbark_pressure_plate" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/wooden_slabs.json b/src/main/resources/data/minecraft/tags/blocks/wooden_slabs.json new file mode 100644 index 0000000000..45fc4a08b0 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/wooden_slabs.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_slab", + "biomesoplenty:redwood_slab", + "biomesoplenty:cherry_slab", + "biomesoplenty:mahogany_slab", + "biomesoplenty:jacaranda_slab", + "biomesoplenty:palm_slab", + "biomesoplenty:willow_slab", + "biomesoplenty:dead_slab", + "biomesoplenty:magic_slab", + "biomesoplenty:umbran_slab", + "biomesoplenty:hellbark_slab" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/wooden_stairs.json b/src/main/resources/data/minecraft/tags/blocks/wooden_stairs.json new file mode 100644 index 0000000000..755d5d0221 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/wooden_stairs.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_stairs", + "biomesoplenty:redwood_stairs", + "biomesoplenty:cherry_stairs", + "biomesoplenty:mahogany_stairs", + "biomesoplenty:jacaranda_stairs", + "biomesoplenty:palm_stairs", + "biomesoplenty:willow_stairs", + "biomesoplenty:dead_stairs", + "biomesoplenty:magic_stairs", + "biomesoplenty:umbran_stairs", + "biomesoplenty:hellbark_stairs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/wooden_trapdoors.json b/src/main/resources/data/minecraft/tags/blocks/wooden_trapdoors.json new file mode 100644 index 0000000000..4089c939db --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/wooden_trapdoors.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_trapdoor", + "biomesoplenty:redwood_trapdoor", + "biomesoplenty:cherry_trapdoor", + "biomesoplenty:mahogany_trapdoor", + "biomesoplenty:jacaranda_trapdoor", + "biomesoplenty:palm_trapdoor", + "biomesoplenty:willow_trapdoor", + "biomesoplenty:dead_trapdoor", + "biomesoplenty:magic_trapdoor", + "biomesoplenty:umbran_trapdoor", + "biomesoplenty:hellbark_trapdoor" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/boats.json b/src/main/resources/data/minecraft/tags/items/boats.json new file mode 100644 index 0000000000..15463a729c --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/boats.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_boat", + "biomesoplenty:redwood_boat", + "biomesoplenty:cherry_boat", + "biomesoplenty:mahogany_boat", + "biomesoplenty:jacaranda_boat", + "biomesoplenty:palm_boat", + "biomesoplenty:willow_boat", + "biomesoplenty:dead_boat", + "biomesoplenty:magic_boat", + "biomesoplenty:umbran_boat", + "biomesoplenty:hellbark_boat" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/leaves.json b/src/main/resources/data/minecraft/tags/items/leaves.json new file mode 100644 index 0000000000..07a2d4a2ef --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/leaves.json @@ -0,0 +1,23 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:origin_leaves", + "biomesoplenty:flowering_oak_leaves", + "biomesoplenty:rainbow_birch_leaves", + "biomesoplenty:yellow_autumn_leaves", + "biomesoplenty:orange_autumn_leaves", + "biomesoplenty:maple_leaves", + "biomesoplenty:fir_leaves", + "biomesoplenty:redwood_leaves", + "biomesoplenty:white_cherry_leaves", + "biomesoplenty:pink_cherry_leaves", + "biomesoplenty:mahogany_leaves", + "biomesoplenty:jacaranda_leaves", + "biomesoplenty:palm_leaves", + "biomesoplenty:willow_leaves", + "biomesoplenty:dead_leaves", + "biomesoplenty:magic_leaves", + "biomesoplenty:umbran_leaves", + "biomesoplenty:hellbark_leaves" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/logs.json b/src/main/resources/data/minecraft/tags/items/logs.json new file mode 100644 index 0000000000..15cd662486 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/logs.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "#biomesoplenty:fir_logs", + "#biomesoplenty:redwood_logs", + "#biomesoplenty:cherry_logs", + "#biomesoplenty:mahogany_logs", + "#biomesoplenty:jacaranda_logs", + "#biomesoplenty:palm_logs", + "#biomesoplenty:willow_logs", + "#biomesoplenty:dead_logs", + "#biomesoplenty:magic_logs", + "#biomesoplenty:umbran_logs", + "#biomesoplenty:hellbark_logs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/logs_that_burn.json b/src/main/resources/data/minecraft/tags/items/logs_that_burn.json new file mode 100644 index 0000000000..41e136e493 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/logs_that_burn.json @@ -0,0 +1,15 @@ +{ + "replace": false, + "values": [ + "#biomesoplenty:fir_logs", + "#biomesoplenty:redwood_logs", + "#biomesoplenty:cherry_logs", + "#biomesoplenty:mahogany_logs", + "#biomesoplenty:jacaranda_logs", + "#biomesoplenty:palm_logs", + "#biomesoplenty:willow_logs", + "#biomesoplenty:dead_logs", + "#biomesoplenty:magic_logs", + "#biomesoplenty:umbran_logs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/music_discs.json b/src/main/resources/data/minecraft/tags/items/music_discs.json new file mode 100644 index 0000000000..6d43c3cd31 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/music_discs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:music_disc_wanderer" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/non_flammable_wood.json b/src/main/resources/data/minecraft/tags/items/non_flammable_wood.json new file mode 100644 index 0000000000..dcc040c4f2 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/non_flammable_wood.json @@ -0,0 +1,18 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:hellbark_log", + "biomesoplenty:hellbark_wood", + "biomesoplenty:stripped_hellbark_log", + "biomesoplenty:stripped_hellbark_wood", + "biomesoplenty:hellbark_planks", + "biomesoplenty:hellbark_slab", + "biomesoplenty:hellbark_pressure_plate", + "biomesoplenty:hellbark_fence", + "biomesoplenty:hellbark_trapdoor", + "biomesoplenty:hellbark_fence_gate", + "biomesoplenty:hellbark_stairs", + "biomesoplenty:hellbark_button", + "biomesoplenty:hellbark_door" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/planks.json b/src/main/resources/data/minecraft/tags/items/planks.json new file mode 100644 index 0000000000..25550907b0 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/planks.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_planks", + "biomesoplenty:redwood_planks", + "biomesoplenty:cherry_planks", + "biomesoplenty:mahogany_planks", + "biomesoplenty:jacaranda_planks", + "biomesoplenty:palm_planks", + "biomesoplenty:willow_planks", + "biomesoplenty:dead_planks", + "biomesoplenty:magic_planks", + "biomesoplenty:umbran_planks", + "biomesoplenty:hellbark_planks" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/sand.json b/src/main/resources/data/minecraft/tags/items/sand.json new file mode 100644 index 0000000000..da8c33dbed --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/sand.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:black_sand", + "biomesoplenty:orange_sand", + "biomesoplenty:white_sand" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/saplings.json b/src/main/resources/data/minecraft/tags/items/saplings.json new file mode 100644 index 0000000000..ea61d2b535 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/saplings.json @@ -0,0 +1,23 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:origin_sapling", + "biomesoplenty:flowering_oak_sapling", + "biomesoplenty:rainbow_birch_sapling", + "biomesoplenty:yellow_autumn_sapling", + "biomesoplenty:orange_autumn_sapling", + "biomesoplenty:maple_sapling", + "biomesoplenty:fir_sapling", + "biomesoplenty:redwood_sapling", + "biomesoplenty:white_cherry_sapling", + "biomesoplenty:pink_cherry_sapling", + "biomesoplenty:mahogany_sapling", + "biomesoplenty:jacaranda_sapling", + "biomesoplenty:palm_sapling", + "biomesoplenty:willow_sapling", + "biomesoplenty:dead_sapling", + "biomesoplenty:magic_sapling", + "biomesoplenty:umbran_sapling", + "biomesoplenty:hellbark_sapling" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/slabs.json b/src/main/resources/data/minecraft/tags/items/slabs.json new file mode 100644 index 0000000000..d6047b5302 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/slabs.json @@ -0,0 +1,26 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:black_sandstone_slab", + "biomesoplenty:cut_black_sandstone_slab", + "biomesoplenty:smooth_black_sandstone_slab", + "biomesoplenty:orange_sandstone_slab", + "biomesoplenty:cut_orange_sandstone_slab", + "biomesoplenty:smooth_orange_sandstone_slab", + "biomesoplenty:white_sandstone_slab", + "biomesoplenty:cut_white_sandstone_slab", + "biomesoplenty:smooth_white_sandstone_slab", + "biomesoplenty:mud_brick_slab", + "biomesoplenty:fir_slab", + "biomesoplenty:redwood_slab", + "biomesoplenty:cherry_slab", + "biomesoplenty:mahogany_slab", + "biomesoplenty:jacaranda_slab", + "biomesoplenty:palm_slab", + "biomesoplenty:willow_slab", + "biomesoplenty:dead_slab", + "biomesoplenty:magic_slab", + "biomesoplenty:umbran_slab", + "biomesoplenty:hellbark_slab" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/small_flowers.json b/src/main/resources/data/minecraft/tags/items/small_flowers.json new file mode 100644 index 0000000000..9b9eda1780 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/small_flowers.json @@ -0,0 +1,15 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:rose", + "biomesoplenty:violet", + "biomesoplenty:lavender", + "biomesoplenty:wildflower", + "biomesoplenty:orange_cosmos", + "biomesoplenty:pink_daffodil", + "biomesoplenty:pink_hibiscus", + "biomesoplenty:glowflower", + "biomesoplenty:wilted_lily", + "biomesoplenty:burning_blossom" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/stairs.json b/src/main/resources/data/minecraft/tags/items/stairs.json new file mode 100644 index 0000000000..fb5505c6c0 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/stairs.json @@ -0,0 +1,23 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:black_sandstone_stairs", + "biomesoplenty:smooth_black_sandstone_stairs", + "biomesoplenty:orange_sandstone_stairs", + "biomesoplenty:smooth_orange_sandstone_stairs", + "biomesoplenty:white_sandstone_stairs", + "biomesoplenty:smooth_white_sandstone_stairs", + "biomesoplenty:mud_brick_stairs", + "biomesoplenty:fir_stairs", + "biomesoplenty:redwood_stairs", + "biomesoplenty:cherry_stairs", + "biomesoplenty:mahogany_stairs", + "biomesoplenty:jacaranda_stairs", + "biomesoplenty:palm_stairs", + "biomesoplenty:willow_stairs", + "biomesoplenty:dead_stairs", + "biomesoplenty:magic_stairs", + "biomesoplenty:umbran_stairs", + "biomesoplenty:hellbark_stairs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/tall_flowers.json b/src/main/resources/data/minecraft/tags/items/tall_flowers.json new file mode 100644 index 0000000000..9f43de6864 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/tall_flowers.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:blue_hydrangea", + "biomesoplenty:goldenrod" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/walls.json b/src/main/resources/data/minecraft/tags/items/walls.json new file mode 100644 index 0000000000..96668b14e9 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/walls.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:black_sandstone_wall", + "biomesoplenty:orange_sandstone_wall", + "biomesoplenty:white_sandstone_wall", + "biomesoplenty:mud_brick_wall" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/wooden_buttons.json b/src/main/resources/data/minecraft/tags/items/wooden_buttons.json new file mode 100644 index 0000000000..48ef6d368a --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/wooden_buttons.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_button", + "biomesoplenty:redwood_button", + "biomesoplenty:cherry_button", + "biomesoplenty:mahogany_button", + "biomesoplenty:jacaranda_button", + "biomesoplenty:palm_button", + "biomesoplenty:willow_button", + "biomesoplenty:dead_button", + "biomesoplenty:magic_button", + "biomesoplenty:umbran_button", + "biomesoplenty:hellbark_button" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/wooden_doors.json b/src/main/resources/data/minecraft/tags/items/wooden_doors.json new file mode 100644 index 0000000000..d45d5a66d3 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/wooden_doors.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_door", + "biomesoplenty:redwood_door", + "biomesoplenty:cherry_door", + "biomesoplenty:mahogany_door", + "biomesoplenty:jacaranda_door", + "biomesoplenty:palm_door", + "biomesoplenty:willow_door", + "biomesoplenty:dead_door", + "biomesoplenty:magic_door", + "biomesoplenty:umbran_door", + "biomesoplenty:hellbark_door" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/wooden_fences.json b/src/main/resources/data/minecraft/tags/items/wooden_fences.json new file mode 100644 index 0000000000..623081c000 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/wooden_fences.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_fence", + "biomesoplenty:redwood_fence", + "biomesoplenty:cherry_fence", + "biomesoplenty:mahogany_fence", + "biomesoplenty:jacaranda_fence", + "biomesoplenty:palm_fence", + "biomesoplenty:willow_fence", + "biomesoplenty:dead_fence", + "biomesoplenty:magic_fence", + "biomesoplenty:umbran_fence", + "biomesoplenty:hellbark_fence" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/wooden_pressure_plates.json b/src/main/resources/data/minecraft/tags/items/wooden_pressure_plates.json new file mode 100644 index 0000000000..e6b76c50f9 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/wooden_pressure_plates.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_pressure_plate", + "biomesoplenty:redwood_pressure_plate", + "biomesoplenty:cherry_pressure_plate", + "biomesoplenty:mahogany_pressure_plate", + "biomesoplenty:jacaranda_pressure_plate", + "biomesoplenty:palm_pressure_plate", + "biomesoplenty:willow_pressure_plate", + "biomesoplenty:dead_pressure_plate", + "biomesoplenty:magic_pressure_plate", + "biomesoplenty:umbran_pressure_plate", + "biomesoplenty:hellbark_pressure_plate" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/wooden_slabs.json b/src/main/resources/data/minecraft/tags/items/wooden_slabs.json new file mode 100644 index 0000000000..45fc4a08b0 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/wooden_slabs.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_slab", + "biomesoplenty:redwood_slab", + "biomesoplenty:cherry_slab", + "biomesoplenty:mahogany_slab", + "biomesoplenty:jacaranda_slab", + "biomesoplenty:palm_slab", + "biomesoplenty:willow_slab", + "biomesoplenty:dead_slab", + "biomesoplenty:magic_slab", + "biomesoplenty:umbran_slab", + "biomesoplenty:hellbark_slab" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/wooden_stairs.json b/src/main/resources/data/minecraft/tags/items/wooden_stairs.json new file mode 100644 index 0000000000..755d5d0221 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/wooden_stairs.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_stairs", + "biomesoplenty:redwood_stairs", + "biomesoplenty:cherry_stairs", + "biomesoplenty:mahogany_stairs", + "biomesoplenty:jacaranda_stairs", + "biomesoplenty:palm_stairs", + "biomesoplenty:willow_stairs", + "biomesoplenty:dead_stairs", + "biomesoplenty:magic_stairs", + "biomesoplenty:umbran_stairs", + "biomesoplenty:hellbark_stairs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/wooden_trapdoors.json b/src/main/resources/data/minecraft/tags/items/wooden_trapdoors.json new file mode 100644 index 0000000000..4089c939db --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/wooden_trapdoors.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "biomesoplenty:fir_trapdoor", + "biomesoplenty:redwood_trapdoor", + "biomesoplenty:cherry_trapdoor", + "biomesoplenty:mahogany_trapdoor", + "biomesoplenty:jacaranda_trapdoor", + "biomesoplenty:palm_trapdoor", + "biomesoplenty:willow_trapdoor", + "biomesoplenty:dead_trapdoor", + "biomesoplenty:magic_trapdoor", + "biomesoplenty:umbran_trapdoor", + "biomesoplenty:hellbark_trapdoor" + ] +} \ No newline at end of file diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta new file mode 100644 index 0000000000..29063076f5 --- /dev/null +++ b/src/main/resources/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "description": "Resources used for Biomes O' Plenty", + "pack_format": 6 + } +}