├── .gitattributes ├── .gitignore ├── LICENSE.txt ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src ├── generated └── resources │ ├── assets │ └── berry_good │ │ ├── blockstates │ │ ├── glow_berry_basket.json │ │ └── sweet_berry_basket.json │ │ ├── lang │ │ └── en_us.json │ │ ├── models │ │ ├── block │ │ │ ├── glow_berry_basket.json │ │ │ └── sweet_berry_basket.json │ │ └── item │ │ │ ├── glow_berry_basket.json │ │ │ ├── glow_berry_pips.json │ │ │ ├── glowgurt.json │ │ │ ├── music_disc_fox.json │ │ │ ├── sweet_berry_basket.json │ │ │ ├── sweet_berry_meatballs.json │ │ │ ├── sweet_berry_mince.json │ │ │ └── sweet_berry_pips.json │ │ └── sounds.json │ └── data │ ├── berry_good │ ├── advancement │ │ └── recipes │ │ │ ├── decorations │ │ │ ├── glow_berry_basket.json │ │ │ └── sweet_berry_basket.json │ │ │ ├── food │ │ │ ├── glow_berries.json │ │ │ ├── glowgurt.json │ │ │ ├── sweet_berries.json │ │ │ ├── sweet_berry_meatballs.json │ │ │ ├── sweet_berry_meatballs_from_campfire_cooking.json │ │ │ ├── sweet_berry_meatballs_from_smoking.json │ │ │ └── sweet_berry_mince.json │ │ │ └── misc │ │ │ ├── glow_berry_pips_from_glow_berries.json │ │ │ └── sweet_berry_pips_from_sweet_berries.json │ ├── jukebox_song │ │ └── fox.json │ ├── loot_table │ │ └── blocks │ │ │ ├── glow_berry_basket.json │ │ │ └── sweet_berry_basket.json │ ├── modifiers │ │ └── advancements │ │ │ └── husbandry │ │ │ ├── balanced_diet.json │ │ │ └── plant_seed.json │ ├── recipe │ │ ├── glow_berries.json │ │ ├── glow_berry_basket.json │ │ ├── glow_berry_pips_from_glow_berries.json │ │ ├── glowgurt.json │ │ ├── sweet_berries.json │ │ ├── sweet_berry_basket.json │ │ ├── sweet_berry_meatballs.json │ │ ├── sweet_berry_meatballs_from_campfire_cooking.json │ │ ├── sweet_berry_meatballs_from_smoking.json │ │ ├── sweet_berry_mince.json │ │ └── sweet_berry_pips_from_sweet_berries.json │ └── remolders │ │ ├── cave_vines.json │ │ └── sweet_berry_bush.json │ ├── c │ └── tags │ │ ├── block │ │ ├── storage_blocks.json │ │ └── storage_blocks │ │ │ ├── glow_berry.json │ │ │ └── sweet_berry.json │ │ └── item │ │ ├── foods.json │ │ ├── foods │ │ ├── cooked_meat.json │ │ └── raw_meat.json │ │ ├── music_discs.json │ │ ├── seeds.json │ │ ├── seeds │ │ ├── glow_berry.json │ │ └── sweet_berry.json │ │ ├── storage_blocks.json │ │ └── storage_blocks │ │ ├── glow_berry.json │ │ └── sweet_berry.json │ ├── minecraft │ └── tags │ │ ├── block │ │ └── mineable │ │ │ └── axe.json │ │ └── item │ │ ├── chicken_food.json │ │ ├── meat.json │ │ └── parrot_food.json │ └── neoforge │ └── data_maps │ └── item │ └── compostables.json └── main ├── java └── com │ └── teamabnormals │ └── berry_good │ └── core │ ├── BGConfig.java │ ├── BerryGood.java │ ├── data │ ├── client │ │ ├── BGBlockStateProvider.java │ │ ├── BGItemModelProvider.java │ │ ├── BGLanguageProvider.java │ │ └── BGSoundDefinitionsProvider.java │ └── server │ │ ├── BGDataMapProvider.java │ │ ├── BGDataRemolderProvider.java │ │ ├── BGDatapackProvider.java │ │ ├── BGLootTableProvider.java │ │ ├── BGRecipeProvider.java │ │ ├── modifiers │ │ └── BGAdvancementModifierProvider.java │ │ └── tags │ │ ├── BGBlockTagsProvider.java │ │ └── BGItemTagsProvider.java │ ├── mixin │ ├── CaveVinesBlockMixin.java │ ├── FoxMixin.java │ └── SweetBerryBushBlockMixin.java │ ├── other │ ├── BGCompat.java │ ├── BGEvents.java │ └── tags │ │ ├── BGBlockTags.java │ │ └── BGItemTags.java │ └── registry │ ├── BGBlocks.java │ ├── BGItems.java │ ├── BGSoundEvents.java │ └── datapack │ └── BGJukeboxSongs.java └── resources ├── META-INF └── neoforge.mods.toml ├── assets └── berry_good │ ├── lang │ ├── ca_es.json │ ├── cs_cz.json │ ├── da_dk.json │ ├── de_de.json │ ├── en_pt.json │ ├── enws.json │ ├── es_ar.json │ ├── es_es.json │ ├── es_mx.json │ ├── fi_fi.json │ ├── fr_fr.json │ ├── hr_hr.json │ ├── it_it.json │ ├── ja_jp.json │ ├── ko_kr.json │ ├── pl_pl.json │ ├── pt_br.json │ ├── ru_ru.json │ ├── sv_se.json │ ├── uk_ua.json │ └── zh_cn.json │ ├── sounds │ └── records │ │ └── fox.ogg │ └── textures │ ├── block │ ├── glow_berry_basket_bottom.png │ ├── glow_berry_basket_side.png │ ├── glow_berry_basket_top.png │ ├── sweet_berry_basket_bottom.png │ ├── sweet_berry_basket_side.png │ └── sweet_berry_basket_top.png │ └── item │ ├── glow_berry_pips.png │ ├── glowgurt.png │ ├── music_disc_fox.png │ ├── sweet_berry_meatballs.png │ ├── sweet_berry_mince.png │ └── sweet_berry_pips.png ├── berry_good.mixins.json ├── logo.png └── pack.mcmeta /.gitattributes: -------------------------------------------------------------------------------- 1 | *.toml text eol=lf -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # eclipse 2 | bin 3 | *.launch 4 | .settings 5 | .metadata 6 | .classpath 7 | .project 8 | 9 | # idea 10 | out 11 | *.ipr 12 | *.iws 13 | *.iml 14 | .idea 15 | 16 | # gradle 17 | build 18 | .gradle 19 | 20 | # other 21 | eclipse 22 | run 23 | 24 | # Files from Forge MDK 25 | forge*changelog.txt 26 | logs 27 | .cache 28 | /runs/ 29 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | ABNORMALS LICENSE 2 | Version 1.0, June 2020 3 | 4 | Copyright (c) 2020 Minecraft Abnormals. All Rights Reserved. 5 | 6 | Permissions are hereby granted below to any person having a copy of 7 | this software and/or its associated files: 8 | 9 | Usage - You may use this software for private and public use. You may use this software as a library 10 | or integrate it with your code with the predicate being it must be downloaded from our sources and a soft or hard dependency. 11 | Copying - You may copy this software for private use or to contribute to this software. 12 | Modification - You may modify this software for private use or to contribute to this software. 13 | Publishing - You may not publish copies of this software. 14 | Distributing - You may not distribute this software. 15 | Sublicensing - You may not sublicense this software. 16 | Selling - You may not sell this software. 17 | 18 | Modpack Clarification: 19 | Permission is granted for Modpacks to include this software as long 20 | as the copy of this software in the pack is an unmodified public copy 21 | from our public sources and is marked as included in the Modpack. 22 | 23 | Definition of 'Our Sources' in this license: 24 | Our Sources in this license means a copy 25 | of this software or its associated files that come 26 | directly from the owners of this software, an example 27 | are the files uploaded by us on our Curse Page. 28 | 29 | The above copyright notice and these permission notices shall be included in all 30 | copies or substantial portions of the Software. 31 | 32 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 33 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 34 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 35 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 36 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 37 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 38 | SOFTWARE. -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id "java-library" 3 | id "idea" 4 | id "maven-publish" 5 | id "net.neoforged.gradle.userdev" version "7.0.182" 6 | } 7 | 8 | version = "${project.mc_version}-${project.mod_version}" 9 | group = "com.teamabnormals" 10 | 11 | base { 12 | archivesName = project.mod_id 13 | } 14 | 15 | java.toolchain.languageVersion = JavaLanguageVersion.of(21) 16 | 17 | runs { 18 | configureEach { 19 | systemProperty "forge.logging.markers", "REGISTRIES" 20 | systemProperty "forge.logging.console.level", "debug" 21 | } 22 | client { 23 | modSources { 24 | add project.sourceSets.main 25 | } 26 | } 27 | server { 28 | modSources { 29 | add project.sourceSets.main 30 | } 31 | } 32 | data { 33 | modSources { 34 | add project.sourceSets.main 35 | } 36 | arguments.addAll "--mod", project.mod_id, "--all", "--output", file("src/generated/resources/").getAbsolutePath(), "--existing", file("src/main/resources/").getAbsolutePath(), "--existing-mod", "blueprint" 37 | } 38 | } 39 | 40 | sourceSets.main.resources { 41 | srcDir "src/generated/resources" 42 | } 43 | 44 | dependencies { 45 | implementation "net.neoforged:neoforge:${project.neoforge}" 46 | implementation("com.teamabnormals:blueprint:${project.mc_version}-${project.blueprint}") 47 | 48 | compileOnly("mezz.jei:jei-${project.mc_version}-neoforge-api:${project.jei}") 49 | runtimeOnly("mezz.jei:jei-${project.mc_version}-neoforge:${project.jei}") 50 | } 51 | 52 | subsystems { 53 | parchment { 54 | minecraftVersion = "${project.mc_version}" 55 | mappingsVersion = "${project.parchment}" 56 | } 57 | } 58 | 59 | repositories { 60 | maven { url "https://maven.teamabnormals.com/" } 61 | maven { url = "https://maven.blamejared.com/" } 62 | maven { url = "https://modmaven.dev" } 63 | } 64 | 65 | tasks.withType(ProcessResources).configureEach { 66 | var replaceProperties = [mod_version: mod_version, mc_version: mc_version, neoforge: neoforge, blueprint: blueprint] 67 | inputs.properties replaceProperties 68 | filesMatching(["META-INF/neoforge.mods.toml"]) { 69 | expand replaceProperties 70 | } 71 | } 72 | 73 | tasks.named("jar", Jar).configure { 74 | manifest { 75 | attributes([ 76 | "Specification-Title" : project.mod_name, 77 | "Specification-Vendor" : "Team Abnormals", 78 | "Specification-Version" : "1", 79 | "Implementation-Title" : project.mod_name, 80 | "Implementation-Version" : project.mod_version, 81 | "Implementation-Vendor" : "Team Abnormals", 82 | "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") 83 | ]) 84 | } 85 | } 86 | 87 | idea { 88 | module { 89 | downloadSources = true 90 | downloadJavadoc = true 91 | } 92 | } -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx4G 2 | org.gradle.daemon=false 3 | org.gradle.caching=true 4 | org.gradle.parallel=true 5 | gradle.cache.push=false 6 | 7 | mod_name=Berry Good 8 | mod_id=berry_good 9 | mod_version=8.0.0 10 | mc_version=1.21.1 11 | 12 | neoforge=21.1.129 13 | parchment=2024.11.17 14 | blueprint=8.0.0 15 | jei=19.21.0.247 -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/team-abnormals/berry-good/30a9b1cf576024ce3a8b928d7a5de9c6e8395230/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Attempt to set APP_HOME 10 | # Resolve links: $0 may be a link 11 | PRG="$0" 12 | # Need this for relative symlinks. 13 | while [ -h "$PRG" ] ; do 14 | ls=`ls -ld "$PRG"` 15 | link=`expr "$ls" : '.*-> \(.*\)$'` 16 | if expr "$link" : '/.*' > /dev/null; then 17 | PRG="$link" 18 | else 19 | PRG=`dirname "$PRG"`"/$link" 20 | fi 21 | done 22 | SAVED="`pwd`" 23 | cd "`dirname \"$PRG\"`/" >/dev/null 24 | APP_HOME="`pwd -P`" 25 | cd "$SAVED" >/dev/null 26 | 27 | APP_NAME="Gradle" 28 | APP_BASE_NAME=`basename "$0"` 29 | 30 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 31 | DEFAULT_JVM_OPTS="" 32 | 33 | # Use the maximum available, or set MAX_FD != -1 to use that value. 34 | MAX_FD="maximum" 35 | 36 | warn () { 37 | echo "$*" 38 | } 39 | 40 | die () { 41 | echo 42 | echo "$*" 43 | echo 44 | exit 1 45 | } 46 | 47 | # OS specific support (must be 'true' or 'false'). 48 | cygwin=false 49 | msys=false 50 | darwin=false 51 | nonstop=false 52 | case "`uname`" in 53 | CYGWIN* ) 54 | cygwin=true 55 | ;; 56 | Darwin* ) 57 | darwin=true 58 | ;; 59 | MINGW* ) 60 | msys=true 61 | ;; 62 | NONSTOP* ) 63 | nonstop=true 64 | ;; 65 | esac 66 | 67 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 68 | 69 | # Determine the Java command to use to start the JVM. 70 | if [ -n "$JAVA_HOME" ] ; then 71 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 72 | # IBM's JDK on AIX uses strange locations for the executables 73 | JAVACMD="$JAVA_HOME/jre/sh/java" 74 | else 75 | JAVACMD="$JAVA_HOME/bin/java" 76 | fi 77 | if [ ! -x "$JAVACMD" ] ; then 78 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 79 | 80 | Please set the JAVA_HOME variable in your environment to match the 81 | location of your Java installation." 82 | fi 83 | else 84 | JAVACMD="java" 85 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 86 | 87 | Please set the JAVA_HOME variable in your environment to match the 88 | location of your Java installation." 89 | fi 90 | 91 | # Increase the maximum file descriptors if we can. 92 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then 93 | MAX_FD_LIMIT=`ulimit -H -n` 94 | if [ $? -eq 0 ] ; then 95 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 96 | MAX_FD="$MAX_FD_LIMIT" 97 | fi 98 | ulimit -n $MAX_FD 99 | if [ $? -ne 0 ] ; then 100 | warn "Could not set maximum file descriptor limit: $MAX_FD" 101 | fi 102 | else 103 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 104 | fi 105 | fi 106 | 107 | # For Darwin, add options to specify how the application appears in the dock 108 | if $darwin; then 109 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 110 | fi 111 | 112 | # For Cygwin, switch paths to Windows format before running java 113 | if $cygwin ; then 114 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 115 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 116 | JAVACMD=`cygpath --unix "$JAVACMD"` 117 | 118 | # We build the pattern for arguments to be converted via cygpath 119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 120 | SEP="" 121 | for dir in $ROOTDIRSRAW ; do 122 | ROOTDIRS="$ROOTDIRS$SEP$dir" 123 | SEP="|" 124 | done 125 | OURCYGPATTERN="(^($ROOTDIRS))" 126 | # Add a user-defined pattern to the cygpath arguments 127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 129 | fi 130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 131 | i=0 132 | for arg in "$@" ; do 133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 135 | 136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 138 | else 139 | eval `echo args$i`="\"$arg\"" 140 | fi 141 | i=$((i+1)) 142 | done 143 | case $i in 144 | (0) set -- ;; 145 | (1) set -- "$args0" ;; 146 | (2) set -- "$args0" "$args1" ;; 147 | (3) set -- "$args0" "$args1" "$args2" ;; 148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 154 | esac 155 | fi 156 | 157 | # Escape application args 158 | save () { 159 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done 160 | echo " " 161 | } 162 | APP_ARGS=$(save "$@") 163 | 164 | # Collect all arguments for the java command, following the shell quoting and substitution rules 165 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" 166 | 167 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong 168 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then 169 | cd "$(dirname "$0")" 170 | fi 171 | 172 | exec "$JAVACMD" "$@" 173 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | set DIRNAME=%~dp0 12 | if "%DIRNAME%" == "" set DIRNAME=. 13 | set APP_BASE_NAME=%~n0 14 | set APP_HOME=%DIRNAME% 15 | 16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 17 | set DEFAULT_JVM_OPTS= 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windows variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | 53 | :win9xME_args 54 | @rem Slurp the command line arguments. 55 | set CMD_LINE_ARGS= 56 | set _SKIP=2 57 | 58 | :win9xME_args_slurp 59 | if "x%~1" == "x" goto execute 60 | 61 | set CMD_LINE_ARGS=%* 62 | 63 | :execute 64 | @rem Setup the command line 65 | 66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 67 | 68 | @rem Execute Gradle 69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 70 | 71 | :end 72 | @rem End local scope for the variables with windows NT shell 73 | if "%ERRORLEVEL%"=="0" goto mainEnd 74 | 75 | :fail 76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 77 | rem the _cmd.exe /c_ return code! 78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 79 | exit /b 1 80 | 81 | :mainEnd 82 | if "%OS%"=="Windows_NT" endlocal 83 | 84 | :omega 85 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenLocal() 4 | gradlePluginPortal() 5 | maven { url = "https://maven.neoforged.net/releases" } 6 | } 7 | } 8 | 9 | plugins { 10 | id "org.gradle.toolchains.foojay-resolver-convention" version "0.8.0" 11 | } -------------------------------------------------------------------------------- /src/generated/resources/assets/berry_good/blockstates/glow_berry_basket.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "facing=down": { 4 | "model": "berry_good:block/glow_berry_basket", 5 | "x": 180 6 | }, 7 | "facing=east": { 8 | "model": "berry_good:block/glow_berry_basket", 9 | "x": 90, 10 | "y": 90 11 | }, 12 | "facing=north": { 13 | "model": "berry_good:block/glow_berry_basket", 14 | "x": 90 15 | }, 16 | "facing=south": { 17 | "model": "berry_good:block/glow_berry_basket", 18 | "x": 90, 19 | "y": 180 20 | }, 21 | "facing=up": { 22 | "model": "berry_good:block/glow_berry_basket" 23 | }, 24 | "facing=west": { 25 | "model": "berry_good:block/glow_berry_basket", 26 | "x": 90, 27 | "y": 270 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /src/generated/resources/assets/berry_good/blockstates/sweet_berry_basket.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "facing=down": { 4 | "model": "berry_good:block/sweet_berry_basket", 5 | "x": 180 6 | }, 7 | "facing=east": { 8 | "model": "berry_good:block/sweet_berry_basket", 9 | "x": 90, 10 | "y": 90 11 | }, 12 | "facing=north": { 13 | "model": "berry_good:block/sweet_berry_basket", 14 | "x": 90 15 | }, 16 | "facing=south": { 17 | "model": "berry_good:block/sweet_berry_basket", 18 | "x": 90, 19 | "y": 180 20 | }, 21 | "facing=up": { 22 | "model": "berry_good:block/sweet_berry_basket" 23 | }, 24 | "facing=west": { 25 | "model": "berry_good:block/sweet_berry_basket", 26 | "x": 90, 27 | "y": 270 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /src/generated/resources/assets/berry_good/lang/en_us.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.glow_berry_basket": "Basket of Glow Berries", 3 | "block.berry_good.sweet_berry_basket": "Basket of Sweet Berries", 4 | "item.berry_good.glow_berry_pips": "Glow Berry Pips", 5 | "item.berry_good.glowgurt": "Glowgurt", 6 | "item.berry_good.music_disc_fox": "Music Disc", 7 | "item.berry_good.sweet_berry_meatballs": "Sweet Berry Meatballs", 8 | "item.berry_good.sweet_berry_mince": "Sweet Berry Mince", 9 | "item.berry_good.sweet_berry_pips": "Sweet Berry Pips", 10 | "jukebox_song.berry_good.fox": "RENREN - Fox" 11 | } -------------------------------------------------------------------------------- /src/generated/resources/assets/berry_good/models/block/glow_berry_basket.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:block/cube_bottom_top", 3 | "textures": { 4 | "bottom": "berry_good:block/glow_berry_basket_bottom", 5 | "side": "berry_good:block/glow_berry_basket_side", 6 | "top": "berry_good:block/glow_berry_basket_top" 7 | } 8 | } -------------------------------------------------------------------------------- /src/generated/resources/assets/berry_good/models/block/sweet_berry_basket.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:block/cube_bottom_top", 3 | "textures": { 4 | "bottom": "berry_good:block/sweet_berry_basket_bottom", 5 | "side": "berry_good:block/sweet_berry_basket_side", 6 | "top": "berry_good:block/sweet_berry_basket_top" 7 | } 8 | } -------------------------------------------------------------------------------- /src/generated/resources/assets/berry_good/models/item/glow_berry_basket.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "berry_good:block/glow_berry_basket" 3 | } -------------------------------------------------------------------------------- /src/generated/resources/assets/berry_good/models/item/glow_berry_pips.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "berry_good:item/glow_berry_pips" 5 | } 6 | } -------------------------------------------------------------------------------- /src/generated/resources/assets/berry_good/models/item/glowgurt.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "berry_good:item/glowgurt" 5 | } 6 | } -------------------------------------------------------------------------------- /src/generated/resources/assets/berry_good/models/item/music_disc_fox.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "berry_good:item/music_disc_fox" 5 | } 6 | } -------------------------------------------------------------------------------- /src/generated/resources/assets/berry_good/models/item/sweet_berry_basket.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "berry_good:block/sweet_berry_basket" 3 | } -------------------------------------------------------------------------------- /src/generated/resources/assets/berry_good/models/item/sweet_berry_meatballs.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "berry_good:item/sweet_berry_meatballs" 5 | } 6 | } -------------------------------------------------------------------------------- /src/generated/resources/assets/berry_good/models/item/sweet_berry_mince.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "berry_good:item/sweet_berry_mince" 5 | } 6 | } -------------------------------------------------------------------------------- /src/generated/resources/assets/berry_good/models/item/sweet_berry_pips.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "berry_good:item/sweet_berry_pips" 5 | } 6 | } -------------------------------------------------------------------------------- /src/generated/resources/assets/berry_good/sounds.json: -------------------------------------------------------------------------------- 1 | { 2 | "music_disc.fox": { 3 | "sounds": [ 4 | { 5 | "name": "berry_good:records/fox", 6 | "stream": true 7 | } 8 | ] 9 | } 10 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/advancement/recipes/decorations/glow_berry_basket.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_glow_berries": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "minecraft:glow_berries" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "berry_good:glow_berry_basket" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_glow_berries" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "berry_good:glow_berry_basket" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/advancement/recipes/decorations/sweet_berry_basket.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_sweet_berries": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "minecraft:sweet_berries" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "berry_good:sweet_berry_basket" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_sweet_berries" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "berry_good:sweet_berry_basket" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/advancement/recipes/food/glow_berries.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_glow_berry_basket": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "berry_good:glow_berry_basket" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "berry_good:glow_berries" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_glow_berry_basket" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "berry_good:glow_berries" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/advancement/recipes/food/glowgurt.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_glow_berries": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "minecraft:glow_berries" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "berry_good:glowgurt" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_glow_berries" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "berry_good:glowgurt" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/advancement/recipes/food/sweet_berries.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_sweet_berry_basket": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "berry_good:sweet_berry_basket" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "berry_good:sweet_berries" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_sweet_berry_basket" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "berry_good:sweet_berries" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/advancement/recipes/food/sweet_berry_meatballs.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_sweet_berry_mince": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "berry_good:sweet_berry_mince" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "berry_good:sweet_berry_meatballs" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_sweet_berry_mince" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "berry_good:sweet_berry_meatballs" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/advancement/recipes/food/sweet_berry_meatballs_from_campfire_cooking.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_sweet_berry_mince": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "berry_good:sweet_berry_mince" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "berry_good:sweet_berry_meatballs_from_campfire_cooking" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_sweet_berry_mince" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "berry_good:sweet_berry_meatballs_from_campfire_cooking" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/advancement/recipes/food/sweet_berry_meatballs_from_smoking.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_sweet_berry_mince": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "berry_good:sweet_berry_mince" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "berry_good:sweet_berry_meatballs_from_smoking" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_sweet_berry_mince" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "berry_good:sweet_berry_meatballs_from_smoking" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/advancement/recipes/food/sweet_berry_mince.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_sweet_berries": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "minecraft:sweet_berries" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "berry_good:sweet_berry_mince" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_sweet_berries" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "berry_good:sweet_berry_mince" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/advancement/recipes/misc/glow_berry_pips_from_glow_berries.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_glow_berries": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "minecraft:glow_berries" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "berry_good:glow_berry_pips_from_glow_berries" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_glow_berries" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "berry_good:glow_berry_pips_from_glow_berries" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/advancement/recipes/misc/sweet_berry_pips_from_sweet_berries.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:recipes/root", 3 | "criteria": { 4 | "has_sweet_berries": { 5 | "conditions": { 6 | "items": [ 7 | { 8 | "items": "minecraft:sweet_berries" 9 | } 10 | ] 11 | }, 12 | "trigger": "minecraft:inventory_changed" 13 | }, 14 | "has_the_recipe": { 15 | "conditions": { 16 | "recipe": "berry_good:sweet_berry_pips_from_sweet_berries" 17 | }, 18 | "trigger": "minecraft:recipe_unlocked" 19 | } 20 | }, 21 | "requirements": [ 22 | [ 23 | "has_the_recipe", 24 | "has_sweet_berries" 25 | ] 26 | ], 27 | "rewards": { 28 | "recipes": [ 29 | "berry_good:sweet_berry_pips_from_sweet_berries" 30 | ] 31 | } 32 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/jukebox_song/fox.json: -------------------------------------------------------------------------------- 1 | { 2 | "comparator_output": 2, 3 | "description": { 4 | "translate": "jukebox_song.berry_good.fox" 5 | }, 6 | "length_in_seconds": 116.0, 7 | "sound_event": "berry_good:music_disc.fox" 8 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/loot_table/blocks/glow_berry_basket.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:block", 3 | "pools": [ 4 | { 5 | "bonus_rolls": 0.0, 6 | "conditions": [ 7 | { 8 | "condition": "minecraft:survives_explosion" 9 | } 10 | ], 11 | "entries": [ 12 | { 13 | "type": "minecraft:item", 14 | "name": "berry_good:glow_berry_basket" 15 | } 16 | ], 17 | "rolls": 1.0 18 | } 19 | ], 20 | "random_sequence": "berry_good:blocks/glow_berry_basket" 21 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/loot_table/blocks/sweet_berry_basket.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:block", 3 | "pools": [ 4 | { 5 | "bonus_rolls": 0.0, 6 | "conditions": [ 7 | { 8 | "condition": "minecraft:survives_explosion" 9 | } 10 | ], 11 | "entries": [ 12 | { 13 | "type": "minecraft:item", 14 | "name": "berry_good:sweet_berry_basket" 15 | } 16 | ], 17 | "rolls": 1.0 18 | } 19 | ], 20 | "random_sequence": "berry_good:blocks/sweet_berry_basket" 21 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/modifiers/advancements/husbandry/balanced_diet.json: -------------------------------------------------------------------------------- 1 | { 2 | "modifiers": [ 3 | { 4 | "type": "criteria", 5 | "config": { 6 | "criteria": { 7 | "berry_good:glowgurt": { 8 | "conditions": { 9 | "item": { 10 | "items": "berry_good:glowgurt" 11 | } 12 | }, 13 | "trigger": "minecraft:consume_item" 14 | }, 15 | "berry_good:sweet_berry_meatballs": { 16 | "conditions": { 17 | "item": { 18 | "items": "berry_good:sweet_berry_meatballs" 19 | } 20 | }, 21 | "trigger": "minecraft:consume_item" 22 | }, 23 | "berry_good:sweet_berry_mince": { 24 | "conditions": { 25 | "item": { 26 | "items": "berry_good:sweet_berry_mince" 27 | } 28 | }, 29 | "trigger": "minecraft:consume_item" 30 | } 31 | }, 32 | "indexed_requirements": [], 33 | "requirements": [ 34 | [ 35 | "berry_good:sweet_berry_mince" 36 | ], 37 | [ 38 | "berry_good:sweet_berry_meatballs" 39 | ], 40 | [ 41 | "berry_good:glowgurt" 42 | ] 43 | ], 44 | "should_replace_requirements": false 45 | } 46 | } 47 | ], 48 | "priority": "normal", 49 | "selector": "minecraft:husbandry/balanced_diet" 50 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/modifiers/advancements/husbandry/plant_seed.json: -------------------------------------------------------------------------------- 1 | { 2 | "modifiers": [ 3 | { 4 | "type": "criteria", 5 | "config": { 6 | "criteria": { 7 | "berry_good:cave_vines": { 8 | "conditions": { 9 | "location": [ 10 | { 11 | "block": "minecraft:cave_vines", 12 | "condition": "minecraft:block_state_property" 13 | } 14 | ] 15 | }, 16 | "trigger": "minecraft:placed_block" 17 | }, 18 | "berry_good:sweet_berry_bush": { 19 | "conditions": { 20 | "location": [ 21 | { 22 | "block": "minecraft:sweet_berry_bush", 23 | "condition": "minecraft:block_state_property" 24 | } 25 | ] 26 | }, 27 | "trigger": "minecraft:placed_block" 28 | } 29 | }, 30 | "indexed_requirements": [ 31 | { 32 | "index": 0, 33 | "replace": false, 34 | "requirements": [ 35 | "berry_good:sweet_berry_bush", 36 | "berry_good:cave_vines" 37 | ] 38 | } 39 | ], 40 | "should_replace_requirements": false 41 | } 42 | } 43 | ], 44 | "priority": "normal", 45 | "selector": "minecraft:husbandry/plant_seed" 46 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/recipe/glow_berries.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shapeless", 3 | "category": "misc", 4 | "ingredients": [ 5 | { 6 | "item": "berry_good:glow_berry_basket" 7 | } 8 | ], 9 | "result": { 10 | "count": 9, 11 | "id": "minecraft:glow_berries" 12 | } 13 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/recipe/glow_berry_basket.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "category": "misc", 4 | "key": { 5 | "#": { 6 | "item": "minecraft:glow_berries" 7 | } 8 | }, 9 | "pattern": [ 10 | "###", 11 | "###", 12 | "###" 13 | ], 14 | "result": { 15 | "count": 1, 16 | "id": "berry_good:glow_berry_basket" 17 | } 18 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/recipe/glow_berry_pips_from_glow_berries.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shapeless", 3 | "category": "misc", 4 | "ingredients": [ 5 | { 6 | "item": "minecraft:glow_berries" 7 | } 8 | ], 9 | "result": { 10 | "count": 1, 11 | "id": "berry_good:glow_berry_pips" 12 | } 13 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/recipe/glowgurt.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shapeless", 3 | "category": "misc", 4 | "ingredients": [ 5 | { 6 | "item": "minecraft:bowl" 7 | }, 8 | { 9 | "item": "minecraft:glow_berries" 10 | }, 11 | { 12 | "item": "minecraft:glow_berries" 13 | }, 14 | { 15 | "item": "minecraft:sugar" 16 | }, 17 | { 18 | "tag": "c:milk" 19 | } 20 | ], 21 | "result": { 22 | "count": 1, 23 | "id": "berry_good:glowgurt" 24 | } 25 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/recipe/sweet_berries.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shapeless", 3 | "category": "misc", 4 | "ingredients": [ 5 | { 6 | "item": "berry_good:sweet_berry_basket" 7 | } 8 | ], 9 | "result": { 10 | "count": 9, 11 | "id": "minecraft:sweet_berries" 12 | } 13 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/recipe/sweet_berry_basket.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shaped", 3 | "category": "misc", 4 | "key": { 5 | "#": { 6 | "item": "minecraft:sweet_berries" 7 | } 8 | }, 9 | "pattern": [ 10 | "###", 11 | "###", 12 | "###" 13 | ], 14 | "result": { 15 | "count": 1, 16 | "id": "berry_good:sweet_berry_basket" 17 | } 18 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/recipe/sweet_berry_meatballs.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:smelting", 3 | "category": "food", 4 | "cookingtime": 200, 5 | "experience": 0.35, 6 | "ingredient": { 7 | "item": "berry_good:sweet_berry_mince" 8 | }, 9 | "result": { 10 | "count": 1, 11 | "id": "berry_good:sweet_berry_meatballs" 12 | } 13 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/recipe/sweet_berry_meatballs_from_campfire_cooking.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:campfire_cooking", 3 | "category": "food", 4 | "cookingtime": 600, 5 | "experience": 0.35, 6 | "ingredient": { 7 | "item": "berry_good:sweet_berry_mince" 8 | }, 9 | "result": { 10 | "count": 1, 11 | "id": "berry_good:sweet_berry_meatballs" 12 | } 13 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/recipe/sweet_berry_meatballs_from_smoking.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:smoking", 3 | "category": "food", 4 | "cookingtime": 100, 5 | "experience": 0.35, 6 | "ingredient": { 7 | "item": "berry_good:sweet_berry_mince" 8 | }, 9 | "result": { 10 | "count": 1, 11 | "id": "berry_good:sweet_berry_meatballs" 12 | } 13 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/recipe/sweet_berry_mince.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shapeless", 3 | "category": "misc", 4 | "ingredients": [ 5 | { 6 | "item": "minecraft:sweet_berries" 7 | }, 8 | { 9 | "item": "minecraft:porkchop" 10 | } 11 | ], 12 | "result": { 13 | "count": 1, 14 | "id": "berry_good:sweet_berry_mince" 15 | } 16 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/recipe/sweet_berry_pips_from_sweet_berries.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft:crafting_shapeless", 3 | "category": "misc", 4 | "ingredients": [ 5 | { 6 | "item": "minecraft:sweet_berries" 7 | } 8 | ], 9 | "result": { 10 | "count": 1, 11 | "id": "berry_good:sweet_berry_pips" 12 | } 13 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/remolders/cave_vines.json: -------------------------------------------------------------------------------- 1 | { 2 | "molding": "json", 3 | "remolder": { 4 | "type": "add", 5 | "target": "pools[]", 6 | "value": { 7 | "bonus_rolls": 0.0, 8 | "entries": [ 9 | { 10 | "type": "minecraft:item", 11 | "name": "berry_good:glow_berry_pips" 12 | } 13 | ], 14 | "name": "berry_good:glow_berry_pips", 15 | "rolls": 1.0 16 | } 17 | }, 18 | "selector": "minecraft:loot_table/blocks/cave_vines" 19 | } -------------------------------------------------------------------------------- /src/generated/resources/data/berry_good/remolders/sweet_berry_bush.json: -------------------------------------------------------------------------------- 1 | { 2 | "molding": "json", 3 | "remolder": { 4 | "type": "add", 5 | "target": "pools[]", 6 | "value": { 7 | "bonus_rolls": 0.0, 8 | "entries": [ 9 | { 10 | "type": "minecraft:item", 11 | "name": "berry_good:sweet_berry_pips" 12 | } 13 | ], 14 | "name": "berry_good:sweet_berry_pips", 15 | "rolls": 1.0 16 | } 17 | }, 18 | "selector": "minecraft:loot_table/blocks/sweet_berry_bush" 19 | } -------------------------------------------------------------------------------- /src/generated/resources/data/c/tags/block/storage_blocks.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "#c:storage_blocks/sweet_berry", 4 | "#c:storage_blocks/glow_berry" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/generated/resources/data/c/tags/block/storage_blocks/glow_berry.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "berry_good:glow_berry_basket" 4 | ] 5 | } -------------------------------------------------------------------------------- /src/generated/resources/data/c/tags/block/storage_blocks/sweet_berry.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "berry_good:sweet_berry_basket" 4 | ] 5 | } -------------------------------------------------------------------------------- /src/generated/resources/data/c/tags/item/foods.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "berry_good:glowgurt" 4 | ] 5 | } -------------------------------------------------------------------------------- /src/generated/resources/data/c/tags/item/foods/cooked_meat.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "berry_good:sweet_berry_meatballs" 4 | ] 5 | } -------------------------------------------------------------------------------- /src/generated/resources/data/c/tags/item/foods/raw_meat.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "berry_good:sweet_berry_mince" 4 | ] 5 | } -------------------------------------------------------------------------------- /src/generated/resources/data/c/tags/item/music_discs.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "berry_good:music_disc_fox" 4 | ] 5 | } -------------------------------------------------------------------------------- /src/generated/resources/data/c/tags/item/seeds.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "#c:seeds/sweet_berry", 4 | "#c:seeds/glow_berry" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/generated/resources/data/c/tags/item/seeds/glow_berry.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "berry_good:glow_berry_pips" 4 | ] 5 | } -------------------------------------------------------------------------------- /src/generated/resources/data/c/tags/item/seeds/sweet_berry.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "berry_good:sweet_berry_pips" 4 | ] 5 | } -------------------------------------------------------------------------------- /src/generated/resources/data/c/tags/item/storage_blocks.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "#c:storage_blocks/sweet_berry", 4 | "#c:storage_blocks/glow_berry" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/generated/resources/data/c/tags/item/storage_blocks/glow_berry.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "berry_good:glow_berry_basket" 4 | ] 5 | } -------------------------------------------------------------------------------- /src/generated/resources/data/c/tags/item/storage_blocks/sweet_berry.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "berry_good:sweet_berry_basket" 4 | ] 5 | } -------------------------------------------------------------------------------- /src/generated/resources/data/minecraft/tags/block/mineable/axe.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "berry_good:sweet_berry_basket", 4 | "berry_good:glow_berry_basket" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/generated/resources/data/minecraft/tags/item/chicken_food.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "berry_good:sweet_berry_pips", 4 | "berry_good:glow_berry_pips" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/generated/resources/data/minecraft/tags/item/meat.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "berry_good:sweet_berry_mince", 4 | "berry_good:sweet_berry_pips" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/generated/resources/data/minecraft/tags/item/parrot_food.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": [ 3 | "berry_good:sweet_berry_pips", 4 | "berry_good:glow_berry_pips" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/generated/resources/data/neoforge/data_maps/item/compostables.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": { 3 | "berry_good:glow_berry_basket": { 4 | "chance": 1.0 5 | }, 6 | "berry_good:glow_berry_pips": { 7 | "chance": 0.3 8 | }, 9 | "berry_good:sweet_berry_basket": { 10 | "chance": 1.0 11 | }, 12 | "berry_good:sweet_berry_pips": { 13 | "chance": 0.3 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/BGConfig.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core; 2 | 3 | import net.neoforged.neoforge.common.ModConfigSpec; 4 | import net.neoforged.neoforge.common.ModConfigSpec.ConfigValue; 5 | import org.apache.commons.lang3.tuple.Pair; 6 | 7 | public class BGConfig { 8 | 9 | public static class Common { 10 | public final ConfigValue sweetBerriesRequirePips; 11 | public final ConfigValue glowBerriesRequirePips; 12 | public final ConfigValue glowBerriesGiveGlowing; 13 | 14 | public final ConfigValue foxMusicDisc; 15 | public final ConfigValue foxMusicDiscChance; 16 | 17 | Common(ModConfigSpec.Builder builder) { 18 | builder.push("tweaks"); 19 | builder.push("sweet_berries"); 20 | sweetBerriesRequirePips = builder.comment("If Sweet Berry Bushes require pips to place, to prevent accidental placement").define("Sweet Berries require pips", true); 21 | builder.pop(); 22 | builder.push("glow_berries"); 23 | glowBerriesRequirePips = builder.comment("If Cave Vines require pips to place, to prevent accidental placement").define("Glow Berries require pips", true); 24 | glowBerriesGiveGlowing = builder.comment("If Glow Berries give Glowing upon consumption").define("Glow Berries give Glowing", true); 25 | builder.pop(); 26 | builder.pop(); 27 | 28 | builder.push("items"); 29 | builder.push("music_disc_fox"); 30 | foxMusicDisc = builder.comment("If Foxes can spawn with a Fox music disc").define("Enable Fox music disc", true); 31 | foxMusicDiscChance = builder.comment("The chance that a Fox has to spawn with a Fox music disc").define("Fox music disc chance", 0.01D); 32 | builder.pop(); 33 | builder.pop(); 34 | } 35 | } 36 | 37 | public static final ModConfigSpec COMMON_SPEC; 38 | public static final Common COMMON; 39 | 40 | static { 41 | final Pair commonSpecPair = new ModConfigSpec.Builder().configure(Common::new); 42 | COMMON_SPEC = commonSpecPair.getRight(); 43 | COMMON = commonSpecPair.getLeft(); 44 | } 45 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/BerryGood.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core; 2 | 3 | import com.teamabnormals.berry_good.core.data.client.BGBlockStateProvider; 4 | import com.teamabnormals.berry_good.core.data.client.BGItemModelProvider; 5 | import com.teamabnormals.berry_good.core.data.client.BGLanguageProvider; 6 | import com.teamabnormals.berry_good.core.data.client.BGSoundDefinitionsProvider; 7 | import com.teamabnormals.berry_good.core.data.server.*; 8 | import com.teamabnormals.berry_good.core.data.server.modifiers.BGAdvancementModifierProvider; 9 | import com.teamabnormals.berry_good.core.data.server.tags.BGBlockTagsProvider; 10 | import com.teamabnormals.berry_good.core.data.server.tags.BGItemTagsProvider; 11 | import com.teamabnormals.berry_good.core.other.BGCompat; 12 | import com.teamabnormals.berry_good.core.registry.BGBlocks; 13 | import com.teamabnormals.berry_good.core.registry.BGItems; 14 | import com.teamabnormals.berry_good.core.registry.BGSoundEvents; 15 | import com.teamabnormals.blueprint.core.util.registry.RegistryHelper; 16 | import net.minecraft.core.HolderLookup.Provider; 17 | import net.minecraft.data.DataGenerator; 18 | import net.minecraft.data.PackOutput; 19 | import net.minecraft.resources.ResourceLocation; 20 | import net.neoforged.api.distmarker.Dist; 21 | import net.neoforged.bus.api.IEventBus; 22 | import net.neoforged.fml.ModContainer; 23 | import net.neoforged.fml.common.Mod; 24 | import net.neoforged.fml.config.ModConfig; 25 | import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; 26 | import net.neoforged.fml.loading.FMLEnvironment; 27 | import net.neoforged.neoforge.common.data.ExistingFileHelper; 28 | import net.neoforged.neoforge.data.event.GatherDataEvent; 29 | 30 | import java.util.concurrent.CompletableFuture; 31 | 32 | @Mod(BerryGood.MOD_ID) 33 | public class BerryGood { 34 | public static final String MOD_ID = "berry_good"; 35 | public static final RegistryHelper REGISTRY_HELPER = new RegistryHelper(MOD_ID); 36 | 37 | public BerryGood(IEventBus bus, ModContainer container) { 38 | BGBlocks.BLOCKS.register(bus); 39 | BGItems.ITEMS.register(bus); 40 | BGSoundEvents.SOUND_EVENTS.register(bus); 41 | 42 | bus.addListener(this::commonSetup); 43 | bus.addListener(this::dataSetup); 44 | 45 | if (FMLEnvironment.dist == Dist.CLIENT) { 46 | BGItems.setupTabEditors(); 47 | } 48 | 49 | container.registerConfig(ModConfig.Type.COMMON, BGConfig.COMMON_SPEC); 50 | } 51 | 52 | private void commonSetup(FMLCommonSetupEvent event) { 53 | event.enqueueWork(BGCompat::registerCompat); 54 | } 55 | 56 | private void dataSetup(GatherDataEvent event) { 57 | DataGenerator generator = event.getGenerator(); 58 | PackOutput output = generator.getPackOutput(); 59 | CompletableFuture provider = event.getLookupProvider(); 60 | ExistingFileHelper helper = event.getExistingFileHelper(); 61 | 62 | boolean server = event.includeServer(); 63 | BGDatapackProvider datapack = new BGDatapackProvider(output, provider); 64 | generator.addProvider(server, datapack); 65 | provider = datapack.getRegistryProvider(); 66 | 67 | BGBlockTagsProvider blockTags = new BGBlockTagsProvider(output, provider, helper); 68 | generator.addProvider(server, blockTags); 69 | generator.addProvider(server, new BGItemTagsProvider(output, provider, blockTags.contentsGetter(), helper)); 70 | generator.addProvider(server, new BGRecipeProvider(output, provider)); 71 | generator.addProvider(server, new BGLootTableProvider(output, provider)); 72 | generator.addProvider(server, new BGDataMapProvider(output, provider)); 73 | generator.addProvider(server, new BGDataRemolderProvider(output, provider)); 74 | generator.addProvider(server, new BGAdvancementModifierProvider(output, provider)); 75 | 76 | boolean client = event.includeClient(); 77 | generator.addProvider(client, new BGBlockStateProvider(output, helper)); 78 | generator.addProvider(client, new BGItemModelProvider(output, helper)); 79 | generator.addProvider(client, new BGLanguageProvider(output)); 80 | generator.addProvider(client, new BGSoundDefinitionsProvider(output, helper)); 81 | } 82 | 83 | public static ResourceLocation location(String path) { 84 | return ResourceLocation.fromNamespaceAndPath(MOD_ID, path); 85 | } 86 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/data/client/BGBlockStateProvider.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.data.client; 2 | 3 | import com.teamabnormals.berry_good.core.BerryGood; 4 | import com.teamabnormals.berry_good.core.registry.BGBlocks; 5 | import com.teamabnormals.blueprint.core.data.client.BlueprintBlockStateProvider; 6 | import net.minecraft.data.PackOutput; 7 | import net.neoforged.neoforge.common.data.ExistingFileHelper; 8 | 9 | public class BGBlockStateProvider extends BlueprintBlockStateProvider { 10 | 11 | public BGBlockStateProvider(PackOutput output, ExistingFileHelper helper) { 12 | super(output, BerryGood.MOD_ID, helper); 13 | } 14 | 15 | @Override 16 | protected void registerStatesAndModels() { 17 | this.directionalBlock(BGBlocks.SWEET_BERRY_BASKET); 18 | this.directionalBlock(BGBlocks.GLOW_BERRY_BASKET); 19 | } 20 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/data/client/BGItemModelProvider.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.data.client; 2 | 3 | import com.teamabnormals.berry_good.core.BerryGood; 4 | import com.teamabnormals.berry_good.core.registry.BGItems; 5 | import com.teamabnormals.blueprint.core.data.client.BlueprintItemModelProvider; 6 | import net.minecraft.data.PackOutput; 7 | import net.neoforged.neoforge.common.data.ExistingFileHelper; 8 | 9 | public class BGItemModelProvider extends BlueprintItemModelProvider { 10 | 11 | public BGItemModelProvider(PackOutput output, ExistingFileHelper helper) { 12 | super(output, BerryGood.MOD_ID, helper); 13 | } 14 | 15 | @Override 16 | protected void registerModels() { 17 | this.generatedItem( 18 | BGItems.SWEET_BERRY_PIPS, BGItems.GLOW_BERRY_PIPS, 19 | BGItems.SWEET_BERRY_MINCE, BGItems.SWEET_BERRY_MEATBALLS, 20 | BGItems.GLOWGURT, 21 | BGItems.MUSIC_DISC_FOX 22 | ); 23 | } 24 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/data/client/BGLanguageProvider.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.data.client; 2 | 3 | import com.teamabnormals.berry_good.core.BerryGood; 4 | import com.teamabnormals.berry_good.core.registry.BGBlocks; 5 | import com.teamabnormals.berry_good.core.registry.BGItems; 6 | import com.teamabnormals.berry_good.core.registry.datapack.BGJukeboxSongs; 7 | import net.minecraft.core.registries.BuiltInRegistries; 8 | import net.minecraft.data.PackOutput; 9 | import net.minecraft.resources.ResourceKey; 10 | import net.minecraft.resources.ResourceLocation; 11 | import net.minecraft.world.item.Item; 12 | import net.minecraft.world.item.JukeboxSong; 13 | import net.neoforged.neoforge.common.data.LanguageProvider; 14 | import org.apache.commons.lang3.text.WordUtils; 15 | 16 | public class BGLanguageProvider extends LanguageProvider { 17 | 18 | public BGLanguageProvider(PackOutput output) { 19 | super(output, BerryGood.MOD_ID, "en_us"); 20 | } 21 | 22 | @Override 23 | protected void addTranslations() { 24 | this.add(BGBlocks.SWEET_BERRY_BASKET.get(), "Basket of Sweet Berries"); 25 | this.add(BGBlocks.GLOW_BERRY_BASKET.get(), "Basket of Glow Berries"); 26 | this.add( 27 | BGItems.SWEET_BERRY_PIPS.get(), BGItems.SWEET_BERRY_MINCE.get(), BGItems.SWEET_BERRY_MEATBALLS.get(), 28 | BGItems.GLOW_BERRY_PIPS.get(), BGItems.GLOWGURT.get() 29 | ); 30 | this.addDisc(BGItems.MUSIC_DISC_FOX.get(), BGJukeboxSongs.FOX, "RENREN - Fox"); 31 | } 32 | 33 | private void add(Item... items) { 34 | for (Item item : items) { 35 | this.add(item, format(BuiltInRegistries.ITEM.getKey(item))); 36 | } 37 | } 38 | 39 | private void addDisc(Item item, ResourceKey song, String description) { 40 | this.add(item, "Music Disc"); 41 | ResourceLocation key = song.location(); 42 | this.add("jukebox_song." + key.getNamespace() + "." + key.getPath(), description); 43 | } 44 | 45 | private String format(ResourceLocation registryName) { 46 | return WordUtils.capitalizeFully(registryName.getPath().replace("_", " ")); 47 | } 48 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/data/client/BGSoundDefinitionsProvider.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.data.client; 2 | 3 | import com.teamabnormals.berry_good.core.BerryGood; 4 | import com.teamabnormals.berry_good.core.registry.BGSoundEvents; 5 | import net.minecraft.data.PackOutput; 6 | import net.neoforged.neoforge.common.data.ExistingFileHelper; 7 | import net.neoforged.neoforge.common.data.SoundDefinitionsProvider; 8 | 9 | public class BGSoundDefinitionsProvider extends SoundDefinitionsProvider { 10 | 11 | public BGSoundDefinitionsProvider(PackOutput output, ExistingFileHelper fileHelper) { 12 | super(output, BerryGood.MOD_ID, fileHelper); 13 | } 14 | 15 | @Override 16 | public void registerSounds() { 17 | this.add(BGSoundEvents.MUSIC_DISC_FOX.get(), definition().with(sound(BerryGood.location("records/fox")).stream())); 18 | } 19 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/data/server/BGDataMapProvider.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.data.server; 2 | 3 | import com.teamabnormals.berry_good.core.registry.BGBlocks; 4 | import com.teamabnormals.berry_good.core.registry.BGItems; 5 | import net.minecraft.core.HolderLookup.Provider; 6 | import net.minecraft.data.PackOutput; 7 | import net.neoforged.neoforge.common.data.DataMapProvider; 8 | import net.neoforged.neoforge.registries.datamaps.builtin.Compostable; 9 | import net.neoforged.neoforge.registries.datamaps.builtin.NeoForgeDataMaps; 10 | 11 | import java.util.concurrent.CompletableFuture; 12 | 13 | public class BGDataMapProvider extends DataMapProvider { 14 | 15 | public BGDataMapProvider(PackOutput output, CompletableFuture provider) { 16 | super(output, provider); 17 | } 18 | 19 | @Override 20 | protected void gather(Provider provider) { 21 | this.builder(NeoForgeDataMaps.COMPOSTABLES) 22 | .add(BGBlocks.SWEET_BERRY_BASKET.getId(), new Compostable(1.0F), false) 23 | .add(BGBlocks.GLOW_BERRY_BASKET.getId(), new Compostable(1.0F), false) 24 | .add(BGItems.SWEET_BERRY_PIPS, new Compostable(0.3F), false) 25 | .add(BGItems.GLOW_BERRY_PIPS, new Compostable(0.3F), false); 26 | } 27 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/data/server/BGDataRemolderProvider.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.data.server; 2 | 3 | import com.teamabnormals.berry_good.core.BerryGood; 4 | import com.teamabnormals.berry_good.core.registry.BGItems; 5 | import com.teamabnormals.blueprint.common.remolder.data.RemolderProvider; 6 | import com.teamabnormals.blueprint.common.remolder.util.LootRemolders; 7 | import net.minecraft.core.HolderLookup.Provider; 8 | import net.minecraft.data.PackOutput; 9 | import net.minecraft.data.PackOutput.Target; 10 | import net.minecraft.world.level.storage.loot.LootPool; 11 | import net.minecraft.world.level.storage.loot.entries.LootItem; 12 | import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; 13 | 14 | import java.util.concurrent.CompletableFuture; 15 | 16 | public class BGDataRemolderProvider extends RemolderProvider { 17 | 18 | public BGDataRemolderProvider(PackOutput output, CompletableFuture provider) { 19 | super(BerryGood.MOD_ID, Target.DATA_PACK, output, provider); 20 | } 21 | 22 | @Override 23 | protected void registerEntries(Provider provider) { 24 | this.entry("sweet_berry_bush").path("minecraft:loot_table/blocks/sweet_berry_bush").remolder(LootRemolders.addPool(LootPool.lootPool() 25 | .name(BerryGood.MOD_ID + ":sweet_berry_pips") 26 | .setRolls(ConstantValue.exactly(1.0F)) 27 | .add(LootItem.lootTableItem(BGItems.SWEET_BERRY_PIPS.get())).build())); 28 | 29 | this.entry("cave_vines").path("minecraft:loot_table/blocks/cave_vines").remolder(LootRemolders.addPool(LootPool.lootPool() 30 | .name(BerryGood.MOD_ID + ":glow_berry_pips") 31 | .setRolls(ConstantValue.exactly(1.0F)) 32 | .add(LootItem.lootTableItem(BGItems.GLOW_BERRY_PIPS.get())).build())); 33 | } 34 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/data/server/BGDatapackProvider.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.data.server; 2 | 3 | import com.teamabnormals.berry_good.core.BerryGood; 4 | import com.teamabnormals.berry_good.core.registry.datapack.BGJukeboxSongs; 5 | import net.minecraft.core.HolderLookup.Provider; 6 | import net.minecraft.core.RegistrySetBuilder; 7 | import net.minecraft.core.registries.Registries; 8 | import net.minecraft.data.PackOutput; 9 | import net.neoforged.neoforge.common.data.DatapackBuiltinEntriesProvider; 10 | 11 | import java.util.Set; 12 | import java.util.concurrent.CompletableFuture; 13 | 14 | public class BGDatapackProvider extends DatapackBuiltinEntriesProvider { 15 | 16 | public static final RegistrySetBuilder BUILDER = new RegistrySetBuilder() 17 | .add(Registries.JUKEBOX_SONG, BGJukeboxSongs::bootstrap); 18 | 19 | public BGDatapackProvider(PackOutput output, CompletableFuture provider) { 20 | super(output, provider, BUILDER, Set.of(BerryGood.MOD_ID)); 21 | } 22 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/data/server/BGLootTableProvider.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.data.server; 2 | 3 | import com.teamabnormals.berry_good.core.BerryGood; 4 | import com.teamabnormals.berry_good.core.registry.BGBlocks; 5 | import net.minecraft.core.HolderLookup.Provider; 6 | import net.minecraft.core.WritableRegistry; 7 | import net.minecraft.core.registries.BuiltInRegistries; 8 | import net.minecraft.data.PackOutput; 9 | import net.minecraft.data.loot.BlockLootSubProvider; 10 | import net.minecraft.data.loot.LootTableProvider; 11 | import net.minecraft.util.ProblemReporter; 12 | import net.minecraft.world.flag.FeatureFlags; 13 | import net.minecraft.world.item.Item; 14 | import net.minecraft.world.level.ItemLike; 15 | import net.minecraft.world.level.block.Block; 16 | import net.minecraft.world.level.block.Blocks; 17 | import net.minecraft.world.level.storage.loot.BuiltInLootTables; 18 | import net.minecraft.world.level.storage.loot.LootTable; 19 | import net.minecraft.world.level.storage.loot.ValidationContext; 20 | import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; 21 | 22 | import java.util.List; 23 | import java.util.Set; 24 | import java.util.concurrent.CompletableFuture; 25 | import java.util.stream.Collectors; 26 | import java.util.stream.Stream; 27 | 28 | public class BGLootTableProvider extends LootTableProvider { 29 | 30 | public BGLootTableProvider(PackOutput output, CompletableFuture provider) { 31 | super(output, BuiltInLootTables.all(), List.of( 32 | new LootTableProvider.SubProviderEntry(BGBlockLoot::new, LootContextParamSets.BLOCK) 33 | ), provider); 34 | } 35 | 36 | @Override 37 | protected void validate(WritableRegistry registry, ValidationContext context, ProblemReporter.Collector collector) { 38 | } 39 | 40 | private static class BGBlockLoot extends BlockLootSubProvider { 41 | private static final Set EXPLOSION_RESISTANT = Stream.of(Blocks.DRAGON_EGG, Blocks.BEACON, Blocks.CONDUIT, Blocks.SKELETON_SKULL, Blocks.WITHER_SKELETON_SKULL, Blocks.PLAYER_HEAD, Blocks.ZOMBIE_HEAD, Blocks.CREEPER_HEAD, Blocks.DRAGON_HEAD, Blocks.PIGLIN_HEAD, Blocks.SHULKER_BOX, Blocks.BLACK_SHULKER_BOX, Blocks.BLUE_SHULKER_BOX, Blocks.BROWN_SHULKER_BOX, Blocks.CYAN_SHULKER_BOX, Blocks.GRAY_SHULKER_BOX, Blocks.GREEN_SHULKER_BOX, Blocks.LIGHT_BLUE_SHULKER_BOX, Blocks.LIGHT_GRAY_SHULKER_BOX, Blocks.LIME_SHULKER_BOX, Blocks.MAGENTA_SHULKER_BOX, Blocks.ORANGE_SHULKER_BOX, Blocks.PINK_SHULKER_BOX, Blocks.PURPLE_SHULKER_BOX, Blocks.RED_SHULKER_BOX, Blocks.WHITE_SHULKER_BOX, Blocks.YELLOW_SHULKER_BOX).map(ItemLike::asItem).collect(Collectors.toSet()); 42 | 43 | protected BGBlockLoot(Provider provider) { 44 | super(EXPLOSION_RESISTANT, FeatureFlags.REGISTRY.allFlags(), provider); 45 | } 46 | 47 | @Override 48 | public void generate() { 49 | this.dropSelf(BGBlocks.SWEET_BERRY_BASKET.get()); 50 | this.dropSelf(BGBlocks.GLOW_BERRY_BASKET.get()); 51 | } 52 | 53 | @Override 54 | public Iterable getKnownBlocks() { 55 | return BuiltInRegistries.BLOCK.stream().filter(block -> BerryGood.MOD_ID.equals(BuiltInRegistries.BLOCK.getKey(block).getNamespace())).collect(Collectors.toSet()); 56 | } 57 | } 58 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/data/server/BGRecipeProvider.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.data.server; 2 | 3 | import com.teamabnormals.berry_good.core.BerryGood; 4 | import com.teamabnormals.berry_good.core.registry.BGBlocks; 5 | import com.teamabnormals.berry_good.core.registry.BGItems; 6 | import com.teamabnormals.blueprint.core.data.server.BlueprintRecipeProvider; 7 | import com.teamabnormals.blueprint.core.other.tags.BlueprintItemTags; 8 | import net.minecraft.core.HolderLookup.Provider; 9 | import net.minecraft.data.PackOutput; 10 | import net.minecraft.data.recipes.RecipeCategory; 11 | import net.minecraft.data.recipes.RecipeOutput; 12 | import net.minecraft.data.recipes.ShapelessRecipeBuilder; 13 | import net.minecraft.world.item.Items; 14 | 15 | import java.util.concurrent.CompletableFuture; 16 | 17 | public class BGRecipeProvider extends BlueprintRecipeProvider { 18 | 19 | public BGRecipeProvider(PackOutput output, CompletableFuture provider) { 20 | super(BerryGood.MOD_ID, output, provider); 21 | } 22 | 23 | @Override 24 | public void buildRecipes(RecipeOutput output) { 25 | storageRecipes(output, RecipeCategory.FOOD, Items.SWEET_BERRIES, RecipeCategory.DECORATIONS, BGBlocks.SWEET_BERRY_BASKET.get()); 26 | storageRecipes(output, RecipeCategory.FOOD, Items.GLOW_BERRIES, RecipeCategory.DECORATIONS, BGBlocks.GLOW_BERRY_BASKET.get()); 27 | 28 | conversionRecipe(output, BGItems.GLOW_BERRY_PIPS.get(), Items.GLOW_BERRIES, null); 29 | ShapelessRecipeBuilder.shapeless(RecipeCategory.FOOD, BGItems.SWEET_BERRY_MINCE.get()).requires(Items.SWEET_BERRIES).requires(Items.PORKCHOP).unlockedBy("has_sweet_berries", has(Items.SWEET_BERRIES)).save(output); 30 | foodCookingRecipes(output, BGItems.SWEET_BERRY_MINCE.get(), BGItems.SWEET_BERRY_MEATBALLS.get()); 31 | 32 | conversionRecipe(output, BGItems.SWEET_BERRY_PIPS.get(), Items.SWEET_BERRIES, null); 33 | ShapelessRecipeBuilder.shapeless(RecipeCategory.FOOD, BGItems.GLOWGURT.get()).requires(Items.BOWL).requires(Items.GLOW_BERRIES, 2).requires(Items.SUGAR).requires(BlueprintItemTags.MILK).unlockedBy("has_glow_berries", has(Items.GLOW_BERRIES)).save(output); 34 | } 35 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/data/server/modifiers/BGAdvancementModifierProvider.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.data.server.modifiers; 2 | 3 | import com.teamabnormals.berry_good.core.BerryGood; 4 | import com.teamabnormals.berry_good.core.registry.BGItems; 5 | import com.teamabnormals.blueprint.common.advancement.modification.AdvancementModifierProvider; 6 | import com.teamabnormals.blueprint.common.advancement.modification.modifiers.CriteriaModifier; 7 | import net.minecraft.advancements.AdvancementRequirements.Strategy; 8 | import net.minecraft.advancements.critereon.ConsumeItemTrigger; 9 | import net.minecraft.advancements.critereon.ItemUsedOnLocationTrigger; 10 | import net.minecraft.core.HolderLookup.Provider; 11 | import net.minecraft.core.registries.BuiltInRegistries; 12 | import net.minecraft.data.PackOutput; 13 | import net.minecraft.world.item.Item; 14 | import net.minecraft.world.level.block.Blocks; 15 | 16 | import java.util.concurrent.CompletableFuture; 17 | 18 | public class BGAdvancementModifierProvider extends AdvancementModifierProvider { 19 | private static final Item[] EDIBLE_ITEMS = new Item[]{BGItems.SWEET_BERRY_MINCE.get(), BGItems.SWEET_BERRY_MEATBALLS.get(), BGItems.GLOWGURT.get()}; 20 | 21 | public BGAdvancementModifierProvider(PackOutput output, CompletableFuture lookupProvider) { 22 | super(BerryGood.MOD_ID, output, lookupProvider); 23 | } 24 | 25 | @Override 26 | protected void registerEntries(Provider provider) { 27 | CriteriaModifier.Builder balancedDiet = CriteriaModifier.builder(this.modId); 28 | for (Item item : EDIBLE_ITEMS) { 29 | balancedDiet.addCriterion(BuiltInRegistries.ITEM.getKey(item).getPath(), ConsumeItemTrigger.TriggerInstance.usedItem(item)); 30 | } 31 | this.entry("husbandry/balanced_diet").selects("husbandry/balanced_diet").addModifier(balancedDiet.requirements(Strategy.AND).build()); 32 | this.entry("husbandry/plant_seed").selects("husbandry/plant_seed").addModifier(CriteriaModifier.builder(this.modId) 33 | .addCriterion("sweet_berry_bush", ItemUsedOnLocationTrigger.TriggerInstance.placedBlock(Blocks.SWEET_BERRY_BUSH)) 34 | .addCriterion("cave_vines", ItemUsedOnLocationTrigger.TriggerInstance.placedBlock(Blocks.CAVE_VINES)) 35 | .addIndexedRequirements(0, false, "sweet_berry_bush", "cave_vines").build()); 36 | } 37 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/data/server/tags/BGBlockTagsProvider.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.data.server.tags; 2 | 3 | import com.teamabnormals.berry_good.core.BerryGood; 4 | import com.teamabnormals.berry_good.core.other.tags.BGBlockTags; 5 | import net.minecraft.core.HolderLookup; 6 | import net.minecraft.core.HolderLookup.Provider; 7 | import net.minecraft.data.PackOutput; 8 | import net.minecraft.tags.BlockTags; 9 | import net.neoforged.neoforge.common.Tags; 10 | import net.neoforged.neoforge.common.data.BlockTagsProvider; 11 | import net.neoforged.neoforge.common.data.ExistingFileHelper; 12 | 13 | import java.util.concurrent.CompletableFuture; 14 | 15 | import static com.teamabnormals.berry_good.core.registry.BGBlocks.GLOW_BERRY_BASKET; 16 | import static com.teamabnormals.berry_good.core.registry.BGBlocks.SWEET_BERRY_BASKET; 17 | 18 | public class BGBlockTagsProvider extends BlockTagsProvider { 19 | 20 | public BGBlockTagsProvider(PackOutput output, CompletableFuture lookupProvider, ExistingFileHelper fileHelper) { 21 | super(output, lookupProvider, BerryGood.MOD_ID, fileHelper); 22 | } 23 | 24 | @Override 25 | protected void addTags(HolderLookup.Provider provider) { 26 | this.tag(BlockTags.MINEABLE_WITH_AXE).add(SWEET_BERRY_BASKET.get(), GLOW_BERRY_BASKET.get()); 27 | this.tag(Tags.Blocks.STORAGE_BLOCKS).addTag(BGBlockTags.STORAGE_BLOCKS_SWEET_BERRY).addTag(BGBlockTags.STORAGE_BLOCKS_GLOW_BERRY); 28 | this.tag(BGBlockTags.STORAGE_BLOCKS_SWEET_BERRY).add(SWEET_BERRY_BASKET.get()); 29 | this.tag(BGBlockTags.STORAGE_BLOCKS_GLOW_BERRY).add(GLOW_BERRY_BASKET.get()); 30 | } 31 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/data/server/tags/BGItemTagsProvider.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.data.server.tags; 2 | 3 | import com.teamabnormals.berry_good.core.BerryGood; 4 | import com.teamabnormals.berry_good.core.other.tags.BGBlockTags; 5 | import com.teamabnormals.berry_good.core.other.tags.BGItemTags; 6 | import net.minecraft.core.HolderLookup.Provider; 7 | import net.minecraft.data.PackOutput; 8 | import net.minecraft.data.tags.ItemTagsProvider; 9 | import net.minecraft.data.tags.TagsProvider; 10 | import net.minecraft.tags.ItemTags; 11 | import net.minecraft.world.level.block.Block; 12 | import net.neoforged.neoforge.common.Tags; 13 | import net.neoforged.neoforge.common.data.ExistingFileHelper; 14 | 15 | import java.util.concurrent.CompletableFuture; 16 | 17 | import static com.teamabnormals.berry_good.core.registry.BGItems.*; 18 | 19 | public class BGItemTagsProvider extends ItemTagsProvider { 20 | 21 | public BGItemTagsProvider(PackOutput output, CompletableFuture provider, CompletableFuture> lookup, ExistingFileHelper helper) { 22 | super(output, provider, lookup, BerryGood.MOD_ID, helper); 23 | } 24 | 25 | @Override 26 | protected void addTags(Provider provider) { 27 | this.tag(ItemTags.CHICKEN_FOOD).add(SWEET_BERRY_PIPS.get(), GLOW_BERRY_PIPS.get()); 28 | this.tag(ItemTags.PARROT_FOOD).add(SWEET_BERRY_PIPS.get(), GLOW_BERRY_PIPS.get()); 29 | this.tag(ItemTags.MEAT).add(SWEET_BERRY_MINCE.get(), SWEET_BERRY_PIPS.get()); 30 | 31 | this.tag(Tags.Items.MUSIC_DISCS).add(MUSIC_DISC_FOX.get()); 32 | 33 | this.tag(Tags.Items.FOODS).add(GLOWGURT.get()); 34 | this.tag(Tags.Items.FOODS_RAW_MEAT).add(SWEET_BERRY_MINCE.get()); 35 | this.tag(Tags.Items.FOODS_COOKED_MEAT).add(SWEET_BERRY_MEATBALLS.get()); 36 | 37 | this.tag(Tags.Items.SEEDS).addTag(BGItemTags.SEEDS_SWEET_BERRY).addTag(BGItemTags.SEEDS_GLOW_BERRY); 38 | this.tag(BGItemTags.SEEDS_SWEET_BERRY).add(SWEET_BERRY_PIPS.get()); 39 | this.tag(BGItemTags.SEEDS_GLOW_BERRY).add(GLOW_BERRY_PIPS.get()); 40 | 41 | this.copy(Tags.Blocks.STORAGE_BLOCKS, Tags.Items.STORAGE_BLOCKS); 42 | this.copy(BGBlockTags.STORAGE_BLOCKS_SWEET_BERRY, BGItemTags.STORAGE_BLOCKS_SWEET_BERRY); 43 | this.copy(BGBlockTags.STORAGE_BLOCKS_GLOW_BERRY, BGItemTags.STORAGE_BLOCKS_GLOW_BERRY); 44 | } 45 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/mixin/CaveVinesBlockMixin.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.mixin; 2 | 3 | import com.teamabnormals.berry_good.core.BGConfig; 4 | import com.teamabnormals.berry_good.core.registry.BGItems; 5 | import net.minecraft.core.BlockPos; 6 | import net.minecraft.world.item.ItemStack; 7 | import net.minecraft.world.level.LevelReader; 8 | import net.minecraft.world.level.block.state.BlockState; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | import org.spongepowered.asm.mixin.injection.Inject; 12 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; 13 | 14 | @Mixin(targets = {"net/minecraft/world/level/block/CaveVinesBlock", "net/minecraft/world/level/block/CaveVinesPlantBlock"}) 15 | public abstract class CaveVinesBlockMixin { 16 | 17 | @Inject(method = "getCloneItemStack", at = @At("RETURN"), cancellable = true) 18 | private void getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, CallbackInfoReturnable cir) { 19 | if (BGConfig.COMMON.glowBerriesRequirePips.get()) { 20 | cir.setReturnValue(new ItemStack(BGItems.GLOW_BERRY_PIPS.get())); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/mixin/FoxMixin.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.mixin; 2 | 3 | import com.teamabnormals.berry_good.core.BGConfig; 4 | import com.teamabnormals.berry_good.core.registry.BGItems; 5 | import net.minecraft.util.RandomSource; 6 | import net.minecraft.world.DifficultyInstance; 7 | import net.minecraft.world.entity.EntityType; 8 | import net.minecraft.world.entity.EquipmentSlot; 9 | import net.minecraft.world.entity.LivingEntity; 10 | import net.minecraft.world.entity.animal.Fox; 11 | import net.minecraft.world.item.ItemStack; 12 | import net.minecraft.world.level.Level; 13 | import org.spongepowered.asm.mixin.Mixin; 14 | import org.spongepowered.asm.mixin.injection.At; 15 | import org.spongepowered.asm.mixin.injection.Inject; 16 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 17 | 18 | @Mixin(Fox.class) 19 | public abstract class FoxMixin extends LivingEntity { 20 | 21 | protected FoxMixin(EntityType type, Level worldIn) { 22 | super(type, worldIn); 23 | } 24 | 25 | @Inject(method = "populateDefaultEquipmentSlots", at = @At("TAIL")) 26 | private void populateDefaultEquipmentSlots(RandomSource randomSource, DifficultyInstance difficultyInstance, CallbackInfo ci) { 27 | if (BGConfig.COMMON.foxMusicDisc.get() && randomSource.nextFloat() < BGConfig.COMMON.foxMusicDiscChance.get()) { 28 | this.setItemSlot(EquipmentSlot.MAINHAND, new ItemStack(BGItems.MUSIC_DISC_FOX.get())); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/mixin/SweetBerryBushBlockMixin.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.mixin; 2 | 3 | import com.teamabnormals.berry_good.core.BGConfig; 4 | import com.teamabnormals.berry_good.core.registry.BGItems; 5 | import net.minecraft.core.BlockPos; 6 | import net.minecraft.world.item.ItemStack; 7 | import net.minecraft.world.level.LevelReader; 8 | import net.minecraft.world.level.block.SweetBerryBushBlock; 9 | import net.minecraft.world.level.block.state.BlockState; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.injection.At; 12 | import org.spongepowered.asm.mixin.injection.Inject; 13 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; 14 | 15 | @Mixin(SweetBerryBushBlock.class) 16 | public abstract class SweetBerryBushBlockMixin { 17 | 18 | @Inject(method = "getCloneItemStack", at = @At("RETURN"), cancellable = true) 19 | private void getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, CallbackInfoReturnable cir) { 20 | if (BGConfig.COMMON.sweetBerriesRequirePips.get()) { 21 | cir.setReturnValue(new ItemStack(BGItems.SWEET_BERRY_PIPS.get())); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/other/BGCompat.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.other; 2 | 3 | import com.teamabnormals.berry_good.core.registry.BGBlocks; 4 | import com.teamabnormals.blueprint.core.util.DataUtil; 5 | 6 | public class BGCompat { 7 | 8 | public static void registerCompat() { 9 | registerFlammables(); 10 | } 11 | 12 | private static void registerFlammables() { 13 | DataUtil.registerFlammable(BGBlocks.SWEET_BERRY_BASKET.get(), 5, 20); 14 | DataUtil.registerFlammable(BGBlocks.GLOW_BERRY_BASKET.get(), 5, 20); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/other/BGEvents.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.other; 2 | 3 | import com.teamabnormals.berry_good.core.BGConfig; 4 | import com.teamabnormals.berry_good.core.BerryGood; 5 | import net.minecraft.world.effect.MobEffectInstance; 6 | import net.minecraft.world.effect.MobEffects; 7 | import net.minecraft.world.entity.LivingEntity; 8 | import net.minecraft.world.item.ItemStack; 9 | import net.minecraft.world.item.Items; 10 | import net.neoforged.bus.api.SubscribeEvent; 11 | import net.neoforged.fml.common.EventBusSubscriber; 12 | import net.neoforged.neoforge.common.util.TriState; 13 | import net.neoforged.neoforge.event.entity.living.LivingEntityUseItemEvent; 14 | import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent.RightClickBlock; 15 | 16 | @EventBusSubscriber(modid = BerryGood.MOD_ID) 17 | public class BGEvents { 18 | 19 | @SubscribeEvent 20 | public static void rightClickBlock(RightClickBlock event) { 21 | ItemStack stack = event.getItemStack(); 22 | if ((BGConfig.COMMON.sweetBerriesRequirePips.get() && stack.is(Items.SWEET_BERRIES)) || (BGConfig.COMMON.glowBerriesRequirePips.get() && stack.is(Items.GLOW_BERRIES))) { 23 | event.setUseItem(TriState.FALSE); 24 | } 25 | } 26 | 27 | @SubscribeEvent 28 | public static void onItemFinishUsing(LivingEntityUseItemEvent.Finish event) { 29 | LivingEntity entity = event.getEntity(); 30 | if (!entity.level().isClientSide() && event.getItem().is(Items.GLOW_BERRIES) && BGConfig.COMMON.glowBerriesGiveGlowing.get()) { 31 | entity.addEffect(new MobEffectInstance(MobEffects.GLOWING, 300)); 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/other/tags/BGBlockTags.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.other.tags; 2 | 3 | import com.teamabnormals.blueprint.core.util.TagUtil; 4 | import net.minecraft.tags.TagKey; 5 | import net.minecraft.world.level.block.Block; 6 | 7 | public class BGBlockTags { 8 | public static final TagKey STORAGE_BLOCKS_SWEET_BERRY = TagUtil.blockTag("c", "storage_blocks/sweet_berry"); 9 | public static final TagKey STORAGE_BLOCKS_GLOW_BERRY = TagUtil.blockTag("c", "storage_blocks/glow_berry"); 10 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/other/tags/BGItemTags.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.other.tags; 2 | 3 | import com.teamabnormals.blueprint.core.util.TagUtil; 4 | import net.minecraft.tags.TagKey; 5 | import net.minecraft.world.item.Item; 6 | import net.minecraft.world.level.block.Block; 7 | 8 | public class BGItemTags { 9 | public static final TagKey SEEDS_SWEET_BERRY = TagUtil.itemTag("c", "seeds/sweet_berry"); 10 | public static final TagKey SEEDS_GLOW_BERRY = TagUtil.itemTag("c", "seeds/glow_berry"); 11 | public static final TagKey STORAGE_BLOCKS_SWEET_BERRY = TagUtil.itemTag("c", "storage_blocks/sweet_berry"); 12 | public static final TagKey STORAGE_BLOCKS_GLOW_BERRY = TagUtil.itemTag("c", "storage_blocks/glow_berry"); 13 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/registry/BGBlocks.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.registry; 2 | 3 | import com.teamabnormals.berry_good.core.BerryGood; 4 | import com.teamabnormals.blueprint.common.block.BlueprintDirectionalBlock; 5 | import com.teamabnormals.blueprint.core.util.registry.BlockSubRegistryHelper; 6 | import net.minecraft.world.level.block.Block; 7 | import net.minecraft.world.level.block.SoundType; 8 | import net.minecraft.world.level.block.state.BlockBehaviour; 9 | import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; 10 | import net.minecraft.world.level.material.MapColor; 11 | import net.neoforged.neoforge.registries.DeferredHolder; 12 | 13 | public class BGBlocks { 14 | public static final BlockSubRegistryHelper BLOCKS = BerryGood.REGISTRY_HELPER.getBlockSubHelper(); 15 | 16 | public static final DeferredHolder SWEET_BERRY_BASKET = BLOCKS.createBlock("sweet_berry_basket", () -> new BlueprintDirectionalBlock(BGProperties.SWEET_BERRY_BASKET)); 17 | public static final DeferredHolder GLOW_BERRY_BASKET = BLOCKS.createBlock("glow_berry_basket", () -> new BlueprintDirectionalBlock(BGProperties.GLOW_BERRY_BASKET)); 18 | 19 | public static class BGProperties { 20 | public static final Block.Properties SWEET_BERRY_BASKET = BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_RED).instrument(NoteBlockInstrument.BASS).strength(1.5F).sound(SoundType.WOOD).ignitedByLava(); 21 | public static final Block.Properties GLOW_BERRY_BASKET = BlockBehaviour.Properties.of().mapColor(MapColor.GOLD).instrument(NoteBlockInstrument.BASS).strength(1.5F).sound(SoundType.WOOD).lightLevel(state -> 14).ignitedByLava(); 22 | } 23 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/registry/BGItems.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.registry; 2 | 3 | import com.teamabnormals.berry_good.core.BGConfig; 4 | import com.teamabnormals.berry_good.core.BerryGood; 5 | import com.teamabnormals.berry_good.core.registry.datapack.BGJukeboxSongs; 6 | import com.teamabnormals.blueprint.core.util.item.CreativeModeTabContentsPopulator; 7 | import com.teamabnormals.blueprint.core.util.registry.ItemSubRegistryHelper; 8 | import net.minecraft.world.effect.MobEffectInstance; 9 | import net.minecraft.world.effect.MobEffects; 10 | import net.minecraft.world.food.FoodProperties; 11 | import net.minecraft.world.item.CreativeModeTab.TabVisibility; 12 | import net.minecraft.world.item.*; 13 | import net.minecraft.world.level.block.Blocks; 14 | import net.neoforged.neoforge.registries.DeferredHolder; 15 | 16 | import static com.teamabnormals.berry_good.core.registry.BGBlocks.GLOW_BERRY_BASKET; 17 | import static com.teamabnormals.berry_good.core.registry.BGBlocks.SWEET_BERRY_BASKET; 18 | import static net.minecraft.world.item.CreativeModeTabs.*; 19 | import static net.minecraft.world.item.crafting.Ingredient.of; 20 | 21 | public class BGItems { 22 | public static final ItemSubRegistryHelper ITEMS = BerryGood.REGISTRY_HELPER.getItemSubHelper(); 23 | 24 | public static final DeferredHolder SWEET_BERRY_MINCE = ITEMS.createItem("sweet_berry_mince", () -> new Item(new Item.Properties().food(BGFoods.SWEET_BERRY_MINCE))); 25 | public static final DeferredHolder SWEET_BERRY_MEATBALLS = ITEMS.createItem("sweet_berry_meatballs", () -> new Item(new Item.Properties().food(BGFoods.SWEET_BERRY_MEATBALLS))); 26 | public static final DeferredHolder SWEET_BERRY_PIPS = ITEMS.createItem("sweet_berry_pips", () -> new ItemNameBlockItem(Blocks.SWEET_BERRY_BUSH, new Item.Properties())); 27 | 28 | public static final DeferredHolder GLOW_BERRY_PIPS = ITEMS.createItem("glow_berry_pips", () -> new ItemNameBlockItem(Blocks.CAVE_VINES, new Item.Properties())); 29 | public static final DeferredHolder GLOWGURT = ITEMS.createItem("glowgurt", () -> new Item(new Item.Properties().stacksTo(1).food(BGFoods.GLOWGURT))); 30 | 31 | public static final DeferredHolder MUSIC_DISC_FOX = ITEMS.createItem("music_disc_fox", () -> new Item(new Item.Properties().stacksTo(1).rarity(Rarity.RARE).jukeboxPlayable(BGJukeboxSongs.FOX))); 32 | 33 | public static class BGFoods { 34 | public static final FoodProperties SWEET_BERRY_MINCE = new FoodProperties.Builder().nutrition(5).saturationModifier(0.3F).build(); 35 | public static final FoodProperties SWEET_BERRY_MEATBALLS = new FoodProperties.Builder().nutrition(10).saturationModifier(0.8F).build(); 36 | public static final FoodProperties GLOWGURT = new FoodProperties.Builder().nutrition(10).saturationModifier(0.6F).usingConvertsTo(Items.BOWL).effect(() -> new MobEffectInstance(MobEffects.GLOWING, 3000), 1.0F).build(); 37 | } 38 | 39 | public static void setupTabEditors() { 40 | CreativeModeTabContentsPopulator.mod(BerryGood.MOD_ID) 41 | .predicate(event -> event.getTabKey() == NATURAL_BLOCKS && BGConfig.COMMON.sweetBerriesRequirePips.get()) 42 | .addItemsAfter(of(Items.BEETROOT_SEEDS), SWEET_BERRY_PIPS) 43 | .editor(event -> event.remove(new ItemStack(Items.SWEET_BERRIES), TabVisibility.PARENT_AND_SEARCH_TABS)); 44 | 45 | CreativeModeTabContentsPopulator.mod(BerryGood.MOD_ID) 46 | .predicate(event -> event.getTabKey() == NATURAL_BLOCKS && BGConfig.COMMON.glowBerriesRequirePips.get()) 47 | .addItemsAfter(of(Items.BEETROOT_SEEDS), GLOW_BERRY_PIPS) 48 | .editor(event -> event.remove(new ItemStack(Items.GLOW_BERRIES), TabVisibility.PARENT_AND_SEARCH_TABS)); 49 | 50 | CreativeModeTabContentsPopulator.mod(BerryGood.MOD_ID) 51 | .tab(NATURAL_BLOCKS) 52 | .addItemsAfter(of(Items.HAY_BLOCK), SWEET_BERRY_BASKET, GLOW_BERRY_BASKET) 53 | .tab(FOOD_AND_DRINKS) 54 | .addItemsAfter(of(Items.COOKED_PORKCHOP), SWEET_BERRY_MINCE, SWEET_BERRY_MEATBALLS) 55 | .addItemsBefore(of(Items.MILK_BUCKET), GLOWGURT) 56 | .tab(TOOLS_AND_UTILITIES) 57 | .addItemsAfter(of(Items.MUSIC_DISC_OTHERSIDE), MUSIC_DISC_FOX); 58 | } 59 | } -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/registry/BGSoundEvents.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.registry; 2 | 3 | import com.teamabnormals.berry_good.core.BerryGood; 4 | import com.teamabnormals.blueprint.core.util.registry.SoundSubRegistryHelper; 5 | import net.minecraft.sounds.SoundEvent; 6 | import net.neoforged.neoforge.registries.DeferredHolder; 7 | 8 | public class BGSoundEvents { 9 | public static final SoundSubRegistryHelper SOUND_EVENTS = BerryGood.REGISTRY_HELPER.getSoundSubHelper(); 10 | 11 | public static final DeferredHolder MUSIC_DISC_FOX = SOUND_EVENTS.createSoundEvent("music_disc.fox"); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/teamabnormals/berry_good/core/registry/datapack/BGJukeboxSongs.java: -------------------------------------------------------------------------------- 1 | package com.teamabnormals.berry_good.core.registry.datapack; 2 | 3 | import com.teamabnormals.berry_good.core.BerryGood; 4 | import com.teamabnormals.berry_good.core.registry.BGSoundEvents; 5 | import net.minecraft.Util; 6 | import net.minecraft.core.registries.Registries; 7 | import net.minecraft.data.worldgen.BootstrapContext; 8 | import net.minecraft.network.chat.Component; 9 | import net.minecraft.resources.ResourceKey; 10 | import net.minecraft.sounds.SoundEvent; 11 | import net.minecraft.world.item.JukeboxSong; 12 | import net.neoforged.neoforge.registries.DeferredHolder; 13 | 14 | public class BGJukeboxSongs { 15 | public static final ResourceKey FOX = create("fox"); 16 | 17 | public static void bootstrap(BootstrapContext context) { 18 | register(context, FOX, BGSoundEvents.MUSIC_DISC_FOX, 116, 2); 19 | } 20 | 21 | private static ResourceKey create(String name) { 22 | return ResourceKey.create(Registries.JUKEBOX_SONG, BerryGood.location(name)); 23 | } 24 | 25 | private static void register(BootstrapContext context, ResourceKey key, DeferredHolder soundEvent, int lengthInSeconds, int comparatorOutput) { 26 | context.register(key, new JukeboxSong(soundEvent, Component.translatable(Util.makeDescriptionId("jukebox_song", key.location())), (float) lengthInSeconds, comparatorOutput)); 27 | } 28 | } -------------------------------------------------------------------------------- /src/main/resources/META-INF/neoforge.mods.toml: -------------------------------------------------------------------------------- 1 | modLoader = "javafml" 2 | loaderVersion = "[1,)" 3 | issueTrackerURL = "https://github.com/team-abnormals/berry-good/issues" 4 | license = "https://github.com/team-abnormals/berry-good/blob/main/LICENSE.txt" 5 | 6 | [[mixins]] 7 | config = "berry_good.mixins.json" 8 | 9 | [[mods]] 10 | modId = "berry_good" 11 | version = "${mod_version}" 12 | logoFile = "logo.png" 13 | itemIcon = "berry_good:sweet_berry_pips" 14 | configBackground = "minecraft:textures/block/spruce_log.png" 15 | authors = "Team Abnormals" 16 | credits = "SmellyModder, Cameron, five, bageldotjpg" 17 | displayURL = "https://www.teamabnormals.com/mods/berry-good" 18 | displayName = "Berry Good" 19 | description = ''' 20 | Makes sweet berries less annoying to eat and adds more berry related content 21 | ''' 22 | 23 | [[dependencies.berry_good]] 24 | modId = "minecraft" 25 | type = "required" 26 | versionRange = "[${mc_version}]" 27 | ordering = "AFTER" 28 | side = "BOTH" 29 | 30 | [[dependencies.berry_good]] 31 | modId = "neoforge" 32 | type = "required" 33 | versionRange = "[${neoforge},)" 34 | ordering = "AFTER" 35 | side = "BOTH" 36 | 37 | [[dependencies.berry_good]] 38 | modId = "blueprint" 39 | type = "required" 40 | versionRange = "[${blueprint},)" 41 | ordering = "AFTER" 42 | side = "BOTH" -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/ca_es.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.sweet_berry_bush_pips": "Llavors de baies dolces", 3 | 4 | "item.berry_good.sweet_berry_pips": "Llavors de baies dolces", 5 | "item.berry_good.sweet_berry_mince": "Baies dolces mòltes", 6 | "item.berry_good.sweet_berry_meatballs": "Mandonguilles de baies dolces", 7 | 8 | "item.berry_good.music_disc_fox": "Disc de musica", 9 | "item.berry_good.music_disc_fox.desc": "RENREN - Fox" 10 | } 11 | -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/cs_cz.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.glow_berry_basket": "Koš zářinek", 3 | "block.berry_good.sweet_berry_basket": "Koš sladkých bobulí", 4 | "item.berry_good.glow_berry_pips": "Semínka zářinek", 5 | "item.berry_good.glowgurt": "Zářinkový jogurt", 6 | "item.berry_good.music_disc_fox": "Gramofonová deska", 7 | "item.berry_good.music_disc_fox.desc": "RENREN - Fox", 8 | "item.berry_good.sweet_berry_meatballs": "Masové kuličky se sladkými bobulemi", 9 | "item.berry_good.sweet_berry_mince": "Mleté maso se sladkými bobulemi", 10 | "item.berry_good.sweet_berry_pips": "Semínka sladkých bobulí" 11 | } -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/da_dk.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.glow_berry_basket": "Kurv med gløde bær", 3 | "block.berry_good.sweet_berry_basket": "Kurv med søde bær", 4 | "item.berry_good.glow_berry_pips": "Gløde bær Frø", 5 | "item.berry_good.glowgurt": "Glowgurt", 6 | "item.berry_good.music_disc_fox": "Musik disk", 7 | "item.berry_good.music_disc_fox.desc": "RENREN - Fox", 8 | "item.berry_good.sweet_berry_meatballs": "Søde bærfrikadeller", 9 | "item.berry_good.sweet_berry_mince": "Sød bærfars", 10 | "item.berry_good.sweet_berry_pips": "Søde bær Frø" 11 | } 12 | -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/de_de.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.sweet_berry_bush_pips": "Süßbeerkerne", 3 | 4 | "item.berry_good.sweet_berry_pips": "Süßbeerkerne", 5 | "item.berry_good.sweet_berry_mince": "Süßbeerhackfleisch", 6 | "item.berry_good.sweet_berry_meatballs": "Süßbeerfleischkloß", 7 | 8 | "item.berry_good.music_disc_fox": "Schallplatte", 9 | "item.berry_good.music_disc_fox.desc": "RENREN - Fox" 10 | } -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/en_pt.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.sweet_berry_bush_pips": "Bits o' Land Caper", 3 | "item.berry_good.sweet_berry_pips": "Bits o' Land Capers", 4 | "item.berry_good.sweet_berry_mince": "Raw Pork n' Capers", 5 | "item.berry_good.sweet_berry_meatballs": "Sweet Swine Delight", 6 | 7 | "block.berry_good.cave_vine_pips": "Glowin' Vines", 8 | "item.berry_good.glow_berry_pips": "Bits o' Glowin' Capers", 9 | "item.berry_good.glowgurt": "Miner's Slush", 10 | 11 | "item.berry_good.music_disc_fox": "Shanty", 12 | "item.berry_good.music_disc_fox.desc": "RENREN - Fox" 13 | } 14 | -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/enws.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.cave_vine_pips": "Cave Vine Growths", 3 | "block.berry_good.sweet_berry_bush_pips": "Sweet Berry Bush Growths", 4 | "item.berry_good.glow_berry_pips": "Glowen Berry Growths", 5 | "item.berry_good.glowgurt": "Milky Glowen Soup", 6 | "item.berry_good.music_disc_fox": "Music Plate", 7 | "item.berry_good.music_disc_fox.desc": "RENREN - Fox", 8 | "item.berry_good.sweet_berry_meatballs": "Sweet Berry Meatballs", 9 | "item.berry_good.sweet_berry_mince": "Sweet Berry Mince", 10 | "item.berry_good.sweet_berry_pips": "Sweet Berry Growths" 11 | } -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/es_ar.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.cave_vine_pips": "Pepitas de enredaderas de cueva", 3 | "block.berry_good.sweet_berry_bush_pips": "Pepitas de arbusto de bayas dulces", 4 | "item.berry_good.glow_berry_pips": "Pepitas de bayas luminosas", 5 | "item.berry_good.glowgurt": "Yogur luminoso", 6 | "item.berry_good.music_disc_fox": "Disco", 7 | "item.berry_good.music_disc_fox.desc": "RENREN - Fox", 8 | "item.berry_good.sweet_berry_meatballs": "Albóndigas de bayas dulces", 9 | "item.berry_good.sweet_berry_mince": "Bayas dulces molidas", 10 | "item.berry_good.sweet_berry_pips": "Pepitas de bayas dulces" 11 | } 12 | -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/es_es.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.cave_vine_pips": "Pepitas de enredaderas de cueva", 3 | "block.berry_good.sweet_berry_bush_pips": "Pepitas de arbusto de bayas dulces", 4 | "item.berry_good.glow_berry_pips": "Pepitas de bayas luminosas", 5 | "item.berry_good.glowgurt": "Yogur luminoso", 6 | "item.berry_good.music_disc_fox": "Disco de música", 7 | "item.berry_good.music_disc_fox.desc": "RENREN - Fox", 8 | "item.berry_good.sweet_berry_meatballs": "Albóndigas de bayas dulces", 9 | "item.berry_good.sweet_berry_mince": "Bayas dulces molidas", 10 | "item.berry_good.sweet_berry_pips": "Pepitas de bayas dulces" 11 | } 12 | -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/es_mx.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.glow_berry_basket": "Canasta de bayas brillantes", 3 | "block.berry_good.sweet_berry_basket": "Canasta de bayas dulces", 4 | "item.berry_good.glow_berry_pips": "Pepitas de bayas brillantes", 5 | "item.berry_good.glowgurt": "Yogur brillante", 6 | "item.berry_good.music_disc_fox": "Disco", 7 | "item.berry_good.music_disc_fox.desc": "RENREN - Fox", 8 | "item.berry_good.sweet_berry_meatballs": "Albóndigas de bayas dulces", 9 | "item.berry_good.sweet_berry_mince": "Bayas dulces molidas", 10 | "item.berry_good.sweet_berry_pips": "Pepitas de bayas dulces" 11 | } 12 | -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/fi_fi.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.cave_vine_pips": "Luolaköynnöksen siemenet", 3 | "block.berry_good.sweet_berry_bush_pips": "Makean marjapensaan siemenet", 4 | "item.berry_good.glow_berry_pips": "Hehkumarjan siemenet", 5 | "item.berry_good.music_disc_fox": "Musiikkilevy", 6 | "item.berry_good.music_disc_fox.desc": "RENREN - Fox", 7 | "item.berry_good.sweet_berry_meatballs": "Makeat marjalihapullat" 8 | "item.berry_good.sweet_berry_mince": "Makea marjajauheliha", 9 | "item.berry_good.sweet_berry_pips": "Makean marjan siemenet" 10 | } 11 | -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/fr_fr.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.glow_berry_basket": "Corbeille de baies lumineuses", 3 | "block.berry_good.sweet_berry_basket": "Corbeille de baies sucrées", 4 | "item.berry_good.glow_berry_pips": "Pépins de baies lumineuses", 5 | "item.berry_good.glowgurt": "Yaourt lumineux", 6 | "item.berry_good.music_disc_fox": "Disque de musique", 7 | "item.berry_good.music_disc_fox.desc": "RENREN - Fox", 8 | "item.berry_good.sweet_berry_meatballs": "Boulettes de viande aux baies sucrées", 9 | "item.berry_good.sweet_berry_mince": "Confiture de baies sucrées", 10 | "item.berry_good.sweet_berry_pips": "Pépins de baies sucrées" 11 | } 12 | -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/hr_hr.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.sweet_berry_bush_pips": " Sjemenke slatke bobice", 3 | 4 | "item.berry_good.sweet_berry_pips": "Sjemenke slatke bobice", 5 | "item.berry_good.sweet_berry_mince": "Isjeckano meso sa slatkim bobicama", 6 | "item.berry_good.sweet_berry_meatballs": "Mesne okruglice sa slatkim bobicama" 7 | } 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/it_it.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.glow_berry_basket": "Cesto di bacce luminose", 3 | "block.berry_good.sweet_berry_basket": "Cesto di bacche dolci", 4 | "item.berry_good.glow_berry_pips": "Semi di bacche luminose", 5 | "item.berry_good.glowgurt": "Lumigurt", 6 | "item.berry_good.music_disc_fox": "Disco musicale", 7 | "item.berry_good.music_disc_fox.desc": "RENREN - Fox", 8 | "item.berry_good.sweet_berry_meatballs": "Polpette di bacche dolci", 9 | "item.berry_good.sweet_berry_mince": "Bacche dolci tritate", 10 | "item.berry_good.sweet_berry_pips": "Semi di bacche dolci" 11 | } 12 | -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/ja_jp.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.glow_berry_basket": "グロウベリーの籠", 3 | "block.berry_good.sweet_berry_basket": "スイートベリーの籠", 4 | "item.berry_good.glow_berry_pips": "グロウベリーの種", 5 | "item.berry_good.glowgurt": "グロウグルト", 6 | "item.berry_good.music_disc_fox": "レコード", 7 | "item.berry_good.music_disc_fox.desc": "RENREN - Fox", 8 | "item.berry_good.sweet_berry_meatballs": "スイートベリーミートボール", 9 | "item.berry_good.sweet_berry_mince": "スイートベリーの挽肉", 10 | "item.berry_good.sweet_berry_pips": "スイートベリーの種" 11 | } 12 | -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/ko_kr.json: -------------------------------------------------------------------------------- 1 | { 2 | "item.berry_good.glow_berry_pips": "발광 열매 씨앗", 3 | "item.berry_good.glowgurt": "글로우거트", 4 | "item.berry_good.music_disc_fox": "음반", 5 | "item.berry_good.music_disc_fox.desc": "RENREN - Fox", 6 | "item.berry_good.sweet_berry_meatballs": "달콤한 열매 미트볼", 7 | "item.berry_good.sweet_berry_mince": "다진 달콤한 열매", 8 | "item.berry_good.sweet_berry_pips": "달콤한 열매 씨앗" 9 | } -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/pl_pl.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.cave_vine_pips": "Pestki jaskiniowych pnączy", 3 | "block.berry_good.sweet_berry_bush_pips": "Pestki słodkich jagód", 4 | "item.berry_good.glow_berry_pips": "Pestki świecących jagód", 5 | "item.berry_good.glowgurt": "Świecący jogurt", 6 | "item.berry_good.music_disc_fox": "Płyta muzyczna", 7 | "item.berry_good.music_disc_fox.desc": "RENREN - Fox", 8 | "item.berry_good.sweet_berry_mince": "Jagodowa mielonka", 9 | "item.berry_good.sweet_berry_meatballs": "Jagodowe klopsiki", 10 | "item.berry_good.sweet_berry_pips": "Pestki słodkich jagód" 11 | } -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/pt_br.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.glow_berry_basket": "Cesta de Bagas Brilhantes", 3 | "block.berry_good.sweet_berry_basket": "Cesta de Bagas Doces", 4 | "item.berry_good.glow_berry_pips": "Sementes de Bagas Brilhantes", 5 | "item.berry_good.glowgurt": "Brilhogurte", 6 | "item.berry_good.music_disc_fox": "Disco Musical", 7 | "item.berry_good.sweet_berry_meatballs": "Almôndegas com Bagas Doces", 8 | "item.berry_good.sweet_berry_mince": "Picadinho com Bagas Doces", 9 | "item.berry_good.sweet_berry_pips": "Sementes de Bagas Doces", 10 | "jukebox_song.berry_good.fox": "RENREN - Fox" 11 | } 12 | -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/ru_ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.glow_berry_basket": "Корзина со светящимися ягодами", 3 | "block.berry_good.sweet_berry_basket": "Корзина со сладкими ягодами", 4 | "item.berry_good.glow_berry_pips": "Косточки светящихся ягод", 5 | "item.berry_good.glowgurt": "Светящийся йогурт", 6 | "item.berry_good.music_disc_fox": "Пластинка", 7 | "item.berry_good.sweet_berry_pips": "Косточки сладких ягод", 8 | "item.berry_good.sweet_berry_mince": "Фарш со сладкими ягодами", 9 | "item.berry_good.sweet_berry_meatballs": "Тефтельки со сладкими ягодами" 10 | } 11 | -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/sv_se.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.glow_berry_basket": "Korg med lysande bär", 3 | "block.berry_good.sweet_berry_basket": "Korg med söta bär", 4 | "item.berry_good.glow_berry_pips": "Lysande bärkärnor", 5 | "item.berry_good.glowgurt": "Glödgurt", 6 | "item.berry_good.music_disc_fox": "Musikskiva", 7 | "item.berry_good.sweet_berry_meatballs": "Söta bärköttbullar", 8 | "item.berry_good.sweet_berry_mince": "Söt bärfärs", 9 | "item.berry_good.sweet_berry_pips": "Söta bärkärnor", 10 | "jukebox_song.berry_good.fox": "RENREN - Fox" 11 | } 12 | -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/uk_ua.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.glow_berry_basket": "Кошик сяйних ягід", 3 | "block.berry_good.sweet_berry_basket": "Кошик солодких ягід", 4 | "item.berry_good.glow_berry_pips": "Кісточки сяйної ягоди", 5 | "item.berry_good.glowgurt": "Сяйний йогурт", 6 | "item.berry_good.music_disc_fox": "Платівка", 7 | "item.berry_good.music_disc_fox.desc": "RENREN — Fox", 8 | "item.berry_good.sweet_berry_meatballs": "Тюфтельки із солодкими ягодами", 9 | "item.berry_good.sweet_berry_mince": "Фарш із солодкими ягодами", 10 | "item.berry_good.sweet_berry_pips": "Кісточки солодкої ягоди" 11 | } -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/lang/zh_cn.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.berry_good.sweet_berry_bush_pips": "甜浆果籽", 3 | 4 | "item.berry_good.sweet_berry_pips": "甜浆果籽", 5 | "item.berry_good.sweet_berry_mince": "甜浆果肉馅", 6 | "item.berry_good.sweet_berry_meatballs": "甜浆果肉丸", 7 | 8 | "item.berry_good.music_disc_fox": "音乐唱片", 9 | "item.berry_good.music_disc_fox.desc": "RENREN - Fox" 10 | } 11 | -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/sounds/records/fox.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/team-abnormals/berry-good/30a9b1cf576024ce3a8b928d7a5de9c6e8395230/src/main/resources/assets/berry_good/sounds/records/fox.ogg -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/textures/block/glow_berry_basket_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/team-abnormals/berry-good/30a9b1cf576024ce3a8b928d7a5de9c6e8395230/src/main/resources/assets/berry_good/textures/block/glow_berry_basket_bottom.png -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/textures/block/glow_berry_basket_side.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/team-abnormals/berry-good/30a9b1cf576024ce3a8b928d7a5de9c6e8395230/src/main/resources/assets/berry_good/textures/block/glow_berry_basket_side.png -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/textures/block/glow_berry_basket_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/team-abnormals/berry-good/30a9b1cf576024ce3a8b928d7a5de9c6e8395230/src/main/resources/assets/berry_good/textures/block/glow_berry_basket_top.png -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/textures/block/sweet_berry_basket_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/team-abnormals/berry-good/30a9b1cf576024ce3a8b928d7a5de9c6e8395230/src/main/resources/assets/berry_good/textures/block/sweet_berry_basket_bottom.png -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/textures/block/sweet_berry_basket_side.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/team-abnormals/berry-good/30a9b1cf576024ce3a8b928d7a5de9c6e8395230/src/main/resources/assets/berry_good/textures/block/sweet_berry_basket_side.png -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/textures/block/sweet_berry_basket_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/team-abnormals/berry-good/30a9b1cf576024ce3a8b928d7a5de9c6e8395230/src/main/resources/assets/berry_good/textures/block/sweet_berry_basket_top.png -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/textures/item/glow_berry_pips.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/team-abnormals/berry-good/30a9b1cf576024ce3a8b928d7a5de9c6e8395230/src/main/resources/assets/berry_good/textures/item/glow_berry_pips.png -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/textures/item/glowgurt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/team-abnormals/berry-good/30a9b1cf576024ce3a8b928d7a5de9c6e8395230/src/main/resources/assets/berry_good/textures/item/glowgurt.png -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/textures/item/music_disc_fox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/team-abnormals/berry-good/30a9b1cf576024ce3a8b928d7a5de9c6e8395230/src/main/resources/assets/berry_good/textures/item/music_disc_fox.png -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/textures/item/sweet_berry_meatballs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/team-abnormals/berry-good/30a9b1cf576024ce3a8b928d7a5de9c6e8395230/src/main/resources/assets/berry_good/textures/item/sweet_berry_meatballs.png -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/textures/item/sweet_berry_mince.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/team-abnormals/berry-good/30a9b1cf576024ce3a8b928d7a5de9c6e8395230/src/main/resources/assets/berry_good/textures/item/sweet_berry_mince.png -------------------------------------------------------------------------------- /src/main/resources/assets/berry_good/textures/item/sweet_berry_pips.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/team-abnormals/berry-good/30a9b1cf576024ce3a8b928d7a5de9c6e8395230/src/main/resources/assets/berry_good/textures/item/sweet_berry_pips.png -------------------------------------------------------------------------------- /src/main/resources/berry_good.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "package": "com.teamabnormals.berry_good.core.mixin", 4 | "compatibilityLevel": "JAVA_21", 5 | "minVersion": "0.8", 6 | "refmap": "berry_good.refmap.json", 7 | "mixins": [ 8 | "CaveVinesBlockMixin", 9 | "FoxMixin", 10 | "SweetBerryBushBlockMixin" 11 | ], 12 | "injectors": { 13 | "defaultRequire": 1 14 | } 15 | } -------------------------------------------------------------------------------- /src/main/resources/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/team-abnormals/berry-good/30a9b1cf576024ce3a8b928d7a5de9c6e8395230/src/main/resources/logo.png -------------------------------------------------------------------------------- /src/main/resources/pack.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "pack": { 3 | "description": "Berry Good resources", 4 | "pack_format": 15 5 | } 6 | } --------------------------------------------------------------------------------