diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..a7f7e50 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,42 @@ +# Automatically build the project and run any configured tests for every push +# and submitted pull request. This can help catch issues that only occur on +# certain platforms or Java versions, and provides a first line of defense +# against bad commits. + +name: build +on: [pull_request, push, workflow_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup JDK 17 + uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: microsoft + + - name: Setup Gradle caches + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/loom-cache + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/gradle-wrapper.properties') }} + restore-keys: ${{ runner.os }}-gradle + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Build + run: ./gradlew build + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: Artifacts + path: build/libs/ \ No newline at end of file diff --git a/build.gradle b/build.gradle index 74455d2..cf27ab4 100644 --- a/build.gradle +++ b/build.gradle @@ -1,24 +1,36 @@ plugins { - id 'fabric-loom' version '1.2-SNAPSHOT' + id 'fabric-loom' version '1.9-SNAPSHOT' id 'maven-publish' } -archivesBaseName = project.archives_base_name -version = project.mod_version + "+" + project.minecraft_version +version = "${project.mod_version}+${project.minecraft_version}" group = project.maven_group -repositories { - +base { + archivesName = project.archives_base_name } loom { - accessWidenerPath = file("src/main/resources/gofish.accesswidener") + mods { + "gofish" { + sourceSet("main") + } + } +} + +repositories { + // Add repositories to retrieve artifacts from in here. + // You should only use this when depending on other mods because + // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. + // See https://docs.gradle.org/current/userguide/declaring_repositories.html + // for more information about repositories. } dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" } @@ -31,42 +43,37 @@ processResources { } tasks.withType(JavaCompile).configureEach { + it.options.encoding = "UTF-8" it.options.release = 17 } java { + withSourcesJar() + sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 - - // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task - // if it is present. - // If you remove this line, sources will not be generated. - withSourcesJar() } jar { from("LICENSE") { - rename { "${it}_${project.archivesBaseName}"} + rename { "${it}_${project.base.archivesName.get()}" } } } -// configure the maven publication +// Configure the maven publication publishing { publications { - mavenJava(MavenPublication) { - // add all the jars that should be included when publishing to maven - artifact(remapJar) { - builtBy remapJar - } - artifact(sourcesJar) { - builtBy remapSourcesJar - } + create("mavenJava", MavenPublication) { + artifactId = project.archives_base_name + from components.java } } - // select the repositories you want to publish to + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. repositories { - // uncomment to publish to the local maven - // mavenLocal() + // Add repositories to publish to here. + // Notice: This block does NOT have the same function as the block in the top level. + // The repositories here will be used for publishing your artifact, not for + // retrieving dependencies. } } diff --git a/gradle.properties b/gradle.properties index 213161a..b7dee6a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,10 +3,10 @@ org.gradle.jvmargs=-Xmx1G org.gradle.parallel=true # Fabric Properties -# check these on https://fabricmc.net/use +# Check these on https://fabricmc.net/develop/ minecraft_version=1.20.1 -yarn_mappings=1.20.1+build.1 -loader_version=0.14.21 +yarn_mappings=1.20.1+build.10 +loader_version=0.16.10 # Mod Properties mod_version=1.6.3 @@ -14,5 +14,4 @@ maven_group=draylar archives_base_name=go-fish # Dependencies -# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api -fabric_version=0.83.0+1.20.1 +fabric_version=0.92.3+1.20.1 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e708b1c..a4b76b9 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1b298ae..cea7a79 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists \ No newline at end of file +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 8e25e6c..f3b75f3 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,80 +15,115 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -97,92 +132,120 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" fi +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 9618d8d..9d21a21 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,8 +13,10 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,10 +27,14 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @@ -37,13 +43,13 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -51,48 +57,36 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/images/crates.png b/images/crates.png index a4808d9..9876f3a 100644 Binary files a/images/crates.png and b/images/crates.png differ diff --git a/images/lava_fishing.png b/images/lava_fishing.png index 6ca39fb..d2ae25a 100644 Binary files a/images/lava_fishing.png and b/images/lava_fishing.png differ diff --git a/images/standard_fishing.png b/images/standard_fishing.png index 6d52297..8e87547 100644 Binary files a/images/standard_fishing.png and b/images/standard_fishing.png differ diff --git a/settings.gradle b/settings.gradle index f91a4fe..b02216b 100644 --- a/settings.gradle +++ b/settings.gradle @@ -4,6 +4,7 @@ pluginManagement { name = 'Fabric' url = 'https://maven.fabricmc.net/' } + mavenCentral() gradlePluginPortal() } } diff --git a/src/main/java/draylar/gofish/GoFish.java b/src/main/java/draylar/gofish/GoFish.java index fe5fbcf..ac92cf1 100644 --- a/src/main/java/draylar/gofish/GoFish.java +++ b/src/main/java/draylar/gofish/GoFish.java @@ -7,7 +7,6 @@ import net.fabricmc.fabric.api.registry.FuelRegistry; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.potion.Potions; import net.minecraft.recipe.BrewingRecipeRegistry; import net.minecraft.registry.Registries; @@ -31,6 +30,7 @@ public void onInitialize() { .displayName(Text.translatable("itemGroup.gofish.group")) .build()); + GoFishAttachments.init(); GoFishBlocks.init(); GoFishItems.init(); GoFishEnchantments.init(); diff --git a/src/main/java/draylar/gofish/GoFishClient.java b/src/main/java/draylar/gofish/GoFishClient.java index 13dd26c..0e07351 100644 --- a/src/main/java/draylar/gofish/GoFishClient.java +++ b/src/main/java/draylar/gofish/GoFishClient.java @@ -5,14 +5,17 @@ import draylar.gofish.registry.GoFishBlocks; import draylar.gofish.registry.GoFishEntities; import draylar.gofish.registry.GoFishItems; +import draylar.gofish.registry.GoFishParticles; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; -import net.fabricmc.fabric.api.client.rendering.v1.BlockEntityRendererRegistry; +import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry; import net.fabricmc.fabric.api.client.rendering.v1.BuiltinItemRendererRegistry; -import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry; +import net.minecraft.client.item.ModelPredicateProviderRegistry; +import net.minecraft.client.particle.FishingParticle; import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.block.entity.BlockEntityRendererFactories; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.FishingRodItem; import net.minecraft.item.Item; @@ -24,7 +27,7 @@ public class GoFishClient implements ClientModInitializer { @Override public void onInitializeClient() { BlockRenderLayerMap.INSTANCE.putBlock(GoFishBlocks.ASTRAL_CRATE, RenderLayer.getCutout()); - BlockEntityRendererRegistry.register(GoFishEntities.ASTRAL_CRATE, AstralCrateRenderer::new); + BlockEntityRendererFactories.register(GoFishEntities.ASTRAL_CRATE, AstralCrateRenderer::new); BuiltinItemRendererRegistry.INSTANCE.register(GoFishBlocks.ASTRAL_CRATE.asItem(), new AstralCrateItemRenderer()); registerFishingRodPredicates(GoFishItems.BLAZE_ROD); @@ -36,10 +39,12 @@ public void onInitializeClient() { registerFishingRodPredicates(GoFishItems.DIAMOND_REINFORCED_ROD); registerFishingRodPredicates(GoFishItems.SKELETAL_ROD); registerFishingRodPredicates(GoFishItems.EYE_OF_FISHING); + + ParticleFactoryRegistry.getInstance().register(GoFishParticles.LAVA_FISHING, FishingParticle.Factory::new); } public void registerFishingRodPredicates(Item item) { - FabricModelPredicateProviderRegistry.register(item, new Identifier("cast"), (itemStack, clientWorld, livingEntity, i) -> { + ModelPredicateProviderRegistry.register(item, new Identifier("cast"), (itemStack, clientWorld, livingEntity, i) -> { if (livingEntity == null) { return 0.0F; } else { diff --git a/src/main/java/draylar/gofish/command/FishCommand.java b/src/main/java/draylar/gofish/command/FishCommand.java index b075625..956b279 100644 --- a/src/main/java/draylar/gofish/command/FishCommand.java +++ b/src/main/java/draylar/gofish/command/FishCommand.java @@ -1,7 +1,5 @@ package draylar.gofish.command; -import java.util.List; - import com.mojang.brigadier.arguments.IntegerArgumentType; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; @@ -11,7 +9,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.loot.LootTable; import net.minecraft.loot.LootTables; -import net.minecraft.loot.context.LootContext; import net.minecraft.loot.context.LootContextParameterSet; import net.minecraft.loot.context.LootContextParameters; import net.minecraft.loot.context.LootContextTypes; @@ -21,6 +18,8 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.world.dimension.DimensionType; +import java.util.List; + public class FishCommand { public static void register() { diff --git a/src/main/java/draylar/gofish/item/CrateItem.java b/src/main/java/draylar/gofish/item/CrateItem.java index f073183..9d64d0a 100644 --- a/src/main/java/draylar/gofish/item/CrateItem.java +++ b/src/main/java/draylar/gofish/item/CrateItem.java @@ -9,12 +9,10 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsageContext; import net.minecraft.loot.LootTable; -import net.minecraft.loot.context.LootContext; import net.minecraft.loot.context.LootContextParameterSet; import net.minecraft.loot.context.LootContextParameters; import net.minecraft.loot.context.LootContextTypes; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.*; import net.minecraft.util.math.Vec3d; diff --git a/src/main/java/draylar/gofish/item/ExtendedFishingRodItem.java b/src/main/java/draylar/gofish/item/ExtendedFishingRodItem.java index 3eac97a..5ad4b83 100644 --- a/src/main/java/draylar/gofish/item/ExtendedFishingRodItem.java +++ b/src/main/java/draylar/gofish/item/ExtendedFishingRodItem.java @@ -1,13 +1,6 @@ package draylar.gofish.item; -import java.util.ArrayList; -import java.util.List; - -import draylar.gofish.api.ExperienceBobber; -import draylar.gofish.api.FireproofEntity; -import draylar.gofish.api.FishingBonus; -import draylar.gofish.api.SmeltingBobber; -import draylar.gofish.api.SoundInstance; +import draylar.gofish.api.*; import draylar.gofish.registry.GoFishEnchantments; import net.minecraft.client.item.TooltipContext; import net.minecraft.enchantment.EnchantmentHelper; @@ -27,6 +20,9 @@ import net.minecraft.util.math.random.Random; import net.minecraft.world.World; +import java.util.ArrayList; +import java.util.List; + public class ExtendedFishingRodItem extends FishingRodItem { private final SoundInstance retrieve; diff --git a/src/main/java/draylar/gofish/item/LureItem.java b/src/main/java/draylar/gofish/item/LureItem.java index 74e4048..d79b534 100644 --- a/src/main/java/draylar/gofish/item/LureItem.java +++ b/src/main/java/draylar/gofish/item/LureItem.java @@ -4,7 +4,6 @@ import net.minecraft.client.item.TooltipContext; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.world.World; diff --git a/src/main/java/draylar/gofish/item/SoulLureItem.java b/src/main/java/draylar/gofish/item/SoulLureItem.java index 860c16f..39a736f 100644 --- a/src/main/java/draylar/gofish/item/SoulLureItem.java +++ b/src/main/java/draylar/gofish/item/SoulLureItem.java @@ -5,7 +5,6 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.world.World; diff --git a/src/main/java/draylar/gofish/item/TooltippedItem.java b/src/main/java/draylar/gofish/item/TooltippedItem.java index 2c1a8dd..015805e 100644 --- a/src/main/java/draylar/gofish/item/TooltippedItem.java +++ b/src/main/java/draylar/gofish/item/TooltippedItem.java @@ -3,7 +3,6 @@ import net.minecraft.client.item.TooltipContext; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.world.World; diff --git a/src/main/java/draylar/gofish/loot/WeatherCondition.java b/src/main/java/draylar/gofish/loot/WeatherCondition.java index 81fcd2f..2f94d2f 100644 --- a/src/main/java/draylar/gofish/loot/WeatherCondition.java +++ b/src/main/java/draylar/gofish/loot/WeatherCondition.java @@ -1,13 +1,8 @@ package draylar.gofish.loot; -import java.util.Set; - -import org.jetbrains.annotations.Nullable; - import com.google.common.collect.ImmutableSet; -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonObject; -import com.google.gson.JsonSerializationContext; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import draylar.gofish.registry.GoFishLoot; import net.minecraft.entity.Entity; import net.minecraft.loot.condition.LootCondition; @@ -15,26 +10,24 @@ import net.minecraft.loot.context.LootContext; import net.minecraft.loot.context.LootContextParameter; import net.minecraft.loot.context.LootContextParameters; -import net.minecraft.util.JsonSerializer; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; -public class WeatherCondition implements LootCondition { - - protected boolean raining = false; - protected boolean thundering = false; - protected boolean snowing = false; - - public WeatherCondition() { +import java.util.Optional; +import java.util.Set; - } +public record WeatherCondition(Optional raining, Optional thundering, Optional snowing) implements LootCondition { - public WeatherCondition(boolean raining, boolean thundering, boolean snowing) { - this.raining = raining; - this.thundering = thundering; - this.snowing = snowing; - } + public static final Codec CODEC = RecordCodecBuilder.create( + instance -> instance.group( + Codec.BOOL.optionalFieldOf("raining").forGetter(WeatherCondition::raining), + Codec.BOOL.optionalFieldOf("thundering").forGetter(WeatherCondition::thundering), + Codec.BOOL.optionalFieldOf("snowing").forGetter(WeatherCondition::snowing) + ) + .apply(instance, WeatherCondition::new) + ); @Override public LootConditionType getType() { @@ -55,17 +48,17 @@ public boolean test(LootContext lootContext) { World world = entity.getWorld(); // If raining is required and the world is not raining, return false. - if (raining && !world.isRaining()) { + if (raining.isPresent() && raining.get() && !world.isRaining()) { return false; } // If thundering is required and the world is not raining, return false. - if (thundering && !world.isThundering()) { + if (thundering.isPresent() && thundering.get() && !world.isThundering()) { return false; } // same check for snowing - if (snowing) { + if (snowing.isPresent() && snowing.get()) { // >= .15 = no snow if(world.getBiome(entity.getBlockPos()).value().doesNotSnow(new BlockPos((int) Math.floor(pos.x), (int) Math.floor(pos.y), (int) Math.floor(pos.z)))) { return false; @@ -82,24 +75,6 @@ public boolean test(LootContext lootContext) { } public static LootCondition.Builder builder(boolean raining, boolean thundering, boolean snowing) { - return () -> new WeatherCondition(raining, thundering, snowing); - } - - public static class Serializer implements JsonSerializer { - - @Override - public void toJson(JsonObject jsonObject, WeatherCondition condition, JsonSerializationContext jsonSerializationContext) { - jsonObject.addProperty("raining", condition.raining); - jsonObject.addProperty("thundering", condition.thundering); - jsonObject.addProperty("snowing", condition.snowing); - } - - @Override - public WeatherCondition fromJson(JsonObject obj, JsonDeserializationContext context) { - return new WeatherCondition( - obj.has("raining") && obj.get("raining").getAsBoolean(), - obj.has("thundering") && obj.get("thundering").getAsBoolean(), - obj.has("snowing") && obj.get("snowing").getAsBoolean()); - } + return () -> new WeatherCondition(Optional.of(raining), Optional.of(thundering), Optional.of(snowing)); } } diff --git a/src/main/java/draylar/gofish/loot/biome/BiomePredicate.java b/src/main/java/draylar/gofish/loot/biome/BiomePredicate.java index 3bacb87..1139151 100644 --- a/src/main/java/draylar/gofish/loot/biome/BiomePredicate.java +++ b/src/main/java/draylar/gofish/loot/biome/BiomePredicate.java @@ -1,43 +1,32 @@ package draylar.gofish.loot.biome; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import net.minecraft.util.Identifier; -import net.minecraft.util.JsonHelper; -import net.minecraft.registry.entry.RegistryEntry; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; -import net.minecraft.world.World; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.util.Identifier; import net.minecraft.world.biome.Biome; import java.util.ArrayList; import java.util.Collections; import java.util.List; -public class BiomePredicate { +public record BiomePredicate(List> valid) { + public static final Codec CODEC = RecordCodecBuilder.create( + instance -> instance.group( + RegistryKey.createCodec(RegistryKeys.BIOME).listOf().fieldOf("valid").forGetter(BiomePredicate::valid) + ) + .apply(instance, BiomePredicate::new) + ); public static final BiomePredicate EMPTY = new BiomePredicate(Collections.emptyList()); - private static final String VALID_KEY = "valid"; - private final List> valid; - - public BiomePredicate(List valid) { - this.valid = builder().setValidFromString(valid).valid; - } - private BiomePredicate(Builder builder) { - this.valid = builder.valid; + public static BiomePredicate create(List> valid) { + return new BiomePredicate(valid); } - public static Builder builder() { - return new Builder(); - } - - public List> getValid() { - return valid; - } - - public boolean test(World world, RegistryEntry biome) { + public boolean test(RegistryEntry biome) { for (RegistryKey key : valid) { if (biome.matchesKey(key)) { return true; @@ -46,37 +35,12 @@ public boolean test(World world, RegistryEntry biome) { return false; } - public JsonElement toJson() { - JsonObject obj = new JsonObject(); - JsonArray arr = new JsonArray(); - - for(RegistryKey rKey : valid) { - arr.add(rKey.getValue().toString()); - } - - obj.add(VALID_KEY, arr); - return obj; - } - - public static BiomePredicate fromJson(JsonElement element) { - JsonObject obj = JsonHelper.asObject(element, VALID_KEY); - JsonArray arr = obj.getAsJsonArray(VALID_KEY); - - List sArr = new ArrayList<>(); - for (int i = 0; i < arr.size(); i++) { - sArr.add(arr.get(i).getAsString()); - } - - return new BiomePredicate(sArr); - } - - public static class Builder { private List> valid; - private Builder() { - + public static Builder create() { + return new BiomePredicate.Builder(); } public Builder setValid(List> valid) { @@ -114,7 +78,7 @@ public Builder of(BiomePredicate biomePredicate) { } public BiomePredicate build() { - return new BiomePredicate(this); + return new BiomePredicate(this.valid); } } } diff --git a/src/main/java/draylar/gofish/loot/biome/BiomeTagPredicate.java b/src/main/java/draylar/gofish/loot/biome/BiomeTagPredicate.java index 366cbd9..2c6bb46 100644 --- a/src/main/java/draylar/gofish/loot/biome/BiomeTagPredicate.java +++ b/src/main/java/draylar/gofish/loot/biome/BiomeTagPredicate.java @@ -1,38 +1,29 @@ package draylar.gofish.loot.biome; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; - +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.tag.TagKey; import net.minecraft.util.Identifier; -import net.minecraft.util.JsonHelper; import net.minecraft.world.biome.Biome; -public class BiomeTagPredicate { - - public static final BiomeTagPredicate EMPTY = new BiomeTagPredicate(Collections.emptyList()); - private static final String VALID_KEY = "valid"; - private final List> valid; - - public BiomeTagPredicate(List> valid) { this.valid = valid; } +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; - public BiomeTagPredicate(Builder builder) { - this.valid = builder.valid; - } +public record BiomeTagPredicate(List> valid) { - public static Builder builder() { - return new Builder(); - } + public static final Codec CODEC = RecordCodecBuilder.create( + instance -> instance.group( + TagKey.unprefixedCodec(RegistryKeys.BIOME).listOf().fieldOf("valid").forGetter(BiomeTagPredicate::valid) + ) + .apply(instance, BiomeTagPredicate::new) + ); + public static final BiomeTagPredicate EMPTY = new BiomeTagPredicate(Collections.emptyList()); - public List> getValid() { - return valid; + public static BiomeTagPredicate create(List> valid) { + return new BiomeTagPredicate(valid); } public boolean test(RegistryEntry biome) { @@ -46,36 +37,12 @@ public boolean test(RegistryEntry biome) { return false; } - public JsonElement toJson() { - JsonObject obj = new JsonObject(); - JsonArray arr = new JsonArray(); - - for(TagKey tag : valid) { - arr.add(tag.id().toString()); - } - - obj.add(VALID_KEY, arr); - return obj; - } - - public static BiomeTagPredicate fromJson(JsonElement element) { - JsonObject obj = JsonHelper.asObject(element, VALID_KEY); - JsonArray arr = obj.getAsJsonArray(VALID_KEY); - - List sArr = new ArrayList<>(); - for (int i = 0; i < arr.size(); i++) { - sArr.add(arr.get(i).getAsString()); - } - - return BiomeTagPredicate.builder().setValidByString(sArr).build(); - } - public static class Builder { private List> valid = new ArrayList<>(); - private Builder() { - + public static Builder create() { + return new BiomeTagPredicate.Builder(); } public Builder setValid(List> valid) { @@ -105,7 +72,7 @@ public Builder of(BiomeTagPredicate biomePredicate) { } public BiomeTagPredicate build() { - return new BiomeTagPredicate(this); + return new BiomeTagPredicate(this.valid); } } } diff --git a/src/main/java/draylar/gofish/loot/biome/BiomeLootCondition.java b/src/main/java/draylar/gofish/loot/biome/MatchBiomeLootCondition.java similarity index 52% rename from src/main/java/draylar/gofish/loot/biome/BiomeLootCondition.java rename to src/main/java/draylar/gofish/loot/biome/MatchBiomeLootCondition.java index 3f672e2..d18600b 100644 --- a/src/main/java/draylar/gofish/loot/biome/BiomeLootCondition.java +++ b/src/main/java/draylar/gofish/loot/biome/MatchBiomeLootCondition.java @@ -1,34 +1,32 @@ package draylar.gofish.loot.biome; import com.google.common.collect.ImmutableSet; -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonObject; -import com.google.gson.JsonSerializationContext; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import draylar.gofish.registry.GoFishLoot; import net.minecraft.loot.condition.LootCondition; import net.minecraft.loot.condition.LootConditionType; import net.minecraft.loot.context.LootContext; import net.minecraft.loot.context.LootContextParameter; import net.minecraft.loot.context.LootContextParameters; -import net.minecraft.util.JsonSerializer; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.tag.TagKey; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.biome.Biome; import java.util.*; -public class BiomeLootCondition implements LootCondition { +public record MatchBiomeLootCondition(Optional category, Optional biome) implements LootCondition { - protected final BiomeTagPredicate category; - protected final BiomePredicate biome; - - public BiomeLootCondition(BiomeTagPredicate category, BiomePredicate biome) { - this.category = category; - this.biome = biome; - } + public static final Codec CODEC = RecordCodecBuilder.create( + instance -> instance.group( + BiomeTagPredicate.CODEC.optionalFieldOf("category").forGetter(MatchBiomeLootCondition::category), + BiomePredicate.CODEC.optionalFieldOf("biome").forGetter(MatchBiomeLootCondition::biome) + ) + .apply(instance, MatchBiomeLootCondition::new) + ); @Override public LootConditionType getType() { @@ -48,15 +46,15 @@ public boolean test(LootContext lootContext) { RegistryEntry fisherBiome = lootContext.getWorld().getBiome(new BlockPos((int) Math.floor(origin.x), (int) Math.floor(origin.y), (int) Math.floor(origin.z))); // Category predicate is null, check exact biome - if (category == null || category.getValid().isEmpty()) { - if (biome != null && !biome.getValid().isEmpty()) { - return biome.test(lootContext.getWorld(), fisherBiome); + if (category.isEmpty() || category.get().valid().isEmpty()) { + if (biome.isPresent() && !biome.get().valid().isEmpty()) { + return biome.get().test(fisherBiome); } } // Category predicate is not null, check it - else if (!category.getValid().isEmpty()) { - return category.test(fisherBiome); + else { + return category.get().test(fisherBiome); } } @@ -78,51 +76,22 @@ public static LootCondition.Builder builder(List> categories, List categories.forEach(category -> stringCats.add(category.id().toString())); biomes.forEach(biome -> stringBiomes.add(biome.getValue().toString())); - return builder(BiomeTagPredicate.builder().setValidByString(stringCats), BiomePredicate.builder().setValidFromString(stringBiomes)); + return builder(BiomeTagPredicate.Builder.create().setValidByString(stringCats), BiomePredicate.Builder.create().setValidFromString(stringBiomes)); } public static LootCondition.Builder builder(String category, String biome) { - return builder(BiomeTagPredicate.builder().add(category), BiomePredicate.builder().add(biome)); + return builder(BiomeTagPredicate.Builder.create().add(category), BiomePredicate.Builder.create().add(biome)); } public static LootCondition.Builder builder(BiomeTagPredicate.Builder categoryBuilder) { - return builder(categoryBuilder, BiomePredicate.builder()); + return builder(categoryBuilder, BiomePredicate.Builder.create()); } public static LootCondition.Builder builder(BiomePredicate.Builder biomeBuilder) { - return builder(BiomeTagPredicate.builder(), biomeBuilder); + return builder(BiomeTagPredicate.Builder.create(), biomeBuilder); } public static LootCondition.Builder builder(BiomeTagPredicate.Builder categoryBuilder, BiomePredicate.Builder biomeBuilder) { - return () -> new BiomeLootCondition(categoryBuilder.build(), biomeBuilder.build()); - } - - public static class Serializer implements JsonSerializer { - - @Override - public void toJson(JsonObject jsonObject, BiomeLootCondition condition, JsonSerializationContext jsonSerializationContext) { - jsonObject.add("category", condition.category.toJson()); - jsonObject.add("biome", condition.biome.toJson()); - } - - @Override - public BiomeLootCondition fromJson(JsonObject obj, JsonDeserializationContext context) { - BiomeTagPredicate categoryPredicate; - BiomePredicate biomePredicate; - - if (obj.has("category")) { - categoryPredicate = BiomeTagPredicate.fromJson(obj.get("category")); - } else { - categoryPredicate = BiomeTagPredicate.EMPTY; - } - - if (obj.has("biome")) { - biomePredicate = BiomePredicate.fromJson(obj.get("biome")); - } else { - biomePredicate = BiomePredicate.EMPTY; - } - - return new BiomeLootCondition(categoryPredicate, biomePredicate); - } + return () -> new MatchBiomeLootCondition(Optional.of(categoryBuilder.build()), Optional.of(biomeBuilder.build())); } } diff --git a/src/main/java/draylar/gofish/loot/moon/FullMoonCondition.java b/src/main/java/draylar/gofish/loot/moon/FullMoonCondition.java index bfe8d3f..5d5374c 100644 --- a/src/main/java/draylar/gofish/loot/moon/FullMoonCondition.java +++ b/src/main/java/draylar/gofish/loot/moon/FullMoonCondition.java @@ -1,9 +1,7 @@ package draylar.gofish.loot.moon; import com.google.common.collect.ImmutableSet; -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonObject; -import com.google.gson.JsonSerializationContext; +import com.mojang.serialization.Codec; import draylar.gofish.registry.GoFishLoot; import net.minecraft.entity.Entity; import net.minecraft.loot.condition.LootCondition; @@ -11,15 +9,13 @@ import net.minecraft.loot.context.LootContext; import net.minecraft.loot.context.LootContextParameter; import net.minecraft.loot.context.LootContextParameters; -import net.minecraft.util.JsonSerializer; -import java.util.*; +import java.util.Set; -public class FullMoonCondition implements LootCondition { +public record FullMoonCondition() implements LootCondition { - public FullMoonCondition() { - - } + public static final FullMoonCondition INSTANCE = new FullMoonCondition(); + public static final Codec CODEC = Codec.unit(INSTANCE); @Override public LootConditionType getType() { @@ -44,19 +40,6 @@ public boolean test(LootContext lootContext) { } public static LootCondition.Builder builder() { - return FullMoonCondition::new; - } - - public static class Serializer implements JsonSerializer { - - @Override - public void toJson(JsonObject jsonObject, FullMoonCondition condition, JsonSerializationContext jsonSerializationContext) { - - } - - @Override - public FullMoonCondition fromJson(JsonObject obj, JsonDeserializationContext context) { - return new FullMoonCondition(); - } + return () -> INSTANCE; } } \ No newline at end of file diff --git a/src/main/java/draylar/gofish/mixin/EntityMixin.java b/src/main/java/draylar/gofish/mixin/EntityMixin.java new file mode 100644 index 0000000..e9c0d8f --- /dev/null +++ b/src/main/java/draylar/gofish/mixin/EntityMixin.java @@ -0,0 +1,30 @@ +package draylar.gofish.mixin; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import draylar.gofish.api.FireproofEntity; +import draylar.gofish.registry.GoFishAttachments; +import net.minecraft.entity.Entity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@SuppressWarnings("UnstableApiUsage") +@Mixin(Entity.class) +public abstract class EntityMixin implements FireproofEntity { + @ModifyReturnValue( + method = "isFireImmune", + at = @At("RETURN") + ) + private boolean isFireImmune(boolean original) { + return original || gf_isFireproof(); + } + + @Override + public boolean gf_isFireproof() { + return Boolean.TRUE.equals(((Entity) (Object) this).getAttached(GoFishAttachments.FIRE_IMMUNE)); + } + + @Override + public void gf_setFireproof(boolean value) { + ((Entity) (Object) this).setAttached(GoFishAttachments.FIRE_IMMUNE, value); + } +} diff --git a/src/main/java/draylar/gofish/mixin/FishingBobberEntityRendererMixin.java b/src/main/java/draylar/gofish/mixin/FishingBobberEntityRendererMixin.java index 6309fd9..67ca76c 100644 --- a/src/main/java/draylar/gofish/mixin/FishingBobberEntityRendererMixin.java +++ b/src/main/java/draylar/gofish/mixin/FishingBobberEntityRendererMixin.java @@ -9,6 +9,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyVariable; @@ -17,6 +18,7 @@ @Mixin(FishingBobberEntityRenderer.class) public class FishingBobberEntityRendererMixin { + @Unique private PlayerEntity gofish_owner; @Inject( diff --git a/src/main/java/draylar/gofish/mixin/FishingBobberFireproofMixin.java b/src/main/java/draylar/gofish/mixin/FishingBobberFireproofMixin.java deleted file mode 100644 index e91743c..0000000 --- a/src/main/java/draylar/gofish/mixin/FishingBobberFireproofMixin.java +++ /dev/null @@ -1,53 +0,0 @@ -package draylar.gofish.mixin; - -import draylar.gofish.api.FireproofEntity; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.data.DataTracker; -import net.minecraft.entity.data.TrackedData; -import net.minecraft.entity.data.TrackedDataHandlerRegistry; -import net.minecraft.entity.projectile.FishingBobberEntity; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(FishingBobberEntity.class) -public abstract class FishingBobberFireproofMixin extends Entity implements FireproofEntity { - - @Unique - private static final TrackedData GF_FIRE_IMMUNE = DataTracker.registerData(FishingBobberEntity.class, TrackedDataHandlerRegistry.BOOLEAN); - - private FishingBobberFireproofMixin(EntityType type, World world) { - super(type, world); - } - - @Inject( - method = "initDataTracker", - at = @At("RETURN")) - private void registerFireImmuneTracker(CallbackInfo ci) { - dataTracker.startTracking(GF_FIRE_IMMUNE, false); - } - - // todo: inject into super instead - @Override - public boolean isOnFire() { - if(dataTracker.get(GF_FIRE_IMMUNE)) { - return false; - } - - return super.isOnFire(); - } - - @Override - public boolean gf_isFireproof() { - return dataTracker.get(GF_FIRE_IMMUNE); - } - - @Override - public void gf_setFireproof(boolean value) { - dataTracker.set(GF_FIRE_IMMUNE, value); - } -} diff --git a/src/main/java/draylar/gofish/mixin/FishingBobberLavaFishingMixin.java b/src/main/java/draylar/gofish/mixin/FishingBobberLavaFishingMixin.java index db5bcc7..5a14240 100644 --- a/src/main/java/draylar/gofish/mixin/FishingBobberLavaFishingMixin.java +++ b/src/main/java/draylar/gofish/mixin/FishingBobberLavaFishingMixin.java @@ -1,5 +1,6 @@ package draylar.gofish.mixin; +import com.llamalad7.mixinextras.sugar.Local; import draylar.gofish.item.ExtendedFishingRodItem; import draylar.gofish.registry.GoFishParticles; import net.minecraft.block.BlockState; @@ -13,10 +14,10 @@ import net.minecraft.fluid.FluidState; import net.minecraft.item.Item; import net.minecraft.particle.ParticleTypes; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.sound.SoundEvents; import net.minecraft.registry.tag.FluidTags; import net.minecraft.registry.tag.TagKey; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.sound.SoundEvents; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -27,7 +28,6 @@ import org.spongepowered.asm.mixin.injection.ModifyVariable; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; @Mixin(FishingBobberEntity.class) public abstract class FishingBobberLavaFishingMixin extends Entity { @@ -58,15 +58,11 @@ private float bobberInLava(float value) { // Player is holding extended fishing rod, check if it can be in lava. // Otherwise, fallback to default behavior. - if (mainHandItem instanceof ExtendedFishingRodItem) { - ExtendedFishingRodItem usedRod = (ExtendedFishingRodItem) mainHandItem; - + if (mainHandItem instanceof ExtendedFishingRodItem usedRod) { if (usedRod.canFishInLava()) { return fluidState.getHeight(this.getWorld(), blockPos); } - } else if (offHandItem instanceof ExtendedFishingRodItem) { - ExtendedFishingRodItem usedRod = (ExtendedFishingRodItem) offHandItem; - + } else if (offHandItem instanceof ExtendedFishingRodItem usedRod) { if (usedRod.canFishInLava()) { return fluidState.getHeight(this.getWorld(), blockPos); } @@ -100,10 +96,9 @@ private boolean fallOutsideLiquid(FluidState fluid, TagKey tag) { @Inject( method = "tickFishingLogic", - at = @At(value = "INVOKE", target = "Lnet/minecraft/block/BlockState;isOf(Lnet/minecraft/block/Block;)Z", ordinal = 0), - locals = LocalCapture.CAPTURE_FAILHARD + at = @At(value = "INVOKE", target = "Lnet/minecraft/block/BlockState;isOf(Lnet/minecraft/block/Block;)Z", ordinal = 0) ) - private void fishingLavaParticles(BlockPos pos, CallbackInfo ci, ServerWorld serverWorld, int i, BlockPos blockPos, float f, float g, float h, double d, double e, double j, BlockState blockState) { + private void fishingLavaParticles(BlockPos pos, CallbackInfo ci, @Local ServerWorld serverWorld, @Local(ordinal = 0) float f, @Local(ordinal = 1) float g, @Local(ordinal = 2) float h, @Local(ordinal = 0) double d, @Local(ordinal = 1) double e, @Local(ordinal = 2) double j, @Local BlockState blockState) { if (!blockState.isOf(Blocks.LAVA)) { return; } @@ -119,10 +114,9 @@ private void fishingLavaParticles(BlockPos pos, CallbackInfo ci, ServerWorld ser @Inject( method = "tickFishingLogic", - at = @At(value = "INVOKE", target = "Lnet/minecraft/block/BlockState;isOf(Lnet/minecraft/block/Block;)Z", ordinal = 1), - locals = LocalCapture.CAPTURE_FAILHARD + at = @At(value = "INVOKE", target = "Lnet/minecraft/block/BlockState;isOf(Lnet/minecraft/block/Block;)Z", ordinal = 1) ) - private void fishSecondaryLavaParticles(BlockPos pos, CallbackInfo ci, ServerWorld serverWorld, int i, BlockPos blockPos, float f, float g, float h, double d, double e, double j, BlockState blockState) { + private void fishSecondaryLavaParticles(BlockPos pos, CallbackInfo ci, @Local ServerWorld serverWorld, @Local BlockState blockState) { if (blockState.isOf(Blocks.LAVA)) { serverWorld.spawnParticles(ParticleTypes.LAVA, pos.getX(), pos.getY(), pos.getZ(), 2 + this.random.nextInt(2), 0.10000000149011612D, 0.0D, 0.10000000149011612D, 0.0D); } diff --git a/src/main/java/draylar/gofish/mixin/FishingBobberLootMixin.java b/src/main/java/draylar/gofish/mixin/FishingBobberLootMixin.java index 0c297e9..805a5b3 100644 --- a/src/main/java/draylar/gofish/mixin/FishingBobberLootMixin.java +++ b/src/main/java/draylar/gofish/mixin/FishingBobberLootMixin.java @@ -1,31 +1,24 @@ package draylar.gofish.mixin; +import com.llamalad7.mixinextras.sugar.Local; import draylar.gofish.api.FireproofEntity; import draylar.gofish.impl.GoFishLootTables; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.projectile.FishingBobberEntity; import net.minecraft.item.ItemStack; import net.minecraft.loot.LootManager; import net.minecraft.loot.LootTable; import net.minecraft.loot.LootTables; -import net.minecraft.loot.context.LootContext; -import net.minecraft.loot.context.LootContextParameterSet; import net.minecraft.util.Identifier; import net.minecraft.world.World; import net.minecraft.world.dimension.DimensionType; - import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; - -import java.util.Iterator; -import java.util.List; @Mixin(FishingBobberEntity.class) public abstract class FishingBobberLootMixin extends Entity { @@ -53,9 +46,9 @@ private LootTable getTable(LootManager lootManager, Identifier id) { @Inject( method = "use", - at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/ItemEntity;setVelocity(DDD)V"), - locals = LocalCapture.CAPTURE_FAILHARD) - private void setFireproof(ItemStack usedItem, CallbackInfoReturnable cir, PlayerEntity playerEntity, int i, LootContextParameterSet lootContextParameterSet, LootTable lootTable, List list, Iterator var7, ItemStack itemStack, ItemEntity itemEntity, double d, double e, double f, double g) { + at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/ItemEntity;setVelocity(DDD)V") + ) + private void setFireproof(ItemStack usedItem, CallbackInfoReturnable cir, @Local ItemEntity itemEntity) { // If the user is fishing in the nether, tell the dropped loot to ignore lava/fire burning until pickup if(getWorld().getDimension().ultrawarm()) { ((FireproofEntity) itemEntity).gf_setFireproof(true); diff --git a/src/main/java/draylar/gofish/mixin/FishingBobberValidityMixin.java b/src/main/java/draylar/gofish/mixin/FishingBobberValidityMixin.java index 14e4f50..f8f3e3e 100644 --- a/src/main/java/draylar/gofish/mixin/FishingBobberValidityMixin.java +++ b/src/main/java/draylar/gofish/mixin/FishingBobberValidityMixin.java @@ -9,7 +9,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @@ -17,8 +16,6 @@ @Mixin(FishingBobberEntity.class) public abstract class FishingBobberValidityMixin extends Entity { - @Shadow public abstract PlayerEntity getPlayerOwner(); - private FishingBobberValidityMixin(EntityType type, World world) { super(type, world); } diff --git a/src/main/java/draylar/gofish/mixin/FishingHookPredicateMixin.java b/src/main/java/draylar/gofish/mixin/FishingHookPredicateMixin.java index a100a38..a31e2f9 100644 --- a/src/main/java/draylar/gofish/mixin/FishingHookPredicateMixin.java +++ b/src/main/java/draylar/gofish/mixin/FishingHookPredicateMixin.java @@ -24,9 +24,7 @@ public class FishingHookPredicateMixin { at = @At("HEAD"), cancellable = true) private void overrideCreativePredicate(Entity entity, ServerWorld world, Vec3d pos, CallbackInfoReturnable cir) { - if (entity instanceof ServerPlayerEntity) { - ServerPlayerEntity player = (ServerPlayerEntity) entity; - + if (entity instanceof ServerPlayerEntity player) { if (player.isCreative() && player.hasPermissionLevel(2)) { cir.setReturnValue(true); } diff --git a/src/main/java/draylar/gofish/mixin/ItemEntityFireproofMixin.java b/src/main/java/draylar/gofish/mixin/ItemEntityFireproofMixin.java deleted file mode 100644 index 12d117e..0000000 --- a/src/main/java/draylar/gofish/mixin/ItemEntityFireproofMixin.java +++ /dev/null @@ -1,62 +0,0 @@ -package draylar.gofish.mixin; - -import draylar.gofish.api.FireproofEntity; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.ItemEntity; -import net.minecraft.entity.data.DataTracker; -import net.minecraft.entity.data.TrackedData; -import net.minecraft.entity.data.TrackedDataHandlerRegistry; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(ItemEntity.class) -public abstract class ItemEntityFireproofMixin extends Entity implements FireproofEntity { - - @Unique - private static final TrackedData GF_FIRE_IMMUNE = DataTracker.registerData(ItemEntity.class, TrackedDataHandlerRegistry.BOOLEAN); - - public ItemEntityFireproofMixin(EntityType type, World world) { - super(type, world); - } - - @Inject( - method = "initDataTracker", - at = @At("RETURN")) - private void registerFireImmuneTracker(CallbackInfo ci) { - dataTracker.startTracking(GF_FIRE_IMMUNE, false); - } - - @Inject( - method = "isFireImmune", - at = @At("RETURN"), - cancellable = true) - private void isLavaFishingLoot(CallbackInfoReturnable cir) { - cir.setReturnValue(cir.getReturnValue() || dataTracker.get(GF_FIRE_IMMUNE)); - } - - // todo: inject into super instead - @Override - public boolean isOnFire() { - if(gf_isFireproof()) { - return false; - } - - return super.isOnFire(); - } - - @Override - public boolean gf_isFireproof() { - return dataTracker.get(GF_FIRE_IMMUNE); - } - - @Override - public void gf_setFireproof(boolean value) { - dataTracker.set(GF_FIRE_IMMUNE, value); - } -} diff --git a/src/main/java/draylar/gofish/mixin/LocationPredicateBuilderAccessor.java b/src/main/java/draylar/gofish/mixin/LocationPredicateBuilderAccessor.java deleted file mode 100644 index 1a8402f..0000000 --- a/src/main/java/draylar/gofish/mixin/LocationPredicateBuilderAccessor.java +++ /dev/null @@ -1,12 +0,0 @@ -package draylar.gofish.mixin; - -import net.minecraft.predicate.NumberRange; -import net.minecraft.predicate.entity.LocationPredicate; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(LocationPredicate.Builder.class) -public interface LocationPredicateBuilderAccessor { - @Accessor("y") - void setY(NumberRange.FloatRange y); -} diff --git a/src/main/java/draylar/gofish/mixin/LootTableBuilderAccessor.java b/src/main/java/draylar/gofish/mixin/LootTableBuilderAccessor.java deleted file mode 100644 index fb1300d..0000000 --- a/src/main/java/draylar/gofish/mixin/LootTableBuilderAccessor.java +++ /dev/null @@ -1,14 +0,0 @@ -package draylar.gofish.mixin; - -import net.minecraft.loot.LootPool; -import net.minecraft.loot.LootTable; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -import java.util.List; - -@Mixin(LootTable.Builder.class) -public interface LootTableBuilderAccessor { - @Accessor - List getPools(); -} diff --git a/src/main/java/draylar/gofish/mixin/ParticleManagerMixin.java b/src/main/java/draylar/gofish/mixin/ParticleManagerMixin.java deleted file mode 100644 index b584bfb..0000000 --- a/src/main/java/draylar/gofish/mixin/ParticleManagerMixin.java +++ /dev/null @@ -1,26 +0,0 @@ -package draylar.gofish.mixin; - -import draylar.gofish.registry.GoFishParticles; -import net.minecraft.client.particle.FishingParticle; -import net.minecraft.client.particle.ParticleManager; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.particle.ParticleType; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(ParticleManager.class) -public abstract class ParticleManagerMixin { - - @Shadow protected abstract void registerFactory(ParticleType particleType, ParticleManager.SpriteAwareFactory spriteAwareFactory); - - @Inject( - method = "registerDefaultFactories", - at = @At("RETURN") - ) - private void registerParticles(CallbackInfo ci) { - this.registerFactory(GoFishParticles.LAVA_FISHING, FishingParticle.Factory::new); - } -} diff --git a/src/main/java/draylar/gofish/registry/GoFishAttachments.java b/src/main/java/draylar/gofish/registry/GoFishAttachments.java new file mode 100644 index 0000000..8f8b93e --- /dev/null +++ b/src/main/java/draylar/gofish/registry/GoFishAttachments.java @@ -0,0 +1,17 @@ +package draylar.gofish.registry; + +import com.mojang.serialization.Codec; +import draylar.gofish.GoFish; +import net.fabricmc.fabric.api.attachment.v1.AttachmentRegistry; +import net.fabricmc.fabric.api.attachment.v1.AttachmentType; + +@SuppressWarnings("UnstableApiUsage") +public class GoFishAttachments { + + // Used to represent an Entity that is fireproof, i.e. cannot be destroyed by fire or lava. + public static final AttachmentType FIRE_IMMUNE = AttachmentRegistry.createPersistent(GoFish.id("fire_immune"), Codec.BOOL); + + public static void init() { + // NO-OP + } +} diff --git a/src/main/java/draylar/gofish/registry/GoFishBlocks.java b/src/main/java/draylar/gofish/registry/GoFishBlocks.java index 4c7aef1..817c252 100644 --- a/src/main/java/draylar/gofish/registry/GoFishBlocks.java +++ b/src/main/java/draylar/gofish/registry/GoFishBlocks.java @@ -11,10 +11,10 @@ import net.minecraft.block.Blocks; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; import net.minecraft.util.Identifier; import net.minecraft.util.Rarity; -import net.minecraft.registry.Registry; -import net.minecraft.registry.Registries; public class GoFishBlocks { diff --git a/src/main/java/draylar/gofish/registry/GoFishEnchantments.java b/src/main/java/draylar/gofish/registry/GoFishEnchantments.java index 17dd181..58e9026 100644 --- a/src/main/java/draylar/gofish/registry/GoFishEnchantments.java +++ b/src/main/java/draylar/gofish/registry/GoFishEnchantments.java @@ -3,8 +3,8 @@ import draylar.gofish.GoFish; import draylar.gofish.enchantment.DeepfryEnchantment; import net.minecraft.enchantment.Enchantment; -import net.minecraft.registry.Registry; import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; public class GoFishEnchantments { @@ -17,8 +17,4 @@ public static Enchantment register(String name, Enchantment enchantment) { public static void init() { // NO-OP } - - private GoFishEnchantments() { - // NO-OP - } } diff --git a/src/main/java/draylar/gofish/registry/GoFishEntities.java b/src/main/java/draylar/gofish/registry/GoFishEntities.java index 65f1c3a..d695c74 100644 --- a/src/main/java/draylar/gofish/registry/GoFishEntities.java +++ b/src/main/java/draylar/gofish/registry/GoFishEntities.java @@ -7,8 +7,8 @@ import net.minecraft.block.entity.BlockEntityType; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; -import net.minecraft.registry.Registry; import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; public class GoFishEntities { @@ -27,8 +27,4 @@ private static EntityType register(String name, EntityType public static void init() { // NO-OP } - - private GoFishEntities() { - // NO-OP - } } diff --git a/src/main/java/draylar/gofish/registry/GoFishLoot.java b/src/main/java/draylar/gofish/registry/GoFishLoot.java index 4332cf7..637ab51 100644 --- a/src/main/java/draylar/gofish/registry/GoFishLoot.java +++ b/src/main/java/draylar/gofish/registry/GoFishLoot.java @@ -1,30 +1,43 @@ package draylar.gofish.registry; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.mojang.serialization.Codec; +import com.mojang.serialization.JsonOps; import draylar.gofish.GoFish; import draylar.gofish.loot.WeatherCondition; -import draylar.gofish.loot.biome.BiomeLootCondition; +import draylar.gofish.loot.biome.MatchBiomeLootCondition; import draylar.gofish.loot.moon.FullMoonCondition; import net.minecraft.loot.condition.LootCondition; import net.minecraft.loot.condition.LootConditionType; -import net.minecraft.util.JsonSerializer; -import net.minecraft.registry.Registry; import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.util.JsonSerializer; +import net.minecraft.util.Util; public class GoFishLoot { - public static final LootConditionType MATCH_BIOME = register("match_biome", new BiomeLootCondition.Serializer()); - public static final LootConditionType FULL_MOON = register("full_moon", new FullMoonCondition.Serializer()); - public static final LootConditionType WEATHER = register("weather", new WeatherCondition.Serializer()); - - private static LootConditionType register(String id, JsonSerializer serializer) { - return Registry.register(Registries.LOOT_CONDITION_TYPE, GoFish.id(id), new LootConditionType(serializer)); + public static final LootConditionType MATCH_BIOME = register("match_biome", MatchBiomeLootCondition.CODEC); + public static final LootConditionType FULL_MOON = register("full_moon", FullMoonCondition.CODEC); + public static final LootConditionType WEATHER = register("weather", WeatherCondition.CODEC); + + private static LootConditionType register(String id, Codec codec) { + return Registry.register(Registries.LOOT_CONDITION_TYPE, GoFish.id(id), new LootConditionType(new JsonSerializer() { + @Override + public void toJson(JsonObject json, T object, JsonSerializationContext context) { + Util.getResult(codec.encodeStart(JsonOps.INSTANCE, object), IllegalStateException::new); + } + + @Override + public T fromJson(JsonObject json, JsonDeserializationContext context) { + return Util.getResult(codec.parse(JsonOps.INSTANCE, json), JsonParseException::new); + } + })); } public static void init() { - - } - - private GoFishLoot() { - + // NO-OP } } diff --git a/src/main/java/draylar/gofish/registry/GoFishLootHandler.java b/src/main/java/draylar/gofish/registry/GoFishLootHandler.java index ccd83bb..dc41084 100644 --- a/src/main/java/draylar/gofish/registry/GoFishLootHandler.java +++ b/src/main/java/draylar/gofish/registry/GoFishLootHandler.java @@ -1,77 +1,67 @@ package draylar.gofish.registry; -import draylar.gofish.GoFish; import draylar.gofish.loot.WeatherCondition; -import draylar.gofish.loot.biome.BiomeLootCondition; +import draylar.gofish.loot.biome.MatchBiomeLootCondition; import draylar.gofish.loot.moon.FullMoonCondition; -import draylar.gofish.mixin.LocationPredicateBuilderAccessor; -import draylar.gofish.mixin.LootTableBuilderAccessor; -import net.fabricmc.fabric.api.loot.v2.FabricLootPoolBuilder; import net.fabricmc.fabric.api.loot.v2.LootTableEvents; import net.fabricmc.fabric.api.tag.convention.v1.ConventionalBiomeTags; -import net.minecraft.loot.LootPool; +import net.minecraft.loot.LootTables; import net.minecraft.loot.condition.LocationCheckLootCondition; import net.minecraft.loot.entry.ItemEntry; import net.minecraft.predicate.NumberRange; import net.minecraft.predicate.entity.LocationPredicate; -import net.minecraft.registry.tag.BiomeTags; -import net.minecraft.util.Identifier; public class GoFishLootHandler { - public static final Identifier FISH_LOOT_TABLE = new Identifier("gameplay/fishing/fish"); + private static boolean hasModifiedFishPool = false; public static void init() { registerFishHandler(); } private static void registerFishHandler() { - LootTableEvents.MODIFY.register((resourceManager, lootManager, identifier, fabricLootSupplierBuilder, lootTableSetter) -> { - if(identifier.equals(FISH_LOOT_TABLE)) { - // Get first pool, which SHOULD be the fish pool - LootPool lootPool = ((LootTableBuilderAccessor) fabricLootSupplierBuilder).getPools().get(0); + LootTableEvents.MODIFY.register((resourceManager, lootManager, id, tableBuilder, source) -> { + if(LootTables.FISHING_FISH_GAMEPLAY.equals(id) && source.isBuiltin() && !hasModifiedFishPool) { + // Only modify first pool, which SHOULD be the fish pool + hasModifiedFishPool = true; - LootPool.Builder lpb = FabricLootPoolBuilder.copyOf(lootPool); + tableBuilder.modifyPools(lpb -> { + // The default fish loot table has a total weight of 100. + // An entry with a weight of 10 represents a 10% chance to get that fish compared to the standard 4, but the percentage goes down as more custom fish are added. + // In most situations, only 1-2 fish are added per biome or area, so the chance for that fish is still ~5-10%. - // The default fish loot table has a total weight of 100. - // An entry with a weight of 10 represents a 10% chance to get that fish compared to the standard 4, but the percentage goes down as more custom fish are added. - // In most situations, only 1-2 fish are added per biome or area, so the chance for that fish is still ~5-10%. + // Cold Fish in Icy biomes + lpb.with(ItemEntry.builder(GoFishItems.ICICLE_FISH).weight(10).conditionally(MatchBiomeLootCondition.builder(ConventionalBiomeTags.ICY)).build()); + lpb.with(ItemEntry.builder(GoFishItems.SNOWBALL_FISH).weight(10).conditionally(MatchBiomeLootCondition.builder(ConventionalBiomeTags.ICY)).build()); - // Cold Fish in Icy biomes - lpb.with(ItemEntry.builder(GoFishItems.ICICLE_FISH).weight(10).conditionally(BiomeLootCondition.builder(ConventionalBiomeTags.ICY)).build()); - lpb.with(ItemEntry.builder(GoFishItems.SNOWBALL_FISH).weight(10).conditionally(BiomeLootCondition.builder(ConventionalBiomeTags.ICY)).build()); + // Swamp + lpb.with(ItemEntry.builder(GoFishItems.SLIMEFISH).weight(10).conditionally(MatchBiomeLootCondition.builder(ConventionalBiomeTags.SWAMP)).build()); + lpb.with(ItemEntry.builder(GoFishItems.LILYFISH).weight(10).conditionally(MatchBiomeLootCondition.builder(ConventionalBiomeTags.SWAMP)).build()); - // Swamp - lpb.with(ItemEntry.builder(GoFishItems.SLIMEFISH).weight(10).conditionally(BiomeLootCondition.builder(ConventionalBiomeTags.SWAMP)).build()); - lpb.with(ItemEntry.builder(GoFishItems.LILYFISH).weight(10).conditionally(BiomeLootCondition.builder(ConventionalBiomeTags.SWAMP)).build()); + // Ocean + lpb.with(ItemEntry.builder(GoFishItems.SEAWEED_EEL).weight(10).conditionally(MatchBiomeLootCondition.builder(ConventionalBiomeTags.OCEAN)).build()); - // Ocean - lpb.with(ItemEntry.builder(GoFishItems.SEAWEED_EEL).weight(10).conditionally(BiomeLootCondition.builder(ConventionalBiomeTags.OCEAN)).build()); + // Mesa + lpb.with(ItemEntry.builder(GoFishItems.TERRAFISH).weight(10).conditionally(MatchBiomeLootCondition.builder(ConventionalBiomeTags.MESA)).build()); - // Mesa - lpb.with(ItemEntry.builder(GoFishItems.TERRAFISH).weight(10).conditionally(BiomeLootCondition.builder(ConventionalBiomeTags.MESA)).build()); + // General Plains + lpb.with(ItemEntry.builder(GoFishItems.CARROT_CARP).weight(10).conditionally(MatchBiomeLootCondition.builder(ConventionalBiomeTags.PLAINS)).build()); + lpb.with(ItemEntry.builder(GoFishItems.OAKFISH).weight(10).conditionally(MatchBiomeLootCondition.builder(ConventionalBiomeTags.PLAINS)).build()); + lpb.with(ItemEntry.builder(GoFishItems.CARROT_CARP).weight(10).conditionally(MatchBiomeLootCondition.builder(ConventionalBiomeTags.FOREST)).build()); + lpb.with(ItemEntry.builder(GoFishItems.OAKFISH).weight(10).conditionally(MatchBiomeLootCondition.builder(ConventionalBiomeTags.FOREST)).build()); - // General Plains - lpb.with(ItemEntry.builder(GoFishItems.CARROT_CARP).weight(10).conditionally(BiomeLootCondition.builder(ConventionalBiomeTags.PLAINS)).build()); - lpb.with(ItemEntry.builder(GoFishItems.OAKFISH).weight(10).conditionally(BiomeLootCondition.builder(ConventionalBiomeTags.PLAINS)).build()); - lpb.with(ItemEntry.builder(GoFishItems.CARROT_CARP).weight(10).conditionally(BiomeLootCondition.builder(ConventionalBiomeTags.FOREST)).build()); - lpb.with(ItemEntry.builder(GoFishItems.OAKFISH).weight(10).conditionally(BiomeLootCondition.builder(ConventionalBiomeTags.FOREST)).build()); + // Misc + lpb.with(ItemEntry.builder(GoFishItems.LUNARFISH).weight(50).conditionally(FullMoonCondition.builder()).build()); + lpb.with(ItemEntry.builder(GoFishItems.GALAXY_STARFISH).weight(25).conditionally(FullMoonCondition.builder()).build()); + lpb.with(ItemEntry.builder(GoFishItems.STARRY_SALMON).weight(50).conditionally(FullMoonCondition.builder()).build()); + lpb.with(ItemEntry.builder(GoFishItems.NEBULA_SWORDFISH).weight(25).conditionally(FullMoonCondition.builder()).build()); - // Misc - lpb.with(ItemEntry.builder(GoFishItems.LUNARFISH).weight(50).conditionally(FullMoonCondition.builder()).build()); - lpb.with(ItemEntry.builder(GoFishItems.GALAXY_STARFISH).weight(25).conditionally(FullMoonCondition.builder()).build()); - lpb.with(ItemEntry.builder(GoFishItems.STARRY_SALMON).weight(50).conditionally(FullMoonCondition.builder()).build()); - lpb.with(ItemEntry.builder(GoFishItems.NEBULA_SWORDFISH).weight(25).conditionally(FullMoonCondition.builder()).build()); - - // weather - lpb.with(ItemEntry.builder(GoFishItems.RAINY_BASS).weight(100).conditionally(WeatherCondition.builder(true, false, false)).build()); - lpb.with(ItemEntry.builder(GoFishItems.THUNDERING_BASS).weight(50).conditionally(WeatherCondition.builder(false, true, false)).build()); - LocationPredicate.Builder biome = new LocationPredicate.Builder(); - ((LocationPredicateBuilderAccessor) biome).setY(NumberRange.FloatRange.atLeast(150)); - lpb.with(ItemEntry.builder(GoFishItems.CLOUDY_CRAB).weight(50).conditionally(LocationCheckLootCondition.builder(biome)).build()); - lpb.with(ItemEntry.builder(GoFishItems.BLIZZARD_BASS).weight(100).conditionally(WeatherCondition.builder(false, false, true)).build()); - - ((LootTableBuilderAccessor) fabricLootSupplierBuilder).getPools().set(0, lpb.build()); + // weather + lpb.with(ItemEntry.builder(GoFishItems.RAINY_BASS).weight(100).conditionally(WeatherCondition.builder(true, false, false)).build()); + lpb.with(ItemEntry.builder(GoFishItems.THUNDERING_BASS).weight(50).conditionally(WeatherCondition.builder(false, true, false)).build()); + lpb.with(ItemEntry.builder(GoFishItems.CLOUDY_CRAB).weight(50).conditionally(LocationCheckLootCondition.builder(LocationPredicate.Builder.create().y(NumberRange.FloatRange.atLeast(150)))).build()); + lpb.with(ItemEntry.builder(GoFishItems.BLIZZARD_BASS).weight(100).conditionally(WeatherCondition.builder(false, false, true)).build()); + }); } }); } diff --git a/src/main/java/draylar/gofish/registry/GoFishParticles.java b/src/main/java/draylar/gofish/registry/GoFishParticles.java index a3f171e..14b3d31 100644 --- a/src/main/java/draylar/gofish/registry/GoFishParticles.java +++ b/src/main/java/draylar/gofish/registry/GoFishParticles.java @@ -3,8 +3,8 @@ import draylar.gofish.GoFish; import draylar.gofish.particle.CustomDefaultParticleType; import net.minecraft.particle.DefaultParticleType; -import net.minecraft.registry.Registry; import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; public class GoFishParticles { @@ -15,10 +15,6 @@ private static DefaultParticleType register(String name, boolean alwaysShow) { } public static void init() { - - } - - private GoFishParticles() { - + // NO-OP } } diff --git a/src/main/java/draylar/gofish/registry/GoFishTags.java b/src/main/java/draylar/gofish/registry/GoFishTags.java index e5161ba..df96937 100644 --- a/src/main/java/draylar/gofish/registry/GoFishTags.java +++ b/src/main/java/draylar/gofish/registry/GoFishTags.java @@ -1,8 +1,8 @@ package draylar.gofish.registry; +import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.tag.TagKey; import net.minecraft.util.Identifier; -import net.minecraft.registry.RegistryKeys; import net.minecraft.world.biome.Biome; public class GoFishTags { diff --git a/src/main/resources/assets/gofish/icon.png b/src/main/resources/assets/gofish/icon.png index 99b4de0..303141a 100644 Binary files a/src/main/resources/assets/gofish/icon.png and b/src/main/resources/assets/gofish/icon.png differ diff --git a/src/main/resources/assets/gofish/textures/block/astral_crate.png b/src/main/resources/assets/gofish/textures/block/astral_crate.png index 530cabb..7008ab4 100644 Binary files a/src/main/resources/assets/gofish/textures/block/astral_crate.png and b/src/main/resources/assets/gofish/textures/block/astral_crate.png differ diff --git a/src/main/resources/assets/gofish/textures/block/diamond_crate.png b/src/main/resources/assets/gofish/textures/block/diamond_crate.png index b91ce30..6fc8d23 100644 Binary files a/src/main/resources/assets/gofish/textures/block/diamond_crate.png and b/src/main/resources/assets/gofish/textures/block/diamond_crate.png differ diff --git a/src/main/resources/assets/gofish/textures/block/end_crate.png b/src/main/resources/assets/gofish/textures/block/end_crate.png index 962278f..d7d88a8 100644 Binary files a/src/main/resources/assets/gofish/textures/block/end_crate.png and b/src/main/resources/assets/gofish/textures/block/end_crate.png differ diff --git a/src/main/resources/assets/gofish/textures/block/fiery_crate.png b/src/main/resources/assets/gofish/textures/block/fiery_crate.png index 1240fa8..0f4c417 100644 Binary files a/src/main/resources/assets/gofish/textures/block/fiery_crate.png and b/src/main/resources/assets/gofish/textures/block/fiery_crate.png differ diff --git a/src/main/resources/assets/gofish/textures/block/frosted_crate.png b/src/main/resources/assets/gofish/textures/block/frosted_crate.png index 03f3536..9c96739 100644 Binary files a/src/main/resources/assets/gofish/textures/block/frosted_crate.png and b/src/main/resources/assets/gofish/textures/block/frosted_crate.png differ diff --git a/src/main/resources/assets/gofish/textures/block/gilded_blackstone_crate.png b/src/main/resources/assets/gofish/textures/block/gilded_blackstone_crate.png index 00e080f..168d71c 100644 Binary files a/src/main/resources/assets/gofish/textures/block/gilded_blackstone_crate.png and b/src/main/resources/assets/gofish/textures/block/gilded_blackstone_crate.png differ diff --git a/src/main/resources/assets/gofish/textures/block/golden_crate.png b/src/main/resources/assets/gofish/textures/block/golden_crate.png index 5c0b283..345c979 100644 Binary files a/src/main/resources/assets/gofish/textures/block/golden_crate.png and b/src/main/resources/assets/gofish/textures/block/golden_crate.png differ diff --git a/src/main/resources/assets/gofish/textures/block/iron_crate.png b/src/main/resources/assets/gofish/textures/block/iron_crate.png index c93686c..1bafe79 100644 Binary files a/src/main/resources/assets/gofish/textures/block/iron_crate.png and b/src/main/resources/assets/gofish/textures/block/iron_crate.png differ diff --git a/src/main/resources/assets/gofish/textures/block/slimey_crate.png b/src/main/resources/assets/gofish/textures/block/slimey_crate.png index bc6f799..f7a0442 100644 Binary files a/src/main/resources/assets/gofish/textures/block/slimey_crate.png and b/src/main/resources/assets/gofish/textures/block/slimey_crate.png differ diff --git a/src/main/resources/assets/gofish/textures/block/soul_crate.png b/src/main/resources/assets/gofish/textures/block/soul_crate.png index 19873b9..01450e8 100644 Binary files a/src/main/resources/assets/gofish/textures/block/soul_crate.png and b/src/main/resources/assets/gofish/textures/block/soul_crate.png differ diff --git a/src/main/resources/assets/gofish/textures/block/supply_crate.png b/src/main/resources/assets/gofish/textures/block/supply_crate.png index ac973f6..718e301 100644 Binary files a/src/main/resources/assets/gofish/textures/block/supply_crate.png and b/src/main/resources/assets/gofish/textures/block/supply_crate.png differ diff --git a/src/main/resources/assets/gofish/textures/block/wooden_crate.png b/src/main/resources/assets/gofish/textures/block/wooden_crate.png index 5618a45..03879f3 100644 Binary files a/src/main/resources/assets/gofish/textures/block/wooden_crate.png and b/src/main/resources/assets/gofish/textures/block/wooden_crate.png differ diff --git a/src/main/resources/assets/gofish/textures/block/wooden_crate_bar.png b/src/main/resources/assets/gofish/textures/block/wooden_crate_bar.png index 1c9f13a..35b3de8 100644 Binary files a/src/main/resources/assets/gofish/textures/block/wooden_crate_bar.png and b/src/main/resources/assets/gofish/textures/block/wooden_crate_bar.png differ diff --git a/src/main/resources/assets/gofish/textures/block/wooden_crate_strut.png b/src/main/resources/assets/gofish/textures/block/wooden_crate_strut.png index 6fc70f2..57e2863 100644 Binary files a/src/main/resources/assets/gofish/textures/block/wooden_crate_strut.png and b/src/main/resources/assets/gofish/textures/block/wooden_crate_strut.png differ diff --git a/src/main/resources/assets/gofish/textures/gui/water.png b/src/main/resources/assets/gofish/textures/gui/water.png index af6d92f..5b70039 100644 Binary files a/src/main/resources/assets/gofish/textures/gui/water.png and b/src/main/resources/assets/gofish/textures/gui/water.png differ diff --git a/src/main/resources/assets/gofish/textures/item/aquatic_astral_stew.png b/src/main/resources/assets/gofish/textures/item/aquatic_astral_stew.png index 9ea8c89..df1c910 100644 Binary files a/src/main/resources/assets/gofish/textures/item/aquatic_astral_stew.png and b/src/main/resources/assets/gofish/textures/item/aquatic_astral_stew.png differ diff --git a/src/main/resources/assets/gofish/textures/item/baked_carrot_carp.png b/src/main/resources/assets/gofish/textures/item/baked_carrot_carp.png index 630a158..3de9b72 100644 Binary files a/src/main/resources/assets/gofish/textures/item/baked_carrot_carp.png and b/src/main/resources/assets/gofish/textures/item/baked_carrot_carp.png differ diff --git a/src/main/resources/assets/gofish/textures/item/baked_endfish.png b/src/main/resources/assets/gofish/textures/item/baked_endfish.png index 0ad1488..512c74f 100644 Binary files a/src/main/resources/assets/gofish/textures/item/baked_endfish.png and b/src/main/resources/assets/gofish/textures/item/baked_endfish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/baked_seaweed.png b/src/main/resources/assets/gofish/textures/item/baked_seaweed.png index 76c0563..f54697b 100644 Binary files a/src/main/resources/assets/gofish/textures/item/baked_seaweed.png and b/src/main/resources/assets/gofish/textures/item/baked_seaweed.png differ diff --git a/src/main/resources/assets/gofish/textures/item/basalt_bass.png b/src/main/resources/assets/gofish/textures/item/basalt_bass.png index 0051d62..70d5cc2 100644 Binary files a/src/main/resources/assets/gofish/textures/item/basalt_bass.png and b/src/main/resources/assets/gofish/textures/item/basalt_bass.png differ diff --git a/src/main/resources/assets/gofish/textures/item/blackstone_trout.png b/src/main/resources/assets/gofish/textures/item/blackstone_trout.png index 6631153..d171f8c 100644 Binary files a/src/main/resources/assets/gofish/textures/item/blackstone_trout.png and b/src/main/resources/assets/gofish/textures/item/blackstone_trout.png differ diff --git a/src/main/resources/assets/gofish/textures/item/blaze_rod.png b/src/main/resources/assets/gofish/textures/item/blaze_rod.png index bcec8fa..905f0b2 100644 Binary files a/src/main/resources/assets/gofish/textures/item/blaze_rod.png and b/src/main/resources/assets/gofish/textures/item/blaze_rod.png differ diff --git a/src/main/resources/assets/gofish/textures/item/blaze_rod_cast.png b/src/main/resources/assets/gofish/textures/item/blaze_rod_cast.png index aa88410..cf5ded4 100644 Binary files a/src/main/resources/assets/gofish/textures/item/blaze_rod_cast.png and b/src/main/resources/assets/gofish/textures/item/blaze_rod_cast.png differ diff --git a/src/main/resources/assets/gofish/textures/item/blizzard_bass.png b/src/main/resources/assets/gofish/textures/item/blizzard_bass.png index 59e883a..e160879 100644 Binary files a/src/main/resources/assets/gofish/textures/item/blizzard_bass.png and b/src/main/resources/assets/gofish/textures/item/blizzard_bass.png differ diff --git a/src/main/resources/assets/gofish/textures/item/bonefish.png b/src/main/resources/assets/gofish/textures/item/bonefish.png index a94236d..9d02293 100644 Binary files a/src/main/resources/assets/gofish/textures/item/bonefish.png and b/src/main/resources/assets/gofish/textures/item/bonefish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/candied_smoked_salmon.png b/src/main/resources/assets/gofish/textures/item/candied_smoked_salmon.png index e766826..0e7e859 100644 Binary files a/src/main/resources/assets/gofish/textures/item/candied_smoked_salmon.png and b/src/main/resources/assets/gofish/textures/item/candied_smoked_salmon.png differ diff --git a/src/main/resources/assets/gofish/textures/item/carrot_carp.png b/src/main/resources/assets/gofish/textures/item/carrot_carp.png index 5abf75d..4a4c14f 100644 Binary files a/src/main/resources/assets/gofish/textures/item/carrot_carp.png and b/src/main/resources/assets/gofish/textures/item/carrot_carp.png differ diff --git a/src/main/resources/assets/gofish/textures/item/celestial_rod.png b/src/main/resources/assets/gofish/textures/item/celestial_rod.png index 5f03dc1..9f9525a 100644 Binary files a/src/main/resources/assets/gofish/textures/item/celestial_rod.png and b/src/main/resources/assets/gofish/textures/item/celestial_rod.png differ diff --git a/src/main/resources/assets/gofish/textures/item/celestial_rod_cast.png b/src/main/resources/assets/gofish/textures/item/celestial_rod_cast.png index 4a530a0..0a21045 100644 Binary files a/src/main/resources/assets/gofish/textures/item/celestial_rod_cast.png and b/src/main/resources/assets/gofish/textures/item/celestial_rod_cast.png differ diff --git a/src/main/resources/assets/gofish/textures/item/charfish.png b/src/main/resources/assets/gofish/textures/item/charfish.png index 0f468b5..9a8c244 100644 Binary files a/src/main/resources/assets/gofish/textures/item/charfish.png and b/src/main/resources/assets/gofish/textures/item/charfish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/chorus_cod.png b/src/main/resources/assets/gofish/textures/item/chorus_cod.png index ec8c49d..9b4cf2d 100644 Binary files a/src/main/resources/assets/gofish/textures/item/chorus_cod.png and b/src/main/resources/assets/gofish/textures/item/chorus_cod.png differ diff --git a/src/main/resources/assets/gofish/textures/item/cloudy_crab.png b/src/main/resources/assets/gofish/textures/item/cloudy_crab.png index ac28812..f834673 100644 Binary files a/src/main/resources/assets/gofish/textures/item/cloudy_crab.png and b/src/main/resources/assets/gofish/textures/item/cloudy_crab.png differ diff --git a/src/main/resources/assets/gofish/textures/item/diamond_reinforced_rod.png b/src/main/resources/assets/gofish/textures/item/diamond_reinforced_rod.png index e8c3f0f..917f5ce 100644 Binary files a/src/main/resources/assets/gofish/textures/item/diamond_reinforced_rod.png and b/src/main/resources/assets/gofish/textures/item/diamond_reinforced_rod.png differ diff --git a/src/main/resources/assets/gofish/textures/item/diamond_reinforced_rod_cast.png b/src/main/resources/assets/gofish/textures/item/diamond_reinforced_rod_cast.png index b1fa64c..d3317b1 100644 Binary files a/src/main/resources/assets/gofish/textures/item/diamond_reinforced_rod_cast.png and b/src/main/resources/assets/gofish/textures/item/diamond_reinforced_rod_cast.png differ diff --git a/src/main/resources/assets/gofish/textures/item/dragonfish.png b/src/main/resources/assets/gofish/textures/item/dragonfish.png index c9d4aa4..9c0e8b7 100644 Binary files a/src/main/resources/assets/gofish/textures/item/dragonfish.png and b/src/main/resources/assets/gofish/textures/item/dragonfish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/ender_eel.png b/src/main/resources/assets/gofish/textures/item/ender_eel.png index 9818eff..e0fb64c 100644 Binary files a/src/main/resources/assets/gofish/textures/item/ender_eel.png and b/src/main/resources/assets/gofish/textures/item/ender_eel.png differ diff --git a/src/main/resources/assets/gofish/textures/item/endfish.png b/src/main/resources/assets/gofish/textures/item/endfish.png index ff0971c..db2462c 100644 Binary files a/src/main/resources/assets/gofish/textures/item/endfish.png and b/src/main/resources/assets/gofish/textures/item/endfish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/endfish_and_chorus.png b/src/main/resources/assets/gofish/textures/item/endfish_and_chorus.png index 1f72f55..9441f23 100644 Binary files a/src/main/resources/assets/gofish/textures/item/endfish_and_chorus.png and b/src/main/resources/assets/gofish/textures/item/endfish_and_chorus.png differ diff --git a/src/main/resources/assets/gofish/textures/item/eye_of_fishing.png b/src/main/resources/assets/gofish/textures/item/eye_of_fishing.png index bcfa640..fffb113 100644 Binary files a/src/main/resources/assets/gofish/textures/item/eye_of_fishing.png and b/src/main/resources/assets/gofish/textures/item/eye_of_fishing.png differ diff --git a/src/main/resources/assets/gofish/textures/item/eye_of_fishing_cast.png b/src/main/resources/assets/gofish/textures/item/eye_of_fishing_cast.png index 65dd270..7f6f10e 100644 Binary files a/src/main/resources/assets/gofish/textures/item/eye_of_fishing_cast.png and b/src/main/resources/assets/gofish/textures/item/eye_of_fishing_cast.png differ diff --git a/src/main/resources/assets/gofish/textures/item/fishing-sheet.png b/src/main/resources/assets/gofish/textures/item/fishing-sheet.png index 495c20a..37bedf9 100644 Binary files a/src/main/resources/assets/gofish/textures/item/fishing-sheet.png and b/src/main/resources/assets/gofish/textures/item/fishing-sheet.png differ diff --git a/src/main/resources/assets/gofish/textures/item/fishing.png b/src/main/resources/assets/gofish/textures/item/fishing.png index fb2ed66..6607413 100644 Binary files a/src/main/resources/assets/gofish/textures/item/fishing.png and b/src/main/resources/assets/gofish/textures/item/fishing.png differ diff --git a/src/main/resources/assets/gofish/textures/item/frosted_rod.png b/src/main/resources/assets/gofish/textures/item/frosted_rod.png index 33504cf..1ce1bb3 100644 Binary files a/src/main/resources/assets/gofish/textures/item/frosted_rod.png and b/src/main/resources/assets/gofish/textures/item/frosted_rod.png differ diff --git a/src/main/resources/assets/gofish/textures/item/frosted_rod_cast.png b/src/main/resources/assets/gofish/textures/item/frosted_rod_cast.png index 0a2ffbb..a8f3c3c 100644 Binary files a/src/main/resources/assets/gofish/textures/item/frosted_rod_cast.png and b/src/main/resources/assets/gofish/textures/item/frosted_rod_cast.png differ diff --git a/src/main/resources/assets/gofish/textures/item/galaxy_starfish.png b/src/main/resources/assets/gofish/textures/item/galaxy_starfish.png index 35965e0..63c5e4d 100644 Binary files a/src/main/resources/assets/gofish/textures/item/galaxy_starfish.png and b/src/main/resources/assets/gofish/textures/item/galaxy_starfish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/gilded_blackstone_carp.png b/src/main/resources/assets/gofish/textures/item/gilded_blackstone_carp.png index fad4524..29e32e4 100644 Binary files a/src/main/resources/assets/gofish/textures/item/gilded_blackstone_carp.png and b/src/main/resources/assets/gofish/textures/item/gilded_blackstone_carp.png differ diff --git a/src/main/resources/assets/gofish/textures/item/golden_fish.png b/src/main/resources/assets/gofish/textures/item/golden_fish.png index 844b3b3..77bee77 100644 Binary files a/src/main/resources/assets/gofish/textures/item/golden_fish.png and b/src/main/resources/assets/gofish/textures/item/golden_fish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/grilled_blackstone_deluxe.png b/src/main/resources/assets/gofish/textures/item/grilled_blackstone_deluxe.png index e2fccce..5d07140 100644 Binary files a/src/main/resources/assets/gofish/textures/item/grilled_blackstone_deluxe.png and b/src/main/resources/assets/gofish/textures/item/grilled_blackstone_deluxe.png differ diff --git a/src/main/resources/assets/gofish/textures/item/grilled_blackstone_trout.png b/src/main/resources/assets/gofish/textures/item/grilled_blackstone_trout.png index 229f667..fe5bfff 100644 Binary files a/src/main/resources/assets/gofish/textures/item/grilled_blackstone_trout.png and b/src/main/resources/assets/gofish/textures/item/grilled_blackstone_trout.png differ diff --git a/src/main/resources/assets/gofish/textures/item/icicle_fish.png b/src/main/resources/assets/gofish/textures/item/icicle_fish.png index 61d5abe..70bd200 100644 Binary files a/src/main/resources/assets/gofish/textures/item/icicle_fish.png and b/src/main/resources/assets/gofish/textures/item/icicle_fish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/lilyfish.png b/src/main/resources/assets/gofish/textures/item/lilyfish.png index db13492..41196bd 100644 Binary files a/src/main/resources/assets/gofish/textures/item/lilyfish.png and b/src/main/resources/assets/gofish/textures/item/lilyfish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/lunarfish.png b/src/main/resources/assets/gofish/textures/item/lunarfish.png index 66cc8d9..f2c80d8 100644 Binary files a/src/main/resources/assets/gofish/textures/item/lunarfish.png and b/src/main/resources/assets/gofish/textures/item/lunarfish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/lure_1.png b/src/main/resources/assets/gofish/textures/item/lure_1.png index b096641..f586177 100644 Binary files a/src/main/resources/assets/gofish/textures/item/lure_1.png and b/src/main/resources/assets/gofish/textures/item/lure_1.png differ diff --git a/src/main/resources/assets/gofish/textures/item/magma_cod.png b/src/main/resources/assets/gofish/textures/item/magma_cod.png index acf0783..d46db62 100644 Binary files a/src/main/resources/assets/gofish/textures/item/magma_cod.png and b/src/main/resources/assets/gofish/textures/item/magma_cod.png differ diff --git a/src/main/resources/assets/gofish/textures/item/matrix_fish.png b/src/main/resources/assets/gofish/textures/item/matrix_fish.png index 5fbda08..cc03011 100644 Binary files a/src/main/resources/assets/gofish/textures/item/matrix_fish.png and b/src/main/resources/assets/gofish/textures/item/matrix_fish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/matrix_rod.png b/src/main/resources/assets/gofish/textures/item/matrix_rod.png index b04f0f5..37fb904 100644 Binary files a/src/main/resources/assets/gofish/textures/item/matrix_rod.png and b/src/main/resources/assets/gofish/textures/item/matrix_rod.png differ diff --git a/src/main/resources/assets/gofish/textures/item/matrix_rod_cast.png b/src/main/resources/assets/gofish/textures/item/matrix_rod_cast.png index 392f490..dadade4 100644 Binary files a/src/main/resources/assets/gofish/textures/item/matrix_rod_cast.png and b/src/main/resources/assets/gofish/textures/item/matrix_rod_cast.png differ diff --git a/src/main/resources/assets/gofish/textures/item/nebula_swordfish.png b/src/main/resources/assets/gofish/textures/item/nebula_swordfish.png index 2165365..8d754a8 100644 Binary files a/src/main/resources/assets/gofish/textures/item/nebula_swordfish.png and b/src/main/resources/assets/gofish/textures/item/nebula_swordfish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/oakfish.png b/src/main/resources/assets/gofish/textures/item/oakfish.png index 0eee9f0..92c4b6c 100644 Binary files a/src/main/resources/assets/gofish/textures/item/oakfish.png and b/src/main/resources/assets/gofish/textures/item/oakfish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/obsidian_halibut.png b/src/main/resources/assets/gofish/textures/item/obsidian_halibut.png index 78ffce1..929f2d8 100644 Binary files a/src/main/resources/assets/gofish/textures/item/obsidian_halibut.png and b/src/main/resources/assets/gofish/textures/item/obsidian_halibut.png differ diff --git a/src/main/resources/assets/gofish/textures/item/omega_floater.png b/src/main/resources/assets/gofish/textures/item/omega_floater.png index c3fa863..46e06be 100644 Binary files a/src/main/resources/assets/gofish/textures/item/omega_floater.png and b/src/main/resources/assets/gofish/textures/item/omega_floater.png differ diff --git a/src/main/resources/assets/gofish/textures/item/portal_puffer.png b/src/main/resources/assets/gofish/textures/item/portal_puffer.png index 1de792b..f40ef4f 100644 Binary files a/src/main/resources/assets/gofish/textures/item/portal_puffer.png and b/src/main/resources/assets/gofish/textures/item/portal_puffer.png differ diff --git a/src/main/resources/assets/gofish/textures/item/rainy_bass.png b/src/main/resources/assets/gofish/textures/item/rainy_bass.png index 17f31a5..7fac701 100644 Binary files a/src/main/resources/assets/gofish/textures/item/rainy_bass.png and b/src/main/resources/assets/gofish/textures/item/rainy_bass.png differ diff --git a/src/main/resources/assets/gofish/textures/item/rotten_rod.png b/src/main/resources/assets/gofish/textures/item/rotten_rod.png index 735ed0a..2aa32db 100644 Binary files a/src/main/resources/assets/gofish/textures/item/rotten_rod.png and b/src/main/resources/assets/gofish/textures/item/rotten_rod.png differ diff --git a/src/main/resources/assets/gofish/textures/item/seaweed.png b/src/main/resources/assets/gofish/textures/item/seaweed.png index 521494d..5e7ccce 100644 Binary files a/src/main/resources/assets/gofish/textures/item/seaweed.png and b/src/main/resources/assets/gofish/textures/item/seaweed.png differ diff --git a/src/main/resources/assets/gofish/textures/item/seaweed_eel.png b/src/main/resources/assets/gofish/textures/item/seaweed_eel.png index 119895e..2089f3a 100644 Binary files a/src/main/resources/assets/gofish/textures/item/seaweed_eel.png and b/src/main/resources/assets/gofish/textures/item/seaweed_eel.png differ diff --git a/src/main/resources/assets/gofish/textures/item/skeletal_rod.png b/src/main/resources/assets/gofish/textures/item/skeletal_rod.png index 3be33cd..4e723e9 100644 Binary files a/src/main/resources/assets/gofish/textures/item/skeletal_rod.png and b/src/main/resources/assets/gofish/textures/item/skeletal_rod.png differ diff --git a/src/main/resources/assets/gofish/textures/item/skeletal_rod_cast.png b/src/main/resources/assets/gofish/textures/item/skeletal_rod_cast.png index e8376e9..b043fd6 100644 Binary files a/src/main/resources/assets/gofish/textures/item/skeletal_rod_cast.png and b/src/main/resources/assets/gofish/textures/item/skeletal_rod_cast.png differ diff --git a/src/main/resources/assets/gofish/textures/item/slime_rod.png b/src/main/resources/assets/gofish/textures/item/slime_rod.png index 3fdd4d2..f63e03e 100644 Binary files a/src/main/resources/assets/gofish/textures/item/slime_rod.png and b/src/main/resources/assets/gofish/textures/item/slime_rod.png differ diff --git a/src/main/resources/assets/gofish/textures/item/slime_rod_cast.png b/src/main/resources/assets/gofish/textures/item/slime_rod_cast.png index b991c4f..8d4d0d1 100644 Binary files a/src/main/resources/assets/gofish/textures/item/slime_rod_cast.png and b/src/main/resources/assets/gofish/textures/item/slime_rod_cast.png differ diff --git a/src/main/resources/assets/gofish/textures/item/slimefish.png b/src/main/resources/assets/gofish/textures/item/slimefish.png index f0a5471..88e38ea 100644 Binary files a/src/main/resources/assets/gofish/textures/item/slimefish.png and b/src/main/resources/assets/gofish/textures/item/slimefish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/smoked_cloudy_crab.png b/src/main/resources/assets/gofish/textures/item/smoked_cloudy_crab.png index 4edc90e..9ec1532 100644 Binary files a/src/main/resources/assets/gofish/textures/item/smoked_cloudy_crab.png and b/src/main/resources/assets/gofish/textures/item/smoked_cloudy_crab.png differ diff --git a/src/main/resources/assets/gofish/textures/item/smokey_salmon.png b/src/main/resources/assets/gofish/textures/item/smokey_salmon.png index e766826..0e7e859 100644 Binary files a/src/main/resources/assets/gofish/textures/item/smokey_salmon.png and b/src/main/resources/assets/gofish/textures/item/smokey_salmon.png differ diff --git a/src/main/resources/assets/gofish/textures/item/snowball_fish.png b/src/main/resources/assets/gofish/textures/item/snowball_fish.png index 9e88973..6302e78 100644 Binary files a/src/main/resources/assets/gofish/textures/item/snowball_fish.png and b/src/main/resources/assets/gofish/textures/item/snowball_fish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/soul_lure.png b/src/main/resources/assets/gofish/textures/item/soul_lure.png index 6dbecce..219ddfb 100644 Binary files a/src/main/resources/assets/gofish/textures/item/soul_lure.png and b/src/main/resources/assets/gofish/textures/item/soul_lure.png differ diff --git a/src/main/resources/assets/gofish/textures/item/soul_rod.png b/src/main/resources/assets/gofish/textures/item/soul_rod.png index c09ca39..2550f23 100644 Binary files a/src/main/resources/assets/gofish/textures/item/soul_rod.png and b/src/main/resources/assets/gofish/textures/item/soul_rod.png differ diff --git a/src/main/resources/assets/gofish/textures/item/soul_rod_cast.png b/src/main/resources/assets/gofish/textures/item/soul_rod_cast.png index c5bd97d..cca588f 100644 Binary files a/src/main/resources/assets/gofish/textures/item/soul_rod_cast.png and b/src/main/resources/assets/gofish/textures/item/soul_rod_cast.png differ diff --git a/src/main/resources/assets/gofish/textures/item/soul_salmon.png b/src/main/resources/assets/gofish/textures/item/soul_salmon.png index c2685a4..f286f52 100644 Binary files a/src/main/resources/assets/gofish/textures/item/soul_salmon.png and b/src/main/resources/assets/gofish/textures/item/soul_salmon.png differ diff --git a/src/main/resources/assets/gofish/textures/item/spikerfish.png b/src/main/resources/assets/gofish/textures/item/spikerfish.png index e8cdcca..95af0c7 100644 Binary files a/src/main/resources/assets/gofish/textures/item/spikerfish.png and b/src/main/resources/assets/gofish/textures/item/spikerfish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/starry_salmon.png b/src/main/resources/assets/gofish/textures/item/starry_salmon.png index 3b1dbed..bd53df8 100644 Binary files a/src/main/resources/assets/gofish/textures/item/starry_salmon.png and b/src/main/resources/assets/gofish/textures/item/starry_salmon.png differ diff --git a/src/main/resources/assets/gofish/textures/item/steamed_bass.png b/src/main/resources/assets/gofish/textures/item/steamed_bass.png index 278662a..9843df8 100644 Binary files a/src/main/resources/assets/gofish/textures/item/steamed_bass.png and b/src/main/resources/assets/gofish/textures/item/steamed_bass.png differ diff --git a/src/main/resources/assets/gofish/textures/item/terrafish.png b/src/main/resources/assets/gofish/textures/item/terrafish.png index 0b0a03c..837671f 100644 Binary files a/src/main/resources/assets/gofish/textures/item/terrafish.png and b/src/main/resources/assets/gofish/textures/item/terrafish.png differ diff --git a/src/main/resources/assets/gofish/textures/item/thundering_bass.png b/src/main/resources/assets/gofish/textures/item/thundering_bass.png index ca976d3..d9016b2 100644 Binary files a/src/main/resources/assets/gofish/textures/item/thundering_bass.png and b/src/main/resources/assets/gofish/textures/item/thundering_bass.png differ diff --git a/src/main/resources/assets/gofish/textures/particle/lava_splash_0.png b/src/main/resources/assets/gofish/textures/particle/lava_splash_0.png index eafe4b3..5f17057 100644 Binary files a/src/main/resources/assets/gofish/textures/particle/lava_splash_0.png and b/src/main/resources/assets/gofish/textures/particle/lava_splash_0.png differ diff --git a/src/main/resources/assets/gofish/textures/particle/lava_splash_1.png b/src/main/resources/assets/gofish/textures/particle/lava_splash_1.png index f94d653..89d1e54 100644 Binary files a/src/main/resources/assets/gofish/textures/particle/lava_splash_1.png and b/src/main/resources/assets/gofish/textures/particle/lava_splash_1.png differ diff --git a/src/main/resources/assets/gofish/textures/particle/lava_splash_2.png b/src/main/resources/assets/gofish/textures/particle/lava_splash_2.png index 99ddc5f..a02b75f 100644 Binary files a/src/main/resources/assets/gofish/textures/particle/lava_splash_2.png and b/src/main/resources/assets/gofish/textures/particle/lava_splash_2.png differ diff --git a/src/main/resources/assets/gofish/textures/particle/lava_splash_3.png b/src/main/resources/assets/gofish/textures/particle/lava_splash_3.png index 1a15a3e..5c76478 100644 Binary files a/src/main/resources/assets/gofish/textures/particle/lava_splash_3.png and b/src/main/resources/assets/gofish/textures/particle/lava_splash_3.png differ diff --git a/src/main/resources/data/gofish/loot_tables/blocks/end_crate.json b/src/main/resources/data/gofish/loot_tables/blocks/end_crate.json new file mode 100644 index 0000000..cd8faa6 --- /dev/null +++ b/src/main/resources/data/gofish/loot_tables/blocks/end_crate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "gofish:end_crate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/gofish/tags/worldgen/biome/icy_biomes.json b/src/main/resources/data/gofish/tags/worldgen/biome/icy_biomes.json index 55393c5..eb1dd1d 100644 --- a/src/main/resources/data/gofish/tags/worldgen/biome/icy_biomes.json +++ b/src/main/resources/data/gofish/tags/worldgen/biome/icy_biomes.json @@ -1,16 +1,32 @@ { "replace": false, "values": [ - "minecraft:snowy_plains", + { + "id": "#c:aquatic_icy", + "required": false + }, + { + "id": "#c:climate_cold", + "required": false + }, + { + "id": "#c:icy", + "required": false + }, + { + "id": "#c:snowy", + "required": false + }, + "minecraft:deep_frozen_ocean", + "minecraft:frozen_ocean", + "minecraft:frozen_peaks", + "minecraft:frozen_river", + "minecraft:grove", "minecraft:ice_spikes", - "minecraft:snowy_taiga", + "minecraft:jagged_peaks", "minecraft:snowy_beach", - "minecraft:grove", + "minecraft:snowy_plains", "minecraft:snowy_slopes", - "minecraft:jagged_peaks", - "minecraft:frozen_peaks", - "minecraft:frozen_ocean", - "minecraft:deep_frozen_ocean", - "minecraft:frozen_river" + "minecraft:snowy_taiga" ] } \ No newline at end of file diff --git a/src/main/resources/data/gofish/tags/worldgen/biome/plains_biomes.json b/src/main/resources/data/gofish/tags/worldgen/biome/plains_biomes.json index 5c0fb46..8aac71c 100644 --- a/src/main/resources/data/gofish/tags/worldgen/biome/plains_biomes.json +++ b/src/main/resources/data/gofish/tags/worldgen/biome/plains_biomes.json @@ -1,6 +1,10 @@ { "replace": false, "values": [ + { + "id": "#c:plains", + "required": false + }, "minecraft:plains", "minecraft:sunflower_plains" ] diff --git a/src/main/resources/data/gofish/tags/worldgen/biome/swamp_biomes.json b/src/main/resources/data/gofish/tags/worldgen/biome/swamp_biomes.json index 47144e6..c53b364 100644 --- a/src/main/resources/data/gofish/tags/worldgen/biome/swamp_biomes.json +++ b/src/main/resources/data/gofish/tags/worldgen/biome/swamp_biomes.json @@ -1,7 +1,11 @@ { "replace": false, "values": [ - "minecraft:swamp", - "minecraft:mangrove_swamp" + { + "id": "#c:swamp", + "required": false + }, + "minecraft:mangrove_swamp", + "minecraft:swamp" ] } \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 6cd5ee9..dda1bcc 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -8,8 +8,18 @@ "Draylar" ], "contributors": [ + "Alexander", "Birgliss", - "foul-fortune-feline" + "Cooliosity", + "Elis Kvitka", + "foul-fortune-feline", + "jHz", + "Kat", + "Nebulae", + "Patbox", + "SCPRedMage", + "unilock", + "YuRaNnNzZZ" ], "license": "CC0-1.0", "icon": "assets/gofish/icon.png", @@ -22,14 +32,12 @@ "draylar.gofish.GoFishClient" ] }, - "accessWidener": "gofish.accesswidener", "mixins": [ "go-fish.mixins.json" ], "depends": { - "fabricloader": ">=0.14.4", - "fabric-api": "*", - "minecraft": "~1.20.1", - "java": ">=17" + "fabricloader": ">=0.15.0", + "minecraft": ">=1.20", + "fabric-api": ">=0.92.0" } } diff --git a/src/main/resources/go-fish.mixins.json b/src/main/resources/go-fish.mixins.json index ed69f4e..cf1356a 100644 --- a/src/main/resources/go-fish.mixins.json +++ b/src/main/resources/go-fish.mixins.json @@ -3,22 +3,19 @@ "package": "draylar.gofish.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "EntityMixin", "FishingBobberAutosmeltMixin", "FishingBobberEntityAccessor", - "FishingBobberEntityRendererMixin", "FishingBobberExperienceMixin", - "FishingBobberFireproofMixin", "FishingBobberLavaFishingMixin", "FishingBobberLootMixin", "FishingBobberValidityMixin", "FishingHookPredicateMixin", - "FishingRodPropertyMixin", - "ItemEntityFireproofMixin", - "LocationPredicateBuilderAccessor", - "LootTableBuilderAccessor", - "ParticleManagerMixin" + "FishingRodPropertyMixin" + ], + "client": [ + "FishingBobberEntityRendererMixin" ], - "client": [], "injectors": { "defaultRequire": 1 } diff --git a/src/main/resources/gofish.accesswidener b/src/main/resources/gofish.accesswidener deleted file mode 100644 index 79dec83..0000000 --- a/src/main/resources/gofish.accesswidener +++ /dev/null @@ -1,5 +0,0 @@ -accessWidener v1 named - -accessible class net/minecraft/client/particle/ParticleManager$SpriteAwareFactory -accessible method net/minecraft/recipe/BrewingRecipeRegistry registerPotionRecipe (Lnet/minecraft/potion/Potion;Lnet/minecraft/item/Item;Lnet/minecraft/potion/Potion;)V -accessible method net/minecraft/entity/projectile/FishingBobberEntity removeIfInvalid (Lnet/minecraft/entity/player/PlayerEntity;)Z \ No newline at end of file