From b1cf55502ca652bce56a7d4a209425e6e3dd1f0d Mon Sep 17 00:00:00 2001 From: Cody Date: Tue, 21 Nov 2023 18:17:36 -0700 Subject: [PATCH] 1.20.1 port --- build.gradle | 205 ++++++++---- gradle.properties | 57 +++- gradle/wrapper/gradle-wrapper.jar | Bin 60756 -> 61574 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 28 +- gradlew.bat | 15 +- settings.gradle | 13 + .../unusualfishmod/UnusualFishMod.java | 7 +- .../client/renderer/AbyssalBlastRenderer.java | 10 +- .../client/renderer/AeroMonoRenderer.java | 6 +- .../client/renderer/AmberGobyRenderer.java | 6 +- .../renderer/BarkAngelfishRenderer.java | 6 +- .../renderer/BeakedHerringRenderer.java | 6 +- .../client/renderer/BlindSailfinRenderer.java | 6 +- .../renderer/BlizzardfinTunaRenderer.java | 6 +- .../renderer/CelestialFishRenderer.java | 6 +- .../client/renderer/CircusFishRenderer.java | 6 +- .../renderer/ClownthornSharkRenderer.java | 6 +- .../renderer/CopperflameAnthiasRenderer.java | 6 +- .../client/renderer/DemonHerringRenderer.java | 6 +- .../renderer/DroopingGouramiRenderer.java | 6 +- .../renderer/DualityDamselfishRenderer.java | 6 +- .../client/renderer/EyelashFishRenderer.java | 6 +- .../client/renderer/ForkfishRenderer.java | 6 +- .../client/renderer/GnasherRenderer.java | 6 +- .../client/renderer/HatchetfishRenderer.java | 6 +- .../client/renderer/MossthornRenderer.java | 6 +- .../client/renderer/PicklefishRenderer.java | 6 +- .../client/renderer/PinkfinIdolRenderer.java | 6 +- .../client/renderer/RhinoTetraRenderer.java | 6 +- .../client/renderer/RipperRenderer.java | 6 +- .../client/renderer/SailorBarbRenderer.java | 6 +- .../client/renderer/ShockcatRenderer.java | 6 +- .../client/renderer/SneepSnorpRenderer.java | 6 +- .../renderer/SnowflakeTailFishRenderer.java | 6 +- .../client/renderer/SpindlefishRenderer.java | 6 +- .../client/renderer/SpoonSharkRenderer.java | 6 +- .../client/renderer/StoutBichirRenderer.java | 6 +- .../renderer/TigerJungleSharkRenderer.java | 6 +- .../client/renderer/VoltAnglerRenderer.java | 6 +- .../renderer/ZebraCornetfishRenderer.java | 6 +- .../item/ThrownPrismarineSpearRenderer.java | 6 +- .../unusualfishmod/common/ForgeEvents.java | 6 +- .../block_entity/VoltDetectorBlockEntity.java | 4 +- .../common/entity/AeroMono.java | 4 +- .../common/entity/AmberGoby.java | 4 +- .../common/entity/BarkAngelfish.java | 4 +- .../common/entity/BeakedHerring.java | 4 +- .../common/entity/BlackCapSnail.java | 4 +- .../common/entity/BlindSailfin.java | 6 +- .../common/entity/BlizzardfinTuna.java | 4 +- .../common/entity/BrickSnail.java | 4 +- .../common/entity/CelestialFish.java | 23 +- .../common/entity/CircusFish.java | 4 +- .../common/entity/ClownthornShark.java | 6 +- .../common/entity/CopperflameAnthias.java | 4 +- .../common/entity/CoralSkrimp.java | 4 +- .../common/entity/CrimsonshellSquid.java | 8 +- .../common/entity/DeepCrawler.java | 4 +- .../common/entity/DemonHerring.java | 4 +- .../common/entity/DroopingGourami.java | 4 +- .../common/entity/DualityDamselfish.java | 4 +- .../common/entity/EyelashFish.java | 4 +- .../common/entity/Forkfish.java | 6 +- .../common/entity/FreshwaterMantis.java | 8 +- .../unusualfishmod/common/entity/Gnasher.java | 18 +- .../common/entity/HatchetFish.java | 4 +- .../common/entity/LobedSkipper.java | 20 +- .../common/entity/ManaJellyfish.java | 10 +- .../common/entity/Mossthorn.java | 4 +- .../common/entity/MuddytopSnail.java | 8 +- .../common/entity/Picklefish.java | 4 +- .../common/entity/PinkfinIdol.java | 6 +- .../common/entity/PorcupineLobster.java | 10 +- .../unusualfishmod/common/entity/Prawn.java | 2 +- .../common/entity/RhinoTetra.java | 4 +- .../unusualfishmod/common/entity/Ripper.java | 16 +- .../common/entity/Rootball.java | 10 +- .../common/entity/RoughbackGuitarfish.java | 8 +- .../common/entity/SailorBarb.java | 4 +- .../common/entity/SeaMosquito.java | 6 +- .../common/entity/SeaPancake.java | 17 +- .../common/entity/SeaSpider.java | 4 +- .../common/entity/Shockcat.java | 8 +- .../common/entity/SneepSnorp.java | 4 +- .../common/entity/SnowflakeTailFish.java | 4 +- .../common/entity/Spindlefish.java | 10 +- .../common/entity/SpoonShark.java | 4 +- .../common/entity/Squoddle.java | 8 +- .../common/entity/StoutBichir.java | 4 +- .../common/entity/TigerJungleShark.java | 8 +- .../common/entity/TigerPuffer.java | 4 +- .../unusualfishmod/common/entity/Tribble.java | 9 +- .../common/entity/TripleTwirlPleco.java | 6 +- .../common/entity/TrumpetSquid.java | 8 +- .../common/entity/VoltAngler.java | 4 +- .../common/entity/ZebraCornetfish.java | 6 +- .../common/entity/item/AbyssalBlast.java | 18 +- .../entity/item/ThrownPrismarineSpear.java | 2 +- .../common/entity/util/BottomStrollGoal.java | 9 +- .../entity/util/BreedableWaterAnimal.java | 22 +- .../util/BreedableWaterAnimalBreedGoal.java | 4 +- .../util/BucketableSchoolingWaterAnimal.java | 4 +- .../entity/util/FollowSchoolLeaderGoal.java | 2 +- .../common/entity/util/SquidLayEggsGoal.java | 2 +- .../common/item/DepthScytheItem.java | 18 +- .../common/item/RipsawItem.java | 6 +- .../common/item/WeatherShellItem.java | 2 +- .../core/registry/UFBlocks.java | 62 ++-- .../unusualfishmod/core/registry/UFItems.java | 301 +++++++++--------- .../core/registry/UFSounds.java | 2 +- .../unusualfishmod/core/registry/UFTabs.java | 30 ++ .../unusualfishmod/core/registry/UFTags.java | 3 +- src/main/resources/META-INF/mods.toml | 93 ++++-- .../assets/unusualfishmod/lang/en_us.json | 3 +- .../models/item/depth_scythe.json | 2 +- .../models/item/gnasher_tooth.json | 6 - .../textures/item/gnasher_organ.png | Bin 427 -> 0 bytes ...scythe.json => depth_scythe_smithing.json} | 5 +- .../recipes/ripsaw_smithing.json | 3 +- 120 files changed, 853 insertions(+), 651 deletions(-) create mode 100644 settings.gradle create mode 100644 src/main/java/codyhuh/unusualfishmod/core/registry/UFTabs.java delete mode 100644 src/main/resources/assets/unusualfishmod/models/item/gnasher_tooth.json delete mode 100644 src/main/resources/assets/unusualfishmod/textures/item/gnasher_organ.png rename src/main/resources/data/unusualfishmod/recipes/{depth_scythe.json => depth_scythe_smithing.json} (58%) diff --git a/build.gradle b/build.gradle index 26c5170..f0fb5a7 100644 --- a/build.gradle +++ b/build.gradle @@ -1,93 +1,109 @@ -buildscript { - repositories { - maven { url = 'https://maven.minecraftforge.net' } - mavenCentral() - } - dependencies { - classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true - } -} plugins { id 'eclipse' + id 'idea' id 'maven-publish' + id 'net.minecraftforge.gradle' version '[6.0,6.2)' } -apply plugin: 'net.minecraftforge.gradle' +version = mod_version +group = mod_group_id -version = '1.19.2-1.0.0' -group = 'codyhuh.unusualfishmod' -archivesBaseName = 'unusualfishmod' +base { + archivesName = mod_id +} +// Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17. java.toolchain.languageVersion = JavaLanguageVersion.of(17) println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}" minecraft { - mappings channel: 'official', version: '1.19.2' + // The mappings can be changed at any time and must be in the following format. + // Channel: Version: + // official MCVersion Official field/method names from Mojang mapping files + // parchment YYYY.MM.DD-MCVersion Open community-sourced parameter names and javadocs layered on top of official + // + // You must be aware of the Mojang license when using the 'official' or 'parchment' mappings. + // See more information here: https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md + // + // Parchment is an unofficial project maintained by ParchmentMC, separate from MinecraftForge + // Additional setup is needed to use their mappings: https://parchmentmc.org/docs/getting-started + // + // Use non-default mappings at your own risk. They may not always work. + // Simply re-run your setup task after changing the mappings to update your workspace. + mappings channel: mapping_channel, version: mapping_version + + // When true, this property will have all Eclipse/IntelliJ IDEA run configurations run the "prepareX" task for the given run configuration before launching the game. + // In most cases, it is not necessary to enable. + // enableEclipsePrepareRuns = true + // enableIdeaPrepareRuns = true + + // This property allows configuring Gradle's ProcessResources task(s) to run on IDE output locations before launching the game. + // It is REQUIRED to be set to true for this template to function. + // See https://docs.gradle.org/current/dsl/org.gradle.language.jvm.tasks.ProcessResources.html + copyIdeResources = true + + // When true, this property will add the folder name of all declared run configurations to generated IDE run configurations. + // The folder name can be set on a run configuration using the "folderName" property. + // By default, the folder name of a run configuration is the name of the Gradle project containing it. + // generateRunFolders = true + + // This property enables access transformers for use in development. + // They will be applied to the Minecraft artifact. + // The access transformer file can be anywhere in the project. + // However, it must be at "META-INF/accesstransformer.cfg" in the final mod jar to be loaded by Forge. + // This default location is a best practice to automatically put the file in the right place in the final jar. + // See https://docs.minecraftforge.net/en/latest/advanced/accesstransformers/ for more information. accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') + // Default run configurations. + // These can be tweaked, removed, or duplicated as needed. runs { - client { + // applies to all the run configs below + configureEach { workingDirectory project.file('run') + // Recommended logging data for a userdev environment + // The markers can be added/remove as needed separated by commas. + // "SCAN": For mods scan. + // "REGISTRIES": For firing of registry events. + // "REGISTRYDUMP": For getting the contents of all registries. property 'forge.logging.markers', 'REGISTRIES' + // Recommended logging level for the console + // You can set various levels here. + // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels property 'forge.logging.console.level', 'debug' - property 'forge.enabledGameTestNamespaces', 'unusualfishmod' - mods { - unusualfishmod { + "${mod_id}" { source sourceSets.main } } } - server { - workingDirectory project.file('run') - - property 'forge.logging.markers', 'REGISTRIES' - - property 'forge.logging.console.level', 'debug' - - property 'forge.enabledGameTestNamespaces', 'unusualfishmod' + client { + // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. + property 'forge.enabledGameTestNamespaces', mod_id + } - mods { - unusualfishmod { - source sourceSets.main - } - } + server { + property 'forge.enabledGameTestNamespaces', mod_id + args '--nogui' } + // This run config launches GameTestServer and runs all registered gametests, then exits. + // By default, the server will crash when no gametests are provided. + // The gametest system is also enabled by default for other run configs under the /test command. gameTestServer { - workingDirectory project.file('run') - - property 'forge.logging.markers', 'REGISTRIES' - - property 'forge.logging.console.level', 'debug' - - property 'forge.enabledGameTestNamespaces', 'unusualfishmod' - - mods { - unusualfishmod { - source sourceSets.main - } - } + property 'forge.enabledGameTestNamespaces', mod_id } data { - workingDirectory project.file('run') - - property 'forge.logging.markers', 'REGISTRIES' + // example of overriding the workingDirectory set in configureEach above + workingDirectory project.file('run-data') - property 'forge.logging.console.level', 'debug' - - args '--mod', 'unusualfishmod', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') - - mods { - unusualfishmod { - source sourceSets.main - } - } + // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. + args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') } } } @@ -96,31 +112,86 @@ minecraft { sourceSets.main.resources { srcDir 'src/generated/resources' } repositories { + // Put repositories for dependencies here + // ForgeGradle automatically adds the Forge maven and Maven Central for you + + // If you have mod jar dependencies in ./libs, you can declare them as a repository like so. + // See https://docs.gradle.org/current/userguide/declaring_repositories.html#sub:flat_dir_resolver + // flatDir { + // dir 'libs' + // } } dependencies { - minecraft 'net.minecraftforge:forge:1.19.2-43.3.0' + // Specify the version of Minecraft to use. + // Any artifact can be supplied so long as it has a "userdev" classifier artifact and is a compatible patcher artifact. + // The "userdev" classifier will be requested and setup by ForgeGradle. + // If the group id is "net.minecraft" and the artifact id is one of ["client", "server", "joined"], + // then special handling is done to allow a setup of a vanilla dependency without the use of an external repository. + minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" + + // Example mod dependency with JEI - using fg.deobf() ensures the dependency is remapped to your development mappings + // The JEI API is declared for compile time use, while the full JEI artifact is used at runtime + // compileOnly fg.deobf("mezz.jei:jei-${mc_version}-common-api:${jei_version}") + // compileOnly fg.deobf("mezz.jei:jei-${mc_version}-forge-api:${jei_version}") + // runtimeOnly fg.deobf("mezz.jei:jei-${mc_version}-forge:${jei_version}") + + // Example mod dependency using a mod jar from ./libs with a flat dir repository + // This maps to ./libs/coolmod-${mc_version}-${coolmod_version}.jar + // The group id is ignored when searching -- in this case, it is "blank" + // implementation fg.deobf("blank:coolmod-${mc_version}:${coolmod_version}") + + // For more info: + // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html + // http://www.gradle.org/docs/current/userguide/dependency_management.html } -jar { +// This block of code expands all declared replace properties in the specified resource targets. +// A missing property will result in an error. Properties are expanded using ${} Groovy notation. +// When "copyIdeResources" is enabled, this will also run before the game launches in IDE environments. +// See https://docs.gradle.org/current/dsl/org.gradle.language.jvm.tasks.ProcessResources.html +tasks.named('processResources', ProcessResources).configure { + var replaceProperties = [ + minecraft_version: minecraft_version, minecraft_version_range: minecraft_version_range, + forge_version: forge_version, forge_version_range: forge_version_range, + loader_version_range: loader_version_range, + mod_id: mod_id, mod_name: mod_name, mod_license: mod_license, mod_version: mod_version, + mod_authors: mod_authors, mod_description: mod_description, + ] + inputs.properties replaceProperties + + filesMatching(['META-INF/mods.toml', 'pack.mcmeta']) { + expand replaceProperties + [project: project] + } +} + +// Example for how to get properties into the manifest for reading at runtime. +tasks.named('jar', Jar).configure { manifest { attributes([ - "Specification-Title" : "unusualfishmod", - "Specification-Vendor" : "Peeko32213", - "Specification-Version" : "1.2.0", // We are version 1.2.0 of ourselves - "Implementation-Title" : project.name, - "Implementation-Version" : project.jar.archiveVersion, - "Implementation-Vendor" : "unusualfishmod", - "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") + 'Specification-Title' : mod_id, + 'Specification-Vendor' : mod_authors, + 'Specification-Version' : '1', // We are version 1 of ourselves + 'Implementation-Title' : project.name, + 'Implementation-Version' : project.jar.archiveVersion, + 'Implementation-Vendor' : mod_authors, + 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") ]) } + + // This is the preferred method to reobfuscate your jar file + finalizedBy 'reobfJar' } -jar.finalizedBy('reobfJar') +// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing: +// tasks.named('publish').configure { +// dependsOn 'reobfJar' +// } +// Example configuration to allow publishing using the maven-publish plugin publishing { publications { - mavenJava(MavenPublication) { + register('mavenJava', MavenPublication) { artifact jar } } diff --git a/gradle.properties b/gradle.properties index 878bf1f..c710f41 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,59 @@ # Sets default memory used for gradle commands. Can be overridden by user or command line properties. # This is required to provide enough memory for the Minecraft decompilation process. org.gradle.jvmargs=-Xmx3G -org.gradle.daemon=false \ No newline at end of file +org.gradle.daemon=false + + +## Environment Properties + +# The Minecraft version must agree with the Forge version to get a valid artifact +minecraft_version=1.20.1 +# The Minecraft version range can use any release version of Minecraft as bounds. +# Snapshots, pre-releases, and release candidates are not guaranteed to sort properly +# as they do not follow standard versioning conventions. +minecraft_version_range=[1.20.1,1.21) +# The Forge version must agree with the Minecraft version to get a valid artifact +forge_version=47.2.0 +# The Forge version range can use any version of Forge as bounds or match the loader version range +forge_version_range=[47,) +# The loader version range can only use the major version of Forge/FML as bounds +loader_version_range=[47,) +# The mapping channel to use for mappings. +# The default set of supported mapping channels are ["official", "snapshot", "snapshot_nodoc", "stable", "stable_nodoc"]. +# Additional mapping channels can be registered through the "channelProviders" extension in a Gradle plugin. +# +# | Channel | Version | | +# |-----------|----------------------|--------------------------------------------------------------------------------| +# | official | MCVersion | Official field/method names from Mojang mapping files | +# | parchment | YYYY.MM.DD-MCVersion | Open community-sourced parameter names and javadocs layered on top of official | +# +# You must be aware of the Mojang license when using the 'official' or 'parchment' mappings. +# See more information here: https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md +# +# Parchment is an unofficial project maintained by ParchmentMC, separate from Minecraft Forge. +# Additional setup is needed to use their mappings, see https://parchmentmc.org/docs/getting-started +mapping_channel=official +# The mapping version to query from the mapping channel. +# This must match the format required by the mapping channel. +mapping_version=1.20.1 + + +## Mod Properties + +# The unique mod identifier for the mod. Must be lowercase in English locale. Must fit the regex [a-z][a-z0-9_]{1,63} +# Must match the String constant located in the main mod class annotated with @Mod. +mod_id=unusualfishmod +# The human-readable display name for the mod. +mod_name=Unusual Fish Mod +# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default. +mod_license=LGPLv3 +# The mod version. See https://semver.org/ +mod_version=1.0.0 +# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository. +# This should match the base package used for the mod sources. +# See https://maven.apache.org/guides/mini/guide-naming-conventions.html +mod_group_id=codyhuh.unusualfishmod +# The authors of the mod. This is a simple text string that is used for display purposes in the mod list. +mod_authors=codyhuh (code), OmayPaty (art), Peeko (former author) +# The description of the mod. This is a simple multiline text string that is used for display purposes in the mod list. +mod_description=A mod that adds a variety of new aquatic creatures, both useful and atheistic! diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 249e5832f090a2944b7473328c07c9755baa3196..943f0cbfa754578e88a3dae77fce6e3dea56edbf 100644 GIT binary patch delta 36524 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%0DGK?7GHTj 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 VwlMN}`%er%aGR6olj~j${vQ;P=LY}) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ae04661..37aef8d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index c53aefa..65dcd68 100644 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original 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. @@ -32,10 +32,10 @@ # 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». +# * 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: # @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,10 +80,10 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # 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"' @@ -143,12 +143,16 @@ 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=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=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -205,6 +209,12 @@ set -- \ 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. diff --git a/gradlew.bat b/gradlew.bat index 107acd3..93e3f59 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ 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% @@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :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/settings.gradle b/settings.gradle new file mode 100644 index 0000000..291d399 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,13 @@ +pluginManagement { + repositories { + gradlePluginPortal() + maven { + name = 'MinecraftForge' + url = 'https://maven.minecraftforge.net/' + } + } +} + +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.5.0' +} \ No newline at end of file diff --git a/src/main/java/codyhuh/unusualfishmod/UnusualFishMod.java b/src/main/java/codyhuh/unusualfishmod/UnusualFishMod.java index 4a2268c..bd677d5 100644 --- a/src/main/java/codyhuh/unusualfishmod/UnusualFishMod.java +++ b/src/main/java/codyhuh/unusualfishmod/UnusualFishMod.java @@ -11,12 +11,6 @@ @Mod(UnusualFishMod.MOD_ID) public class UnusualFishMod { public static final String MOD_ID = "unusualfishmod"; - public static final CreativeModeTab TAB = new CreativeModeTab(MOD_ID) { - @Override - public ItemStack makeIcon() { - return UFItems.RAW_RHINO_TETRA.get().getDefaultInstance(); - } - }; public UnusualFishMod() { IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); @@ -28,6 +22,7 @@ public UnusualFishMod() { UFSounds.SOUND_EVENTS.register(bus); UFBlockEntities.BLOCK_ENTITIES.register(bus); UFLootModifiers.LOOT_MODIFIERS.register(bus); + UFTabs.CREATIVE_TABS.register(bus); MinecraftForge.EVENT_BUS.register(this); } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/AbyssalBlastRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/AbyssalBlastRenderer.java index 876a58e..5c70627 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/AbyssalBlastRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/AbyssalBlastRenderer.java @@ -4,9 +4,7 @@ import codyhuh.unusualfishmod.common.entity.item.AbyssalBlast; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; -import com.mojang.math.Matrix3f; -import com.mojang.math.Matrix4f; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.entity.EntityRenderer; @@ -14,6 +12,8 @@ import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; +import org.joml.Matrix3f; +import org.joml.Matrix4f; public class AbyssalBlastRenderer extends EntityRenderer { private static final ResourceLocation TEXTURE_0 = new ResourceLocation(UnusualFishMod.MOD_ID, "textures/entity/abyssalblast/abyssal_blast_0.png"); @@ -28,8 +28,8 @@ public AbyssalBlastRenderer(EntityRendererProvider.Context renderManagerIn) { public void render(AbyssalBlast entityIn, float entityYaw, float partialTicks, PoseStack matrixStackIn, MultiBufferSource bufferIn, int packedLightIn) { matrixStackIn.pushPose(); matrixStackIn.translate(0.0D, 0.25F, 0.0D); - matrixStackIn.mulPose(Vector3f.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90.0F)); - matrixStackIn.mulPose(Vector3f.XP.rotationDegrees(Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot()))); + matrixStackIn.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90.0F)); + matrixStackIn.mulPose(Axis.XP.rotationDegrees(Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot()))); int arcs = Mth.clamp(Mth.floor(entityIn.tickCount / 5F), 1, 4); matrixStackIn.translate(0.0D, 0.0F, 0.4D); diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/AeroMonoRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/AeroMonoRenderer.java index a03ab33..29fa701 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/AeroMonoRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/AeroMonoRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.AeroMonoModel; import codyhuh.unusualfishmod.common.entity.AeroMono; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(AeroMono entity) { protected void setupRotations(AeroMono p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/AmberGobyRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/AmberGobyRenderer.java index 004ea06..c7798cf 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/AmberGobyRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/AmberGobyRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.AmberGobyModel; import codyhuh.unusualfishmod.common.entity.AmberGoby; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -28,11 +28,11 @@ protected void setupRotations(AmberGoby p_116226_, PoseStack p_116227_, float p_ float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/BarkAngelfishRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/BarkAngelfishRenderer.java index 79453be..0a3c748 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/BarkAngelfishRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/BarkAngelfishRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.BarkAngelfishModel; import codyhuh.unusualfishmod.common.entity.BarkAngelfish; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -28,11 +28,11 @@ protected void setupRotations(BarkAngelfish p_116226_, PoseStack p_116227_, floa float f = 6.5F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/BeakedHerringRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/BeakedHerringRenderer.java index bfeb051..9882011 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/BeakedHerringRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/BeakedHerringRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.BeakedHerringModel; import codyhuh.unusualfishmod.common.entity.BeakedHerring; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -27,10 +27,10 @@ public ResourceLocation getTextureLocation(BeakedHerring entity) { protected void setupRotations(BeakedHerring p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/BlindSailfinRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/BlindSailfinRenderer.java index b0c2a18..a6806b5 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/BlindSailfinRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/BlindSailfinRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.BlindSailfinModel; import codyhuh.unusualfishmod.common.entity.BlindSailfin; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(BlindSailfin entity) { protected void setupRotations(BlindSailfin p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/BlizzardfinTunaRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/BlizzardfinTunaRenderer.java index 4fe6b8d..6cd69e8 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/BlizzardfinTunaRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/BlizzardfinTunaRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.BlizzardfinTunaModel; import codyhuh.unusualfishmod.common.entity.BlizzardfinTuna; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -27,10 +27,10 @@ public ResourceLocation getTextureLocation(BlizzardfinTuna entity) { protected void setupRotations(BlizzardfinTuna p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/CelestialFishRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/CelestialFishRenderer.java index 2c46e8f..c99272b 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/CelestialFishRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/CelestialFishRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.CelestialFishModel; import codyhuh.unusualfishmod.common.entity.CelestialFish; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.core.BlockPos; @@ -27,10 +27,10 @@ public ResourceLocation getTextureLocation(CelestialFish entity) { protected void setupRotations(CelestialFish p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 2.3F * Mth.sin(0.2F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/CircusFishRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/CircusFishRenderer.java index 7306fab..3373813 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/CircusFishRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/CircusFishRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.CircusFishModel; import codyhuh.unusualfishmod.common.entity.CircusFish; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(CircusFish entity) { protected void setupRotations(CircusFish p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/ClownthornSharkRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/ClownthornSharkRenderer.java index 5def18e..87ef8c5 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/ClownthornSharkRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/ClownthornSharkRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.ClownthornSharkModel; import codyhuh.unusualfishmod.common.entity.ClownthornShark; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(ClownthornShark entity) { protected void setupRotations(ClownthornShark p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2F, 0.1F, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } p_116227_.translate(0.0D, 0.0D, 0.5D); } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/CopperflameAnthiasRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/CopperflameAnthiasRenderer.java index 4671437..ed1180f 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/CopperflameAnthiasRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/CopperflameAnthiasRenderer.java @@ -6,7 +6,7 @@ import codyhuh.unusualfishmod.common.entity.CopperflameAnthias; import com.google.common.collect.Maps; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.Util; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; @@ -34,10 +34,10 @@ public ResourceLocation getTextureLocation(CopperflameAnthias entity) { protected void setupRotations(CopperflameAnthias p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/DemonHerringRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/DemonHerringRenderer.java index d3d8f8b..52fb50b 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/DemonHerringRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/DemonHerringRenderer.java @@ -7,7 +7,7 @@ import codyhuh.unusualfishmod.common.entity.DemonHerring; import com.google.common.collect.Maps; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.Util; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; @@ -36,10 +36,10 @@ public ResourceLocation getTextureLocation(DemonHerring entity) { protected void setupRotations(DemonHerring p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/DroopingGouramiRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/DroopingGouramiRenderer.java index adae36c..d1ebd60 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/DroopingGouramiRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/DroopingGouramiRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.DroopingGouramiModel; import codyhuh.unusualfishmod.common.entity.DroopingGourami; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(DroopingGourami entity) { protected void setupRotations(DroopingGourami p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/DualityDamselfishRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/DualityDamselfishRenderer.java index ef1b335..b36419c 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/DualityDamselfishRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/DualityDamselfishRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.DualityDamselfishModel; import codyhuh.unusualfishmod.common.entity.DualityDamselfish; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(DualityDamselfish entity) { protected void setupRotations(DualityDamselfish p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/EyelashFishRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/EyelashFishRenderer.java index be3563a..95936db 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/EyelashFishRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/EyelashFishRenderer.java @@ -6,7 +6,7 @@ import codyhuh.unusualfishmod.common.entity.EyelashFish; import com.google.common.collect.Maps; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.Util; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; @@ -43,11 +43,11 @@ public ResourceLocation getTextureLocation(EyelashFish entity) { protected void setupRotations(EyelashFish p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 6.5F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/ForkfishRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/ForkfishRenderer.java index bf8a9c2..bbe7310 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/ForkfishRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/ForkfishRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.ForkfishModel; import codyhuh.unusualfishmod.common.entity.Forkfish; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(Forkfish entity) { protected void setupRotations(Forkfish p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/GnasherRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/GnasherRenderer.java index c711b05..8b2eb6e 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/GnasherRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/GnasherRenderer.java @@ -6,7 +6,7 @@ import codyhuh.unusualfishmod.client.renderer.layers.UFGlowRenderLayer; import codyhuh.unusualfishmod.common.entity.Gnasher; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -28,10 +28,10 @@ public ResourceLocation getTextureLocation(Gnasher entity) { protected void setupRotations(Gnasher p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2F, 0.1F, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/HatchetfishRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/HatchetfishRenderer.java index 8a3aec7..2560362 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/HatchetfishRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/HatchetfishRenderer.java @@ -6,7 +6,7 @@ import codyhuh.unusualfishmod.client.renderer.layers.UFGlowRenderLayer; import codyhuh.unusualfishmod.common.entity.HatchetFish; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -28,10 +28,10 @@ public ResourceLocation getTextureLocation(HatchetFish entity) { protected void setupRotations(HatchetFish p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/MossthornRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/MossthornRenderer.java index edfca6e..5d6a8eb 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/MossthornRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/MossthornRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.MossthornModel; import codyhuh.unusualfishmod.common.entity.Mossthorn; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(Mossthorn entity) { protected void setupRotations(Mossthorn p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/PicklefishRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/PicklefishRenderer.java index 11bf301..06dbf64 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/PicklefishRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/PicklefishRenderer.java @@ -6,7 +6,7 @@ import codyhuh.unusualfishmod.client.renderer.layers.UFGlowRenderLayer; import codyhuh.unusualfishmod.common.entity.Picklefish; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -28,10 +28,10 @@ public ResourceLocation getTextureLocation(Picklefish entity) { protected void setupRotations(Picklefish p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/PinkfinIdolRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/PinkfinIdolRenderer.java index 0b67e5c..83b3b3f 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/PinkfinIdolRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/PinkfinIdolRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.PinkfinIdolModel; import codyhuh.unusualfishmod.common.entity.PinkfinIdol; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(PinkfinIdol entity) { protected void setupRotations(PinkfinIdol p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/RhinoTetraRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/RhinoTetraRenderer.java index b07f015..4ec4d4e 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/RhinoTetraRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/RhinoTetraRenderer.java @@ -6,7 +6,7 @@ import codyhuh.unusualfishmod.common.entity.RhinoTetra; import com.google.common.collect.Maps; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.Util; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; @@ -39,10 +39,10 @@ public ResourceLocation getTextureLocation(RhinoTetra entity) { protected void setupRotations(RhinoTetra p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/RipperRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/RipperRenderer.java index 0946ae3..40337ab 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/RipperRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/RipperRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.RipperModel; import codyhuh.unusualfishmod.common.entity.Ripper; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(Ripper entity) { protected void setupRotations(Ripper p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2F, 0.1F, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/SailorBarbRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/SailorBarbRenderer.java index a268d85..430a27e 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/SailorBarbRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/SailorBarbRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.SailorBarbModel; import codyhuh.unusualfishmod.common.entity.SailorBarb; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(SailorBarb entity) { protected void setupRotations(SailorBarb p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/ShockcatRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/ShockcatRenderer.java index 16ed295..0a366f0 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/ShockcatRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/ShockcatRenderer.java @@ -6,7 +6,7 @@ import codyhuh.unusualfishmod.client.renderer.layers.UFGlowRenderLayer; import codyhuh.unusualfishmod.common.entity.Shockcat; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -28,10 +28,10 @@ public ResourceLocation getTextureLocation(Shockcat entity) { protected void setupRotations(Shockcat p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.5F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/SneepSnorpRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/SneepSnorpRenderer.java index d4609d6..2ca8e3f 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/SneepSnorpRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/SneepSnorpRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.SneepSnorpModel; import codyhuh.unusualfishmod.common.entity.SneepSnorp; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,11 +26,11 @@ public ResourceLocation getTextureLocation(SneepSnorp entity) { protected void setupRotations(SneepSnorp p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/SnowflakeTailFishRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/SnowflakeTailFishRenderer.java index f676d54..7117e5b 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/SnowflakeTailFishRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/SnowflakeTailFishRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.SnowflakeTailFishModel; import codyhuh.unusualfishmod.common.entity.SnowflakeTailFish; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(SnowflakeTailFish entity) { protected void setupRotations(SnowflakeTailFish p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate( 0.2F, 0.1F, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/SpindlefishRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/SpindlefishRenderer.java index 21afa81..479d619 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/SpindlefishRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/SpindlefishRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.SpindlefishModel; import codyhuh.unusualfishmod.common.entity.Spindlefish; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(Spindlefish entity) { protected void setupRotations(Spindlefish p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate((double) 0.2F, (double) 0.1F, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/SpoonSharkRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/SpoonSharkRenderer.java index 2b9466e..7e8e5cb 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/SpoonSharkRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/SpoonSharkRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.SpoonSharkModel; import codyhuh.unusualfishmod.common.entity.SpoonShark; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(SpoonShark entity) { protected void setupRotations(SpoonShark p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/StoutBichirRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/StoutBichirRenderer.java index d629005..dc450d6 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/StoutBichirRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/StoutBichirRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.StoutBichirModel; import codyhuh.unusualfishmod.common.entity.StoutBichir; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(StoutBichir entity) { protected void setupRotations(StoutBichir p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 2.3F * Mth.sin(0.2F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/TigerJungleSharkRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/TigerJungleSharkRenderer.java index 93bfb88..898a744 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/TigerJungleSharkRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/TigerJungleSharkRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.TigerJungleSharkModel; import codyhuh.unusualfishmod.common.entity.TigerJungleShark; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(TigerJungleShark entity) { protected void setupRotations(TigerJungleShark p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2F, 0.1F, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/VoltAnglerRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/VoltAnglerRenderer.java index b633966..7334194 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/VoltAnglerRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/VoltAnglerRenderer.java @@ -6,7 +6,7 @@ import codyhuh.unusualfishmod.client.renderer.layers.UFGlowRenderLayer; import codyhuh.unusualfishmod.common.entity.VoltAngler; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -28,10 +28,10 @@ public ResourceLocation getTextureLocation(VoltAngler entity) { protected void setupRotations(VoltAngler p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/ZebraCornetfishRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/ZebraCornetfishRenderer.java index 3779c98..e007cc6 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/ZebraCornetfishRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/ZebraCornetfishRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.ZebraCornetfishModel; import codyhuh.unusualfishmod.common.entity.ZebraCornetfish; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -26,10 +26,10 @@ public ResourceLocation getTextureLocation(ZebraCornetfish entity) { protected void setupRotations(ZebraCornetfish p_116226_, PoseStack p_116227_, float p_116228_, float p_116229_, float p_116230_) { super.setupRotations(p_116226_, p_116227_, p_116228_, p_116229_, p_116230_); float f = 4.3F * Mth.sin(0.6F * p_116228_); - p_116227_.mulPose(Vector3f.YP.rotationDegrees(f)); + p_116227_.mulPose(Axis.YP.rotationDegrees(f)); if (!p_116226_.isInWater()) { p_116227_.translate(0.2D, 0.1D, 0.0D); - p_116227_.mulPose(Vector3f.ZP.rotationDegrees(90.0F)); + p_116227_.mulPose(Axis.ZP.rotationDegrees(90.0F)); } } diff --git a/src/main/java/codyhuh/unusualfishmod/client/renderer/item/ThrownPrismarineSpearRenderer.java b/src/main/java/codyhuh/unusualfishmod/client/renderer/item/ThrownPrismarineSpearRenderer.java index 174bd2c..e3213d0 100644 --- a/src/main/java/codyhuh/unusualfishmod/client/renderer/item/ThrownPrismarineSpearRenderer.java +++ b/src/main/java/codyhuh/unusualfishmod/client/renderer/item/ThrownPrismarineSpearRenderer.java @@ -5,7 +5,7 @@ import codyhuh.unusualfishmod.client.model.item.PrismarineSpearModel; import codyhuh.unusualfishmod.common.entity.item.ThrownPrismarineSpear; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; @@ -25,8 +25,8 @@ public ThrownPrismarineSpearRenderer(EntityRendererProvider.Context p_174420_) { public void render(ThrownPrismarineSpear spear, float p_116112_, float p_116113_, PoseStack stack, MultiBufferSource buffer, int p_116116_) { stack.pushPose(); - stack.mulPose(Vector3f.YP.rotationDegrees(Mth.lerp(p_116113_, spear.yRotO, spear.getYRot()) - 90.0F)); - stack.mulPose(Vector3f.ZP.rotationDegrees(Mth.lerp(p_116113_, spear.xRotO, spear.getXRot()) + 90.0F)); + stack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(p_116113_, spear.yRotO, spear.getYRot()) - 90.0F)); + stack.mulPose(Axis.ZP.rotationDegrees(Mth.lerp(p_116113_, spear.xRotO, spear.getXRot()) + 90.0F)); this.model.renderToBuffer(stack, buffer.getBuffer(this.model.renderType(this.getTextureLocation(spear))), p_116116_, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F); diff --git a/src/main/java/codyhuh/unusualfishmod/common/ForgeEvents.java b/src/main/java/codyhuh/unusualfishmod/common/ForgeEvents.java index f780c6c..a6e4e9a 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/ForgeEvents.java +++ b/src/main/java/codyhuh/unusualfishmod/common/ForgeEvents.java @@ -24,13 +24,13 @@ public class ForgeEvents { @SubscribeEvent public static void livingTick(LivingEvent.LivingTickEvent e) { LivingEntity entity = e.getEntity(); - Level level = e.getEntity().getLevel(); + Level level = e.getEntity().level(); AABB aabb = entity.getBoundingBox(); double range = 2.0D; - BlockPos blockpos = new BlockPos(aabb.minX - range, aabb.minY - range, aabb.minZ - range); - BlockPos blockpos1 = new BlockPos(aabb.maxX + range, aabb.maxY + range, aabb.maxZ + range); + BlockPos blockpos = new BlockPos((int) (aabb.minX - range), (int) (aabb.minY - range), (int) (aabb.minZ - range)); + BlockPos blockpos1 = new BlockPos((int) (aabb.maxX + range), (int) (aabb.maxY + range), (int) (aabb.maxZ + range)); if (level.hasChunksAt(blockpos, blockpos1)) { BlockPos.MutableBlockPos mutablePos = new BlockPos.MutableBlockPos(); diff --git a/src/main/java/codyhuh/unusualfishmod/common/block_entity/VoltDetectorBlockEntity.java b/src/main/java/codyhuh/unusualfishmod/common/block_entity/VoltDetectorBlockEntity.java index 140cb5e..a3d4df0 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/block_entity/VoltDetectorBlockEntity.java +++ b/src/main/java/codyhuh/unusualfishmod/common/block_entity/VoltDetectorBlockEntity.java @@ -57,8 +57,8 @@ private static void nearDetector(Level level, BlockPos pos, double radius) { AABB aabb = new AABB(pos); currentList = level.getEntitiesOfClass(VoltAngler.class, aabb.inflate(radius)); - BlockPos blockpos = new BlockPos(aabb.minX - radius, aabb.minY - radius, aabb.minZ - radius); - BlockPos blockpos1 = new BlockPos(aabb.maxX + radius, aabb.maxY + radius, aabb.maxZ + radius); + BlockPos blockpos = new BlockPos((int) (aabb.minX - radius), (int) (aabb.minY - radius), (int) (aabb.minZ - radius)); + BlockPos blockpos1 = new BlockPos((int) (aabb.maxX + radius), (int) (aabb.maxY + radius), (int) (aabb.maxZ + radius)); if (level.getBlockEntity(pos) instanceof VoltDetectorBlockEntity voltDetector && level.hasChunksAt(blockpos, blockpos1)) { BlockPos.MutableBlockPos mutablePos = new BlockPos.MutableBlockPos(); diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/AeroMono.java b/src/main/java/codyhuh/unusualfishmod/common/entity/AeroMono.java index e6a9412..bd2778f 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/AeroMono.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/AeroMono.java @@ -61,9 +61,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/AmberGoby.java b/src/main/java/codyhuh/unusualfishmod/common/entity/AmberGoby.java index 16c8aa3..de6351e 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/AmberGoby.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/AmberGoby.java @@ -62,9 +62,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/BarkAngelfish.java b/src/main/java/codyhuh/unusualfishmod/common/entity/BarkAngelfish.java index ff42b2e..25b6bfc 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/BarkAngelfish.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/BarkAngelfish.java @@ -62,9 +62,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/BeakedHerring.java b/src/main/java/codyhuh/unusualfishmod/common/entity/BeakedHerring.java index 6f035eb..0262e9c 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/BeakedHerring.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/BeakedHerring.java @@ -62,9 +62,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/BlackCapSnail.java b/src/main/java/codyhuh/unusualfishmod/common/entity/BlackCapSnail.java index 2631e3f..3747ff6 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/BlackCapSnail.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/BlackCapSnail.java @@ -41,7 +41,7 @@ public class BlackCapSnail extends WaterAnimal implements Bucketable { public BlackCapSnail(EntityType type, Level world) { super(type, world); this.moveControl = new BlackCapSnail.MoveHelperController(this); - this.maxUpStep = 1.0f; + this.setMaxUpStep(1.0F); } public static AttributeSupplier.Builder createAttributes() { @@ -56,7 +56,7 @@ protected void registerGoals() { } protected PathNavigation createNavigation(Level p_27480_) { - return new GroundPathNavigation(this, level); + return new GroundPathNavigation(this, level()); } @Override diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/BlindSailfin.java b/src/main/java/codyhuh/unusualfishmod/common/entity/BlindSailfin.java index 367746a..04b5d4e 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/BlindSailfin.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/BlindSailfin.java @@ -73,7 +73,7 @@ public boolean canUse() { public void tick() { super.tick(); - if (this.level.isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { + if (this.level().isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { Vec3 vec3 = this.getViewVector(0.0F); float f = Mth.cos(this.getYRot() * ((float) Math.PI / 180F)) * 0.3F; float f1 = Mth.sin(this.getYRot() * ((float) Math.PI / 180F)) * 0.3F; @@ -83,9 +83,9 @@ public void tick() { public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double) ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double) 0.4F, (double) ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/BlizzardfinTuna.java b/src/main/java/codyhuh/unusualfishmod/common/entity/BlizzardfinTuna.java index 1b963a8..3cbc413 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/BlizzardfinTuna.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/BlizzardfinTuna.java @@ -53,9 +53,9 @@ public void registerGoals() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add(((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), 0.4F, ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/BrickSnail.java b/src/main/java/codyhuh/unusualfishmod/common/entity/BrickSnail.java index bb80c9b..7869a6b 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/BrickSnail.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/BrickSnail.java @@ -41,7 +41,7 @@ public class BrickSnail extends WaterAnimal implements Bucketable { public BrickSnail(EntityType type, Level world) { super(type, world); this.moveControl = new BrickSnail.MoveHelperController(this); - this.maxUpStep = 1.0f; + this.setMaxUpStep(1.0F); } public static AttributeSupplier.Builder createAttributes() { @@ -56,7 +56,7 @@ protected void registerGoals() { } protected PathNavigation createNavigation(Level p_27480_) { - return new GroundPathNavigation(this, level); + return new GroundPathNavigation(this, level()); } @Override diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/CelestialFish.java b/src/main/java/codyhuh/unusualfishmod/common/entity/CelestialFish.java index 644bdde..72deb4f 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/CelestialFish.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/CelestialFish.java @@ -25,7 +25,8 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.ServerLevelAccessor; -import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.material.Fluids; +import net.minecraft.world.level.material.WaterFluid; import net.minecraft.world.phys.Vec3; public class CelestialFish extends WaterAnimal { @@ -63,22 +64,10 @@ public boolean canUse() { }); } - public void tick() { - super.tick(); - - if (this.level.isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { - Vec3 vec3 = this.getViewVector(0.0F); - float f = Mth.cos(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; - float f1 = Mth.sin(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; - - } - - } - public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add(((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), 0.4D, ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } @@ -109,7 +98,7 @@ public SoundEvent getFlopSound() { @Override public void playerTouch(Player entity) { super.playerTouch(entity); - if (!entity.isCreative() && this.attackCooldown == 0 && entity.level.getDifficulty() != Difficulty.PEACEFUL) { + if (!entity.isCreative() && this.attackCooldown == 0 && entity.level().getDifficulty() != Difficulty.PEACEFUL) { entity.addEffect(new MobEffectInstance(MobEffects.REGENERATION, 300, 0, false, false)); entity.addEffect(new MobEffectInstance(MobEffects.GLOWING, 600, 0, false, false)); this.attackCooldown = 80; @@ -117,7 +106,7 @@ public void playerTouch(Player entity) { } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor iServerWorld, MobSpawnType reason, BlockPos pos, RandomSource random) { - return reason == MobSpawnType.SPAWNER || iServerWorld.getBlockState(pos).getMaterial() == Material.WATER && iServerWorld.getBlockState(pos.above()).getMaterial() == Material.WATER && isLightLevelOk(pos, iServerWorld); + return reason == MobSpawnType.SPAWNER || iServerWorld.getBlockState(pos).getFluidState().getFluidType() == Fluids.WATER.getFluidType() && iServerWorld.getBlockState(pos.above()).getFluidState().getFluidType() == Fluids.WATER.getFluidType() && isLightLevelOk(pos, iServerWorld); } private static boolean isLightLevelOk(BlockPos pos, ServerLevelAccessor iServerWorld) { diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/CircusFish.java b/src/main/java/codyhuh/unusualfishmod/common/entity/CircusFish.java index afee707..70f901b 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/CircusFish.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/CircusFish.java @@ -53,9 +53,9 @@ protected void registerGoals() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add(((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), 0.4F, (this.random.nextFloat() * 2.0F - 1.0F) * 0.05F)); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/ClownthornShark.java b/src/main/java/codyhuh/unusualfishmod/common/entity/ClownthornShark.java index ca76c75..08aa0f2 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/ClownthornShark.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/ClownthornShark.java @@ -72,7 +72,7 @@ public boolean canUse() { public void tick() { super.tick(); - if (this.level.isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { + if (this.level().isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { Vec3 vec3 = this.getViewVector(0.0F); float f = Mth.cos(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; float f1 = Mth.sin(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; @@ -83,9 +83,9 @@ public void tick() { public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/CopperflameAnthias.java b/src/main/java/codyhuh/unusualfishmod/common/entity/CopperflameAnthias.java index 998074f..1aa291a 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/CopperflameAnthias.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/CopperflameAnthias.java @@ -72,9 +72,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/CoralSkrimp.java b/src/main/java/codyhuh/unusualfishmod/common/entity/CoralSkrimp.java index 19522d1..fa27c8d 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/CoralSkrimp.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/CoralSkrimp.java @@ -48,7 +48,7 @@ public class CoralSkrimp extends WaterAnimal implements Bucketable { public CoralSkrimp(EntityType type, Level world) { super(type, world); this.moveControl = new CoralSkrimp.MoveHelperController(this); - this.maxUpStep = 1.5f; + this.setMaxUpStep(1.5F); } public static AttributeSupplier.Builder createAttributes() { @@ -64,7 +64,7 @@ protected void registerGoals() { } protected PathNavigation createNavigation(Level p_27480_) { - return new GroundPathNavigation(this, level); + return new GroundPathNavigation(this, level()); } @Override diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/CrimsonshellSquid.java b/src/main/java/codyhuh/unusualfishmod/common/entity/CrimsonshellSquid.java index c833dd5..025e73d 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/CrimsonshellSquid.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/CrimsonshellSquid.java @@ -102,7 +102,7 @@ public BreedableWaterAnimal getBreedOffspring(ServerLevel level, BreedableWaterA public boolean hurt(DamageSource p_29963_, float p_29964_) { if (super.hurt(p_29963_, p_29964_) && this.getLastHurtByMob() != null) { - if (!this.level.isClientSide) { + if (!this.level().isClientSide) { this.spawnInk(); } @@ -124,14 +124,14 @@ private void spawnInk() { for(int i = 0; i < 30; ++i) { Vec3 vec31 = this.rotateVector(new Vec3((double)this.random.nextFloat() * 0.6D - 0.3D, -1.0D, (double)this.random.nextFloat() * 0.6D - 0.3D)); Vec3 vec32 = vec31.scale(0.3D + (double)(this.random.nextFloat() * 2.0F)); - ((ServerLevel)this.level).sendParticles(ParticleTypes.SQUID_INK, vec3.x, vec3.y + 0.5D, vec3.z, 0, vec32.x, vec32.y, vec32.z, (double)0.1F); + ((ServerLevel)this.level()).sendParticles(ParticleTypes.SQUID_INK, vec3.x, vec3.y + 0.5D, vec3.z, 0, vec32.x, vec32.y, vec32.z, 0.1F); } } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add(((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), 0.4F, ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/DeepCrawler.java b/src/main/java/codyhuh/unusualfishmod/common/entity/DeepCrawler.java index 25487bf..3627651 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/DeepCrawler.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/DeepCrawler.java @@ -39,7 +39,7 @@ public class DeepCrawler extends WaterAnimal implements Bucketable{ public DeepCrawler(EntityType type, Level world) { super(type, world); this.moveControl = new DeepCrawler.MoveHelperController(this); - this.maxUpStep = 1.0f; + this.setMaxUpStep(1.0F); } public static AttributeSupplier.Builder createAttributes() { @@ -55,7 +55,7 @@ protected void registerGoals() { } protected PathNavigation createNavigation(Level p_27480_) { - return new GroundPathNavigation(this, level); + return new GroundPathNavigation(this, level()); } @Override diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/DemonHerring.java b/src/main/java/codyhuh/unusualfishmod/common/entity/DemonHerring.java index 608847d..b61e978 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/DemonHerring.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/DemonHerring.java @@ -72,9 +72,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add(((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), 0.4D, ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/DroopingGourami.java b/src/main/java/codyhuh/unusualfishmod/common/entity/DroopingGourami.java index d5480a0..24972c4 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/DroopingGourami.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/DroopingGourami.java @@ -62,9 +62,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/DualityDamselfish.java b/src/main/java/codyhuh/unusualfishmod/common/entity/DualityDamselfish.java index 7448cb1..5834011 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/DualityDamselfish.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/DualityDamselfish.java @@ -62,9 +62,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add(((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), 0.4D, ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/EyelashFish.java b/src/main/java/codyhuh/unusualfishmod/common/entity/EyelashFish.java index f2e267e..686acf2 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/EyelashFish.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/EyelashFish.java @@ -79,9 +79,9 @@ public boolean hurt(DamageSource p_21016_, float p_21017_) { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add(((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), 0.4F, ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/Forkfish.java b/src/main/java/codyhuh/unusualfishmod/common/entity/Forkfish.java index 0ca4c89..072b506 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/Forkfish.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/Forkfish.java @@ -71,7 +71,7 @@ public boolean canUse() { public void tick() { super.tick(); - if (this.level.isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { + if (this.level().isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { Vec3 vec3 = this.getViewVector(0.0F); float f = Mth.cos(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; float f1 = Mth.sin(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; @@ -81,9 +81,9 @@ public void tick() { public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/FreshwaterMantis.java b/src/main/java/codyhuh/unusualfishmod/common/entity/FreshwaterMantis.java index c59480a..4ee16c7 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/FreshwaterMantis.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/FreshwaterMantis.java @@ -39,7 +39,7 @@ public class FreshwaterMantis extends WaterAnimal implements Bucketable { public FreshwaterMantis(EntityType type, Level world) { super(type, world); this.moveControl = new FreshwaterMantis.MoveHelperController(this); - this.maxUpStep = 1.1f; + this.setMaxUpStep(1.1F); } public static AttributeSupplier.Builder createAttributes() { @@ -62,7 +62,7 @@ protected void registerGoals() { @Override public boolean doHurtTarget(Entity entityIn) { - boolean flag = entityIn.hurt(DamageSource.mobAttack(this), (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE)); + boolean flag = entityIn.hurt(damageSources().mobAttack(this), (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE)); if (flag) { this.doEnchantDamageEffects(this, entityIn); } @@ -71,7 +71,7 @@ public boolean doHurtTarget(Entity entityIn) { } protected PathNavigation createNavigation(Level p_27480_) { - return new GroundPathNavigation(this, level); + return new GroundPathNavigation(this, level()); } protected SoundEvent getAmbientSound() { @@ -108,7 +108,7 @@ protected void handleAirSupply(int p_149194_) { this.setAirSupply(p_149194_ - 1); if (this.getAirSupply() == -20) { this.setAirSupply(0); - this.hurt(DamageSource.DRY_OUT, 1.0F); + this.hurt(damageSources().dryOut(), 1.0F); } } else { this.setAirSupply(this.getMaxAirSupply()); diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/Gnasher.java b/src/main/java/codyhuh/unusualfishmod/common/entity/Gnasher.java index 5f8ddc0..ca39ada 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/Gnasher.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/Gnasher.java @@ -26,7 +26,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.ServerLevelAccessor; -import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.material.Fluids; import net.minecraft.world.phys.Vec3; public class Gnasher extends WaterAnimal implements RangedAttackMob { @@ -70,23 +70,23 @@ public boolean canUse() { public void performRangedAttack(LivingEntity target, float distanceFactor) { this.lookAt(target, 100, 100); this.yBodyRot = yBodyRotO; - AbyssalBlast glass = new AbyssalBlast(this.level, this); + AbyssalBlast glass = new AbyssalBlast(this.level(), this); double xDistance = target.getX() - this.getX(); double yDistance = target.getY(0.3333333333333333D) - glass.getY(); double zDistance = target.getZ() - this.getZ(); double yMath = Mth.sqrt((float) ((xDistance * xDistance) + (zDistance * zDistance))); glass.shoot(xDistance, yDistance + yMath * 0.10000000298023224D, zDistance, 1.6F, 11.0F); - this.level.addFreshEntity(glass); + this.level().addFreshEntity(glass); } @Override public boolean doHurtTarget(Entity entityIn) { this.attackAnimationTick = 10; - this.level.broadcastEntityEvent(this, (byte)4); + this.level().broadcastEntityEvent(this, (byte)4); float f = this.getAttackDamage(); float f1 = (int)f > 0 ? f / 2.0F + (float)this.random.nextInt((int)f) : f; - boolean flag = entityIn.hurt(DamageSource.mobAttack(this), f1); + boolean flag = entityIn.hurt(damageSources().mobAttack(this), f1); if (flag) { entityIn.setDeltaMovement(entityIn.getDeltaMovement().add(0.0D, (double)0.4F, 0.0D)); this.doEnchantDamageEffects(this, entityIn); @@ -103,7 +103,7 @@ public void tick() { this.attackCooldown--; } - if (this.level.isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { + if (this.level().isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { Vec3 vec3 = this.getViewVector(0.0F); float f = Mth.cos(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; float f1 = Mth.sin(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; @@ -114,9 +114,9 @@ public void tick() { public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } @@ -163,7 +163,7 @@ protected SoundEvent getFlopSound() { } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor iServerWorld, MobSpawnType reason, BlockPos pos, RandomSource random) { - return reason == MobSpawnType.SPAWNER || iServerWorld.getBlockState(pos).getMaterial() == Material.WATER && iServerWorld.getBlockState(pos.above()).getMaterial() == Material.WATER && isLightLevelOk(pos, iServerWorld); + return reason == MobSpawnType.SPAWNER || iServerWorld.getBlockState(pos).getFluidState().getFluidType() == Fluids.WATER.getFluidType() && iServerWorld.getBlockState(pos.above()).getFluidState().getFluidType() == Fluids.WATER.getFluidType() && isLightLevelOk(pos, iServerWorld); } private static boolean isLightLevelOk(BlockPos pos, ServerLevelAccessor iServerWorld) { diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/HatchetFish.java b/src/main/java/codyhuh/unusualfishmod/common/entity/HatchetFish.java index 8cbc910..a27d887 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/HatchetFish.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/HatchetFish.java @@ -63,9 +63,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add(((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), 0.4D, ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/LobedSkipper.java b/src/main/java/codyhuh/unusualfishmod/common/entity/LobedSkipper.java index 7523233..a4f14f0 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/LobedSkipper.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/LobedSkipper.java @@ -1,11 +1,12 @@ package codyhuh.unusualfishmod.common.entity; - import codyhuh.unusualfishmod.core.registry.UFItems; import codyhuh.unusualfishmod.core.registry.UFSounds; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.protocol.game.ClientboundAddEntityPacket; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; @@ -43,14 +44,13 @@ public LobedSkipper(EntityType entityType, Level level) this.jumpControl = new SkipperJumpController(); this.moveControl = new SkipperMoveController(); this.setMovementSpeed(0.0D); - this.maxUpStep = 1.1f; - + this.setMaxUpStep(1.1F); } - public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 5.0D).add(Attributes.MOVEMENT_SPEED, (double) 0.5D); } + protected void registerGoals() { this.goalSelector.addGoal(6, new WaterAvoidingRandomStrollGoal(this, 0.5D)); this.goalSelector.addGoal(2, new PanicGoal(this, 1.25D)); @@ -113,7 +113,7 @@ protected float getJumpPower() { public void customServerAiStep() { if (this.currentMoveTypeDuration > 0) --this.currentMoveTypeDuration; - if (this.isOnGround()) { + if (this.onGround()) { if (!this.wasOnGround) { this.setJumping(false); this.checkLandingDelay(); @@ -135,7 +135,7 @@ public void customServerAiStep() { } else if (!jumpHelper.canJump()) this.enableJumpControl(); } - this.wasOnGround = this.isOnGround(); + this.wasOnGround = this.onGround(); } @Override @@ -182,8 +182,8 @@ protected void jumpFromGround() { } } - if (!this.level.isClientSide) - this.level.broadcastEntityEvent(this, (byte) 1); + if (!this.level().isClientSide) + this.level().broadcastEntityEvent(this, (byte) 1); } public void setMovementSpeed(double newSpeed) { @@ -218,7 +218,7 @@ public void handleEntityEvent(byte id) { @Nonnull @Override - public Packet getAddEntityPacket() { + public Packet getAddEntityPacket() { return NetworkHooks.getEntitySpawningPacket(this); } @@ -334,7 +334,7 @@ public SkipperMoveController() { @Override public void tick() { - if (isOnGround() && !jumping && !((SkipperJumpController) jumpControl).getIsJumping()) + if (onGround() && !jumping && !((SkipperJumpController) jumpControl).getIsJumping()) setMovementSpeed(0.0D); else if (this.hasWanted()) setMovementSpeed(this.nextJumpSpeed); diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/ManaJellyfish.java b/src/main/java/codyhuh/unusualfishmod/common/entity/ManaJellyfish.java index 7722a30..0b24e13 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/ManaJellyfish.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/ManaJellyfish.java @@ -26,7 +26,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.ServerLevelAccessor; -import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.material.Fluids; public class ManaJellyfish extends BucketableSchoolingWaterAnimal { protected int attackCooldown = 0; @@ -67,9 +67,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } @@ -104,7 +104,7 @@ protected SoundEvent getAmbientSound() { @Override public void playerTouch(Player entity) { super.playerTouch(entity); - if (!entity.isCreative() && this.attackCooldown == 0 && entity.level.getDifficulty() != Difficulty.PEACEFUL) { + if (!entity.isCreative() && this.attackCooldown == 0 && entity.level().getDifficulty() != Difficulty.PEACEFUL) { entity.addEffect(new MobEffectInstance(MobEffects.WEAKNESS, 300, 0, false, false)); entity.addEffect(new MobEffectInstance(MobEffects.GLOWING, 600, 0, false, false)); this.attackCooldown = 80; @@ -112,7 +112,7 @@ public void playerTouch(Player entity) { } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor iServerWorld, MobSpawnType reason, BlockPos pos, RandomSource random) { - return reason == MobSpawnType.SPAWNER || iServerWorld.getBlockState(pos).getMaterial() == Material.WATER && iServerWorld.getBlockState(pos.above()).getMaterial() == Material.WATER && isLightLevelOk(pos, iServerWorld); + return reason == MobSpawnType.SPAWNER || iServerWorld.getBlockState(pos).getFluidState().getFluidType() == Fluids.WATER.getFluidType() && iServerWorld.getBlockState(pos.above()).getFluidState().getFluidType() == Fluids.WATER.getFluidType() && isLightLevelOk(pos, iServerWorld); } private static boolean isLightLevelOk(BlockPos pos, ServerLevelAccessor iServerWorld) { diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/Mossthorn.java b/src/main/java/codyhuh/unusualfishmod/common/entity/Mossthorn.java index 10b5799..6c1b1e2 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/Mossthorn.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/Mossthorn.java @@ -63,9 +63,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/MuddytopSnail.java b/src/main/java/codyhuh/unusualfishmod/common/entity/MuddytopSnail.java index 5dc5a01..0e7756d 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/MuddytopSnail.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/MuddytopSnail.java @@ -36,7 +36,7 @@ public class MuddytopSnail extends BucketableWaterAnimal { public MuddytopSnail(EntityType type, Level world) { super(type, world); this.moveControl = new MuddytopSnail.MoveHelperController(this); - this.maxUpStep = 1.0f; + this.setMaxUpStep(1.0F); } @Override @@ -57,7 +57,7 @@ protected void registerGoals() { } protected PathNavigation createNavigation(Level p_27480_) { - return new GroundPathNavigation(this, level); + return new GroundPathNavigation(this, level()); } @Override @@ -73,8 +73,8 @@ public void handleAirSupply(int p_209207_1_) { @Override public void playerTouch(Player entity) { super.playerTouch(entity); - if (!entity.isCreative() && this.attackCooldown == 0 && entity.level.getDifficulty() != Difficulty.PEACEFUL) { - entity.hurt(DamageSource.mobAttack(this), 2.0F); + if (!entity.isCreative() && this.attackCooldown == 0 && entity.level().getDifficulty() != Difficulty.PEACEFUL) { + entity.hurt(damageSources().mobAttack(this), 2.0F); this.attackCooldown = 80; } } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/Picklefish.java b/src/main/java/codyhuh/unusualfishmod/common/entity/Picklefish.java index cd147d7..55745dd 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/Picklefish.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/Picklefish.java @@ -64,9 +64,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/PinkfinIdol.java b/src/main/java/codyhuh/unusualfishmod/common/entity/PinkfinIdol.java index ce021b5..bcd88db 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/PinkfinIdol.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/PinkfinIdol.java @@ -70,7 +70,7 @@ public boolean canUse() { public void tick() { super.tick(); - if (this.level.isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { + if (this.level().isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { Vec3 vec3 = this.getViewVector(0.0F); float f = Mth.cos(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; float f1 = Mth.sin(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; @@ -80,9 +80,9 @@ public void tick() { public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/PorcupineLobster.java b/src/main/java/codyhuh/unusualfishmod/common/entity/PorcupineLobster.java index aa99a56..8d8d500 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/PorcupineLobster.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/PorcupineLobster.java @@ -45,15 +45,13 @@ public class PorcupineLobster extends WaterAnimal implements Bucketable { public PorcupineLobster(EntityType type, Level world) { super(type, world); this.moveControl = new PorcupineLobster.MoveHelperController(this); - this.maxUpStep = 1.5f; + this.setMaxUpStep(1.5F); } public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 4.0D).add(Attributes.MOVEMENT_SPEED, (double) 0.5F).add(Attributes.ARMOR, (double) 7.0F).add(Attributes.ATTACK_DAMAGE, (double) 3.0F); } - - protected void registerGoals() { this.goalSelector.addGoal(1, new RandomStrollGoal(this, 0.5F)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); @@ -73,14 +71,14 @@ public void tick() { @Override public void playerTouch(Player entity) { super.playerTouch(entity); - if (!entity.isCreative() && this.attackCooldown == 0 && entity.level.getDifficulty() != Difficulty.PEACEFUL) { - entity.hurt(DamageSource.mobAttack(this), 3.0F); + if (!entity.isCreative() && this.attackCooldown == 0 && entity.level().getDifficulty() != Difficulty.PEACEFUL) { + entity.hurt(damageSources().mobAttack(this), 3.0F); this.attackCooldown = 80; } } protected PathNavigation createNavigation(Level p_27480_) { - return new GroundPathNavigation(this, level); + return new GroundPathNavigation(this, level()); } @Override diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/Prawn.java b/src/main/java/codyhuh/unusualfishmod/common/entity/Prawn.java index 2593c6d..99815ae 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/Prawn.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/Prawn.java @@ -44,7 +44,7 @@ protected void registerGoals() { @Override public boolean doHurtTarget(Entity entityIn) { - boolean flag = entityIn.hurt(DamageSource.mobAttack(this), (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE)); + boolean flag = entityIn.hurt(damageSources().mobAttack(this), (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE)); if (flag) { this.doEnchantDamageEffects(this, entityIn); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/RhinoTetra.java b/src/main/java/codyhuh/unusualfishmod/common/entity/RhinoTetra.java index 05994ee..bf4146d 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/RhinoTetra.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/RhinoTetra.java @@ -72,9 +72,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add(((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), 0.4D, ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/Ripper.java b/src/main/java/codyhuh/unusualfishmod/common/entity/Ripper.java index 374cdf9..0aef3eb 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/Ripper.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/Ripper.java @@ -26,7 +26,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.ServerLevelAccessor; -import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.material.Fluids; public class Ripper extends BucketableSchoolingWaterAnimal { protected int attackCooldown = 0; @@ -71,20 +71,20 @@ public boolean canUse() { @Override public boolean doHurtTarget(Entity entityIn) { this.attackAnimationTick = 10; - this.level.broadcastEntityEvent(this, (byte)4); + this.level().broadcastEntityEvent(this, (byte)4); float f = this.getAttackDamage(); float f1 = (int)f > 0 ? f / 2.0F + (float)this.random.nextInt((int)f) : f; - boolean flag = entityIn.hurt(DamageSource.mobAttack(this), f1); + boolean flag = entityIn.hurt(damageSources().mobAttack(this), f1); if (flag) { entityIn.setDeltaMovement(entityIn.getDeltaMovement().add(0.0D, 0.4F, 0.0D)); this.doEnchantDamageEffects(this, entityIn); - ItemEntity item = EntityType.ITEM.create(level); + ItemEntity item = EntityType.ITEM.create(level()); item.moveTo(position()); item.setItem(new ItemStack(UFItems.RIPPER_TOOTH.get())); - level.addFreshEntity(item); + level().addFreshEntity(item); } return flag; } @@ -103,9 +103,9 @@ public void aiStep() { --this.attackAnimationTick; } - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } @@ -161,7 +161,7 @@ protected SoundEvent getFlopSound() { } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor iServerWorld, MobSpawnType reason, BlockPos pos, RandomSource random) { - return reason == MobSpawnType.SPAWNER || iServerWorld.getBlockState(pos).getMaterial() == Material.WATER && iServerWorld.getBlockState(pos.above()).getMaterial() == Material.WATER && isLightLevelOk(pos, iServerWorld); + return reason == MobSpawnType.SPAWNER || iServerWorld.getBlockState(pos).getFluidState().getFluidType() == Fluids.WATER.getFluidType() && iServerWorld.getBlockState(pos.above()).getFluidState().getFluidType() == Fluids.WATER.getFluidType() && isLightLevelOk(pos, iServerWorld); } private static boolean isLightLevelOk(BlockPos pos, ServerLevelAccessor iServerWorld) { diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/Rootball.java b/src/main/java/codyhuh/unusualfishmod/common/entity/Rootball.java index baae74b..42b9ac3 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/Rootball.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/Rootball.java @@ -176,11 +176,11 @@ public float getSwelling(float p_32321_) { } private void explodeCreeper() { - if (!this.level.isClientSide) { - Explosion.BlockInteraction blockInteraction = Explosion.BlockInteraction.NONE; + if (!this.level().isClientSide) { + Level.ExplosionInteraction interaction = Level.ExplosionInteraction.BLOCK; float f = this.isPowered() ? 2.0F : 1.0F; this.dead = true; - this.level.explode(this, this.getX(), this.getY(), this.getZ(), (float)this.explosionRadius * f, blockInteraction); + this.level().explode(this, this.getX(), this.getY(), this.getZ(), (float)this.explosionRadius * f, interaction); this.discard(); this.spawnLingeringCloud(); } @@ -190,7 +190,7 @@ private void explodeCreeper() { private void spawnLingeringCloud() { Collection collection = this.getActiveEffects(); if (!collection.isEmpty()) { - AreaEffectCloud areaeffectcloud = new AreaEffectCloud(this.level, this.getX(), this.getY(), this.getZ()); + AreaEffectCloud areaeffectcloud = new AreaEffectCloud(this.level(), this.getX(), this.getY(), this.getZ()); areaeffectcloud.setRadius(2.5F); areaeffectcloud.setRadiusOnUse(-0.5F); areaeffectcloud.setWaitTime(10); @@ -201,7 +201,7 @@ private void spawnLingeringCloud() { areaeffectcloud.addEffect(new MobEffectInstance(mobeffectinstance)); } - this.level.addFreshEntity(areaeffectcloud); + this.level().addFreshEntity(areaeffectcloud); } } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/RoughbackGuitarfish.java b/src/main/java/codyhuh/unusualfishmod/common/entity/RoughbackGuitarfish.java index 20b1360..95667ac 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/RoughbackGuitarfish.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/RoughbackGuitarfish.java @@ -70,9 +70,9 @@ public void tick() { public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } @@ -103,8 +103,8 @@ protected SoundEvent getFlopSound() { @Override public void playerTouch(Player entity) { super.playerTouch(entity); - if (!entity.isCreative() && this.attackCooldown == 0 && entity.level.getDifficulty() != Difficulty.PEACEFUL) { - entity.hurt(DamageSource.mobAttack(this), 2.0F); + if (!entity.isCreative() && this.attackCooldown == 0 && entity.level().getDifficulty() != Difficulty.PEACEFUL) { + entity.hurt(damageSources().mobAttack(this), 2.0F); this.attackCooldown = 80; } } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/SailorBarb.java b/src/main/java/codyhuh/unusualfishmod/common/entity/SailorBarb.java index c7ca01e..68430df 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/SailorBarb.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/SailorBarb.java @@ -62,9 +62,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/SeaMosquito.java b/src/main/java/codyhuh/unusualfishmod/common/entity/SeaMosquito.java index f8dce51..351f2e6 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/SeaMosquito.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/SeaMosquito.java @@ -71,7 +71,7 @@ public boolean canUse() { public void tick() { super.tick(); - if (this.level.isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { + if (this.level().isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { Vec3 vec3 = this.getViewVector(0.0F); float f = Mth.cos(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; float f1 = Mth.sin(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; @@ -82,9 +82,9 @@ public void tick() { public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/SeaPancake.java b/src/main/java/codyhuh/unusualfishmod/common/entity/SeaPancake.java index 007a549..ce05961 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/SeaPancake.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/SeaPancake.java @@ -37,6 +37,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.level.storage.loot.LootTable; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; @@ -84,17 +85,17 @@ public boolean canUse() { protected InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack stack = player.getItemInHand(hand); - if (stack.is(UFItems.RAW_LOBSTER.get()) && level instanceof ServerLevel serverLevel) { - LootTable loottable = serverLevel.getServer().getLootTables().get(FEED_REWARD); - List list = loottable.getRandomItems((new LootContext.Builder((ServerLevel) level)).withParameter(LootContextParams.ORIGIN, position()).withParameter(LootContextParams.THIS_ENTITY, this).withRandom(random).create(LootContextParamSets.PIGLIN_BARTER)); + if (stack.is(UFItems.RAW_LOBSTER.get()) && level() instanceof ServerLevel serverlevel) { + LootTable loottable = serverlevel.getServer().getLootData().getLootTable(FEED_REWARD); + List list = loottable.getRandomItems(new LootParams.Builder(serverlevel).withParameter(LootContextParams.ORIGIN, position()).withParameter(LootContextParams.THIS_ENTITY, this).withLuck(random.nextFloat()).create(LootContextParamSets.PIGLIN_BARTER)); if (!list.isEmpty() && random.nextBoolean()) { - ItemEntity item = EntityType.ITEM.create(level); + ItemEntity item = EntityType.ITEM.create(level()); item.setItem(list.get(0)); item.moveTo(position()); - level.addFreshEntity(item); + level().addFreshEntity(item); playSound(SoundEvents.ITEM_PICKUP, 1.0F, 1.0F); } @@ -103,7 +104,7 @@ protected InteractionResult mobInteract(Player player, InteractionHand hand) { stack.shrink(1); } - serverLevel.sendParticles(new ItemParticleOption(ParticleTypes.ITEM, stack), getRandomX(1.0D), position().y - 0.25D, getRandomZ(1.0D), 1, 0.0D, 0.0D, 0.0D, 0.0D); + serverlevel.sendParticles(new ItemParticleOption(ParticleTypes.ITEM, stack), getRandomX(1.0D), position().y - 0.25D, getRandomZ(1.0D), 1, 0.0D, 0.0D, 0.0D, 0.0D); playSound(SoundEvents.DOLPHIN_EAT, 1.0F, 1.0F); } @@ -123,9 +124,9 @@ public boolean requiresCustomPersistence() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add(((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), 0.4F, ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/SeaSpider.java b/src/main/java/codyhuh/unusualfishmod/common/entity/SeaSpider.java index b7777dc..edbc327 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/SeaSpider.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/SeaSpider.java @@ -43,7 +43,7 @@ public class SeaSpider extends WaterAnimal implements Bucketable{ public SeaSpider(EntityType type, Level world) { super(type, world); this.moveControl = new SeaSpider.MoveHelperController(this); - this.maxUpStep = 1.5f; + this.setMaxUpStep(1.5F); } public static AttributeSupplier.Builder createAttributes() { @@ -58,7 +58,7 @@ protected void registerGoals() { } protected PathNavigation createNavigation(Level p_27480_) { - return new GroundPathNavigation(this, level); + return new GroundPathNavigation(this, level()); } @Override diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/Shockcat.java b/src/main/java/codyhuh/unusualfishmod/common/entity/Shockcat.java index 205ef89..8dd325a 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/Shockcat.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/Shockcat.java @@ -76,7 +76,7 @@ public boolean canUse() { public void tick() { super.tick(); - if (this.level.isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { + if (this.level().isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { Vec3 vec3 = this.getViewVector(0.0F); float f = Mth.cos(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; float f1 = Mth.sin(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; @@ -86,9 +86,9 @@ public void tick() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } @@ -119,7 +119,7 @@ public SoundEvent getFlopSound() { @Override public void playerTouch(Player entity) { super.playerTouch(entity); - if (!entity.isCreative() && this.attackCooldown == 0 && entity.level.getDifficulty() != Difficulty.PEACEFUL) { + if (!entity.isCreative() && this.attackCooldown == 0 && entity.level().getDifficulty() != Difficulty.PEACEFUL) { entity.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 300, 3, false, false)); entity.addEffect(new MobEffectInstance(MobEffects.DIG_SLOWDOWN, 200, 2, false, false)); this.attackCooldown = 80; diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/SneepSnorp.java b/src/main/java/codyhuh/unusualfishmod/common/entity/SneepSnorp.java index 83fd064..d6b7ada 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/SneepSnorp.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/SneepSnorp.java @@ -63,9 +63,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add(((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), 0.4D, ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/SnowflakeTailFish.java b/src/main/java/codyhuh/unusualfishmod/common/entity/SnowflakeTailFish.java index 033de6e..e8668be 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/SnowflakeTailFish.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/SnowflakeTailFish.java @@ -63,9 +63,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add(((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), 0.4D, ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/Spindlefish.java b/src/main/java/codyhuh/unusualfishmod/common/entity/Spindlefish.java index a01ce9a..43d4871 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/Spindlefish.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/Spindlefish.java @@ -81,7 +81,7 @@ public void tick() { this.attackCooldown--; } - if (this.level.isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { + if (this.level().isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { Vec3 vec3 = this.getViewVector(0.0F); float f = Mth.cos(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; float f1 = Mth.sin(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; @@ -92,9 +92,9 @@ public void tick() { public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } @@ -191,8 +191,8 @@ public ItemStack getBucketItemStack() { @Override public void playerTouch(Player entity) { super.playerTouch(entity); - if (!entity.isCreative() && this.attackCooldown == 0 && entity.level.getDifficulty() != Difficulty.PEACEFUL) { - entity.hurt(DamageSource.mobAttack(this), 2.0F); + if (!entity.isCreative() && this.attackCooldown == 0 && entity.level().getDifficulty() != Difficulty.PEACEFUL) { + entity.hurt(damageSources().mobAttack(this), 2.0F); entity.addEffect(new MobEffectInstance(MobEffects.POISON, 200, 0, false, false)); this.attackCooldown = 80; } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/SpoonShark.java b/src/main/java/codyhuh/unusualfishmod/common/entity/SpoonShark.java index 1ca0944..d2f4bc9 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/SpoonShark.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/SpoonShark.java @@ -65,9 +65,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/Squoddle.java b/src/main/java/codyhuh/unusualfishmod/common/entity/Squoddle.java index 2a1ad36..8cd5849 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/Squoddle.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/Squoddle.java @@ -46,7 +46,7 @@ public class Squoddle extends WaterAnimal implements Bucketable{ public Squoddle(EntityType type, Level world) { super(type, world); this.moveControl = new Squoddle.MoveHelperController(this); - this.maxUpStep = 1.5f; + this.setMaxUpStep(1.5F); } public static AttributeSupplier.Builder createAttributes() { @@ -73,8 +73,8 @@ public void tick() { @Override public void playerTouch(Player entity) { super.playerTouch(entity); - if (!entity.isCreative() && this.attackCooldown == 0 && entity.level.getDifficulty() != Difficulty.PEACEFUL) { - entity.hurt(DamageSource.mobAttack(this), 2.0F); + if (!entity.isCreative() && this.attackCooldown == 0 && entity.level().getDifficulty() != Difficulty.PEACEFUL) { + entity.hurt(damageSources().mobAttack(this), 2.0F); entity.addEffect(new MobEffectInstance(MobEffects.POISON, 100, 2, false, false)); this.playSound(SoundEvents.PUFFER_FISH_STING, 1.0F, 1.0F); this.attackCooldown = 80; @@ -82,7 +82,7 @@ public void playerTouch(Player entity) { } protected PathNavigation createNavigation(Level p_27480_) { - return new GroundPathNavigation(this, level); + return new GroundPathNavigation(this, level()); } @Override diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/StoutBichir.java b/src/main/java/codyhuh/unusualfishmod/common/entity/StoutBichir.java index b5b4753..dcc7330 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/StoutBichir.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/StoutBichir.java @@ -66,9 +66,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/TigerJungleShark.java b/src/main/java/codyhuh/unusualfishmod/common/entity/TigerJungleShark.java index 1197481..fd40380 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/TigerJungleShark.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/TigerJungleShark.java @@ -68,10 +68,10 @@ public boolean canUse() { @Override public boolean doHurtTarget(Entity entityIn) { this.attackAnimationTick = 10; - this.level.broadcastEntityEvent(this, (byte)4); + this.level().broadcastEntityEvent(this, (byte)4); float f = this.getAttackDamage(); float f1 = (int)f > 0 ? f / 2.0F + (float)this.random.nextInt((int)f) : f; - boolean flag = entityIn.hurt(DamageSource.mobAttack(this), f1); + boolean flag = entityIn.hurt(damageSources().mobAttack(this), f1); if (flag) { entityIn.setDeltaMovement(entityIn.getDeltaMovement().add(0.0D, 0.4D, 0.0D)); this.doEnchantDamageEffects(this, entityIn); @@ -96,9 +96,9 @@ public void tick() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add(((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), 0.4D, ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/TigerPuffer.java b/src/main/java/codyhuh/unusualfishmod/common/entity/TigerPuffer.java index 03177de..53ba3ca 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/TigerPuffer.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/TigerPuffer.java @@ -80,9 +80,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add(((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), 0.4d, ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/Tribble.java b/src/main/java/codyhuh/unusualfishmod/common/entity/Tribble.java index 146e5a9..2a52935 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/Tribble.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/Tribble.java @@ -27,14 +27,15 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.material.Fluids; + public class Tribble extends BucketableWaterAnimal { public Tribble(EntityType entityType, Level level) { super(entityType, level); this.moveControl = new Tribble.MoveHelperController(this); - this.maxUpStep = 1.0f; + this.setMaxUpStep(1.0F); } @Override @@ -53,7 +54,7 @@ protected void registerGoals() { } protected PathNavigation createNavigation(Level p_27480_) { - return new GroundPathNavigation(this, level); + return new GroundPathNavigation(this, level()); } @Override @@ -82,7 +83,7 @@ protected float getSoundVolume() { } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor iServerWorld, MobSpawnType reason, BlockPos pos, RandomSource random) { - return reason == MobSpawnType.SPAWNER || iServerWorld.getBlockState(pos).getMaterial() == Material.WATER && iServerWorld.getBlockState(pos.above()).getMaterial() == Material.WATER && isLightLevelOk(pos, iServerWorld); + return reason == MobSpawnType.SPAWNER || iServerWorld.getBlockState(pos).getFluidState().getFluidType() == Fluids.WATER.getFluidType() && iServerWorld.getBlockState(pos.above()).getFluidState().getFluidType() == Fluids.WATER.getFluidType() && isLightLevelOk(pos, iServerWorld); } private static boolean isLightLevelOk(BlockPos pos, ServerLevelAccessor iServerWorld) { diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/TripleTwirlPleco.java b/src/main/java/codyhuh/unusualfishmod/common/entity/TripleTwirlPleco.java index 43f328b..ee39008 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/TripleTwirlPleco.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/TripleTwirlPleco.java @@ -72,7 +72,7 @@ public boolean canUse() { public void tick() { super.tick(); - if (this.level.isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { + if (this.level().isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { Vec3 vec3 = this.getViewVector(0.0F); float f = Mth.cos(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; float f1 = Mth.sin(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; @@ -83,9 +83,9 @@ public void tick() { public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/TrumpetSquid.java b/src/main/java/codyhuh/unusualfishmod/common/entity/TrumpetSquid.java index 3357ae7..a252e96 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/TrumpetSquid.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/TrumpetSquid.java @@ -84,9 +84,9 @@ public boolean canUse() { this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, AbstractFish.class, false));} public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add(((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), 0.4F, ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } @@ -111,7 +111,7 @@ public BreedableWaterAnimal getBreedOffspring(ServerLevel p_146743_, BreedableWa public boolean hurt(DamageSource p_29963_, float p_29964_) { if (super.hurt(p_29963_, p_29964_) && this.getLastHurtByMob() != null) { - if (!this.level.isClientSide) { + if (!this.level().isClientSide) { this.spawnInk(); } @@ -133,7 +133,7 @@ private void spawnInk() { for(int i = 0; i < 30; ++i) { Vec3 vec31 = this.rotateVector(new Vec3((double)this.random.nextFloat() * 0.6D - 0.3D, -1.0D, (double)this.random.nextFloat() * 0.6D - 0.3D)); Vec3 vec32 = vec31.scale(0.3D + (double)(this.random.nextFloat() * 2.0F)); - ((ServerLevel)this.level).sendParticles(ParticleTypes.SQUID_INK, vec3.x, vec3.y + 0.5D, vec3.z, 0, vec32.x, vec32.y, vec32.z, (double)0.1F); + ((ServerLevel)this.level()).sendParticles(ParticleTypes.SQUID_INK, vec3.x, vec3.y + 0.5D, vec3.z, 0, vec32.x, vec32.y, vec32.z, (double)0.1F); } } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/VoltAngler.java b/src/main/java/codyhuh/unusualfishmod/common/entity/VoltAngler.java index fbdf1a4..a25d60c 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/VoltAngler.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/VoltAngler.java @@ -77,9 +77,9 @@ public boolean canUse() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add(((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), 0.4F, ((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/ZebraCornetfish.java b/src/main/java/codyhuh/unusualfishmod/common/entity/ZebraCornetfish.java index 9e9a480..6f4c782 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/ZebraCornetfish.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/ZebraCornetfish.java @@ -63,7 +63,7 @@ public boolean canUse() { public void tick() { super.tick(); - if (this.level.isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { + if (this.level().isClientSide && this.isInWater() && this.getDeltaMovement().lengthSqr() > 0.03D) { Vec3 vec3 = this.getViewVector(0.0F); float f = Mth.cos(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; float f1 = Mth.sin(this.getYRot() * ((float)Math.PI / 180F)) * 0.3F; @@ -72,9 +72,9 @@ public void tick() { } public void aiStep() { - if (!this.isInWater() && this.onGround && this.verticalCollision) { + if (!this.isInWater() && this.onGround() && this.verticalCollision) { this.setDeltaMovement(this.getDeltaMovement().add((double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F), (double)0.4F, (double)((this.random.nextFloat() * 2.0F - 1.0F) * 0.05F))); - this.onGround = false; + this.setOnGround(false); this.hasImpulse = true; this.playSound(this.getFlopSound(), this.getSoundVolume(), this.getVoicePitch()); } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/item/AbyssalBlast.java b/src/main/java/codyhuh/unusualfishmod/common/entity/item/AbyssalBlast.java index 03507d4..24b23ff 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/item/AbyssalBlast.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/item/AbyssalBlast.java @@ -4,6 +4,8 @@ import codyhuh.unusualfishmod.core.registry.UFEntities; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.protocol.game.ClientboundAddEntityPacket; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; @@ -74,7 +76,7 @@ protected static float lerpRotation(float p_234614_0_, float p_234614_1_) { } @Override - public Packet getAddEntityPacket() { + public Packet getAddEntityPacket() { return NetworkHooks.getEntitySpawningPacket(this); } @@ -86,7 +88,7 @@ public void tick() { } super.tick(); Vec3 vector3d = this.getDeltaMovement(); - HitResult raytraceresult = ProjectileUtil.getHitResult(this, this::canHitEntity); + HitResult raytraceresult = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity); if (raytraceresult.getType() != HitResult.Type.MISS) { this.onImpact(raytraceresult); } @@ -109,12 +111,12 @@ protected void onEntityHit(EntityHitResult p_213868_1_) { Entity entity = p_213868_1_.getEntity(); Entity entity1 = this.getOwner(); LivingEntity livingentity = entity1 instanceof LivingEntity ? (LivingEntity)entity1 : null; - entity.hurt(DamageSource.indirectMobAttack(this, livingentity).setProjectile(), 5.0F); + entity.hurt(damageSources().mobProjectile(this, livingentity), 5.0F); } protected void onHitBlock(BlockHitResult p_230299_1_) { - if (!this.level.isClientSide) { + if (!this.level().isClientSide) { this.remove(RemovalReason.DISCARDED); } } @@ -133,10 +135,10 @@ public void setShooter(@Nullable Entity entityIn) { @Nullable public Entity getOwner() { - if (this.ownerUUID != null && this.level instanceof ServerLevel) { - return ((ServerLevel) this.level).getEntity(this.ownerUUID); + if (this.ownerUUID != null && this.level() instanceof ServerLevel) { + return ((ServerLevel) this.level()).getEntity(this.ownerUUID); } else { - return this.ownerNetworkId != 0 ? this.level.getEntity(this.ownerNetworkId) : null; + return this.ownerNetworkId != 0 ? this.level().getEntity(this.ownerNetworkId) : null; } } @@ -160,7 +162,7 @@ protected void readAdditionalSaveData(CompoundTag compound) { private boolean checkLeftOwner() { Entity entity = this.getOwner(); if (entity != null) { - for (Entity entity1 : this.level.getEntities(this, this.getBoundingBox().expandTowards(this.getDeltaMovement()).inflate(1.0D), (p_234613_0_) -> { + for (Entity entity1 : this.level().getEntities(this, this.getBoundingBox().expandTowards(this.getDeltaMovement()).inflate(1.0D), (p_234613_0_) -> { return !p_234613_0_.isSpectator() && p_234613_0_.isPickable(); })) { if (entity1.getRootVehicle() == entity.getRootVehicle()) { diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/item/ThrownPrismarineSpear.java b/src/main/java/codyhuh/unusualfishmod/common/entity/item/ThrownPrismarineSpear.java index 10f9500..4b0639b 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/item/ThrownPrismarineSpear.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/item/ThrownPrismarineSpear.java @@ -62,7 +62,7 @@ protected void onHitEntity(EntityHitResult result) { } Entity entity1 = this.getOwner(); - DamageSource damagesource = DamageSource.trident(this, entity1 == null ? this : entity1); + DamageSource damagesource = damageSources().trident(this, entity1 == null ? this : entity1); this.dealtDamage = true; if (entity.hurt(damagesource, f)) { diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/util/BottomStrollGoal.java b/src/main/java/codyhuh/unusualfishmod/common/entity/util/BottomStrollGoal.java index f04ee71..489cbe5 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/util/BottomStrollGoal.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/util/BottomStrollGoal.java @@ -1,6 +1,7 @@ package codyhuh.unusualfishmod.common.entity.util; import net.minecraft.core.BlockPos; +import net.minecraft.core.Vec3i; import net.minecraft.tags.FluidTags; import net.minecraft.world.entity.PathfinderMob; import net.minecraft.world.entity.ai.goal.RandomStrollGoal; @@ -20,17 +21,17 @@ public BottomStrollGoal(PathfinderMob p_i48937_1_, double p_i48937_2_, int p_i48 protected Vec3 getPosition() { Vec3 vec = DefaultRandomPos.getPos(this.mob, 10, 7); - for(int var2 = 0; vec != null && !this.mob.level.getBlockState(new BlockPos(vec)).isPathfindable(this.mob.level, new BlockPos(vec), PathComputationType.WATER) && var2++ < 10; vec = DefaultRandomPos.getPos(this.mob, 10, 7)) { + for(int var2 = 0; vec != null && !this.mob.level().getBlockState(new BlockPos(new Vec3i((int)vec.x, (int)vec.y, (int)vec.z))).isPathfindable(this.mob.level(), new BlockPos(new Vec3i((int)vec.x, (int)vec.y, (int)vec.z)), PathComputationType.WATER) && var2++ < 10; vec = DefaultRandomPos.getPos(this.mob, 10, 7)) { } int yDrop = 1 + this.mob.getRandom().nextInt(3); if(vec != null){ - BlockPos pos = new BlockPos(vec); - while(this.mob.level.getFluidState(pos).is(FluidTags.WATER) && this.mob.level.getBlockState(pos).isPathfindable(this.mob.level, new BlockPos(vec), PathComputationType.WATER) && pos.getY() > 1){ + BlockPos pos = new BlockPos(new Vec3i((int)vec.x, (int)vec.y, (int)vec.z)); + while(this.mob.level().getFluidState(pos).is(FluidTags.WATER) && this.mob.level().getBlockState(pos).isPathfindable(this.mob.level(), pos, PathComputationType.WATER) && pos.getY() > 1){ pos = pos.below(); } pos = pos.above(); int yUp = 0; - while(this.mob.level.getFluidState(pos).is(FluidTags.WATER) && this.mob.level.getBlockState(pos).isPathfindable(this.mob.level, new BlockPos(vec), PathComputationType.WATER) && yUp < yDrop){ + while(this.mob.level().getFluidState(pos).is(FluidTags.WATER) && this.mob.level().getBlockState(pos).isPathfindable(this.mob.level(), pos, PathComputationType.WATER) && yUp < yDrop){ pos = pos.above(); yUp++; } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/util/BreedableWaterAnimal.java b/src/main/java/codyhuh/unusualfishmod/common/entity/util/BreedableWaterAnimal.java index 41dcc11..87ea14f 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/util/BreedableWaterAnimal.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/util/BreedableWaterAnimal.java @@ -58,7 +58,7 @@ protected void defineSynchedData() { } public int getAge() { - if (this.level.isClientSide) { + if (this.level().isClientSide) { return this.entityData.get(DATA_BABY_ID) ? -1 : 1; } else { return this.age; @@ -148,10 +148,10 @@ public void onSyncedDataUpdated(EntityDataAccessor p_146754_) { public void aiStep() { super.aiStep(); - if (this.level.isClientSide) { + if (this.level().isClientSide) { if (this.forcedAgeTimer > 0) { if (this.forcedAgeTimer % 4 == 0) { - this.level.addParticle(ParticleTypes.HAPPY_VILLAGER, this.getRandomX(1.0D), this.getRandomY() + 0.5D, this.getRandomZ(1.0D), 0.0D, 0.0D, 0.0D); + this.level().addParticle(ParticleTypes.HAPPY_VILLAGER, this.getRandomX(1.0D), this.getRandomY() + 0.5D, this.getRandomZ(1.0D), 0.0D, 0.0D, 0.0D); } --this.forcedAgeTimer; @@ -177,7 +177,7 @@ public void aiStep() { double d0 = this.random.nextGaussian() * 0.02D; double d1 = this.random.nextGaussian() * 0.02D; double d2 = this.random.nextGaussian() * 0.02D; - this.level.addParticle(ParticleTypes.HEART, this.getRandomX(1.0D), this.getRandomY() + 0.5D, this.getRandomZ(1.0D), d0, d1, d2); + this.level().addParticle(ParticleTypes.HEART, this.getRandomX(1.0D), this.getRandomY() + 0.5D, this.getRandomZ(1.0D), d0, d1, d2); } } @@ -204,7 +204,7 @@ public void handleEntityEvent(byte p_27562_) { double d0 = this.random.nextGaussian() * 0.02D; double d1 = this.random.nextGaussian() * 0.02D; double d2 = this.random.nextGaussian() * 0.02D; - this.level.addParticle(ParticleTypes.HEART, this.getRandomX(1.0D), this.getRandomY() + 0.5D, this.getRandomZ(1.0D), d0, d1, d2); + this.level().addParticle(ParticleTypes.HEART, this.getRandomX(1.0D), this.getRandomY() + 0.5D, this.getRandomZ(1.0D), d0, d1, d2); } } else { super.handleEntityEvent(p_27562_); @@ -229,7 +229,7 @@ public void setInLove(@Nullable Player p_27596_) { this.loveCause = p_27596_.getUUID(); } - this.level.broadcastEntityEvent(this, (byte)18); + this.level().broadcastEntityEvent(this, (byte)18); } @Nullable @@ -237,7 +237,7 @@ public ServerPlayer getLoveCause() { if (this.loveCause == null) { return null; } else { - Player player = this.level.getPlayerByUUID(this.loveCause); + Player player = this.level().getPlayerByUUID(this.loveCause); return player instanceof ServerPlayer ? (ServerPlayer)player : null; } } @@ -251,7 +251,7 @@ public boolean removeWhenFarAway(double p_27598_) { } public int getExperienceReward() { - return 1 + this.level.random.nextInt(3); + return 1 + this.level().random.nextInt(3); } public boolean isFood(ItemStack p_27600_) { @@ -262,7 +262,7 @@ public InteractionResult mobInteract(Player p_27584_, InteractionHand p_27585_) ItemStack itemstack = p_27584_.getItemInHand(p_27585_); if (this.isFood(itemstack)) { int i = this.getAge(); - if (!this.level.isClientSide && i == 0 && this.canFallInLove()) { + if (!this.level().isClientSide && i == 0 && this.canFallInLove()) { this.usePlayerItem(p_27584_, p_27585_, itemstack); this.setInLove(p_27584_); return InteractionResult.SUCCESS; @@ -271,10 +271,10 @@ public InteractionResult mobInteract(Player p_27584_, InteractionHand p_27585_) if (this.isBaby()) { this.usePlayerItem(p_27584_, p_27585_, itemstack); this.ageUp(getSpeedUpSecondsWhenFeeding(-i), true); - return InteractionResult.sidedSuccess(this.level.isClientSide); + return InteractionResult.sidedSuccess(this.level().isClientSide); } - if (this.level.isClientSide) { + if (this.level().isClientSide) { return InteractionResult.CONSUME; } } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/util/BreedableWaterAnimalBreedGoal.java b/src/main/java/codyhuh/unusualfishmod/common/entity/util/BreedableWaterAnimalBreedGoal.java index 09398dc..bb53484 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/util/BreedableWaterAnimalBreedGoal.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/util/BreedableWaterAnimalBreedGoal.java @@ -25,7 +25,7 @@ public BreedableWaterAnimalBreedGoal(BreedableWaterAnimal p_25122_, double p_251 public BreedableWaterAnimalBreedGoal(BreedableWaterAnimal p_25125_, double p_25126_, Class p_25127_) { this.animal = p_25125_; - this.level = p_25125_.level; + this.level = p_25125_.level(); this.partnerClass = p_25127_; this.speedModifier = p_25126_; this.setFlags(EnumSet.of(Goal.Flag.MOVE, Goal.Flag.LOOK)); @@ -61,7 +61,7 @@ public void tick() { @Nullable private BreedableWaterAnimal getFreePartner() { - List list = this.level.getNearbyEntities(this.partnerClass, PARTNER_TARGETING, this.animal, this.animal.getBoundingBox().inflate(8.0D)); + List list = this.animal.level().getNearbyEntities(this.partnerClass, PARTNER_TARGETING, this.animal, this.animal.getBoundingBox().inflate(8.0D)); double d0 = Double.MAX_VALUE; BreedableWaterAnimal animal = null; diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/util/BucketableSchoolingWaterAnimal.java b/src/main/java/codyhuh/unusualfishmod/common/entity/util/BucketableSchoolingWaterAnimal.java index 1aac002..e959668 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/util/BucketableSchoolingWaterAnimal.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/util/BucketableSchoolingWaterAnimal.java @@ -68,8 +68,8 @@ public boolean canBeFollowed() { public void tick() { super.tick(); - if (this.hasFollowers() && this.level.random.nextInt(200) == 1) { - List list = this.level.getEntitiesOfClass(this.getClass(), this.getBoundingBox().inflate(8.0D, 8.0D, 8.0D)); + if (this.hasFollowers() && this.level().random.nextInt(200) == 1) { + List list = this.level().getEntitiesOfClass(this.getClass(), this.getBoundingBox().inflate(8.0D, 8.0D, 8.0D)); if (list.size() <= 1) { this.schoolSize = 1; } diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/util/FollowSchoolLeaderGoal.java b/src/main/java/codyhuh/unusualfishmod/common/entity/util/FollowSchoolLeaderGoal.java index 5d337b0..92814fd 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/util/FollowSchoolLeaderGoal.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/util/FollowSchoolLeaderGoal.java @@ -33,7 +33,7 @@ public boolean canUse() { Predicate predicate = (p_25258_) -> { return p_25258_.canBeFollowed() || !p_25258_.isFollower(); }; - List list = this.mob.level.getEntitiesOfClass(this.mob.getClass(), this.mob.getBoundingBox().inflate(8.0D, 8.0D, 8.0D), predicate); + List list = this.mob.level().getEntitiesOfClass(this.mob.getClass(), this.mob.getBoundingBox().inflate(8.0D, 8.0D, 8.0D), predicate); BucketableSchoolingWaterAnimal schoolingWaterAnimal = DataFixUtils.orElse(list.stream().filter(BucketableSchoolingWaterAnimal::canBeFollowed).findAny(), this.mob); schoolingWaterAnimal.addFollowers(list.stream().filter((p_25255_) -> { return !p_25255_.isFollower(); diff --git a/src/main/java/codyhuh/unusualfishmod/common/entity/util/SquidLayEggsGoal.java b/src/main/java/codyhuh/unusualfishmod/common/entity/util/SquidLayEggsGoal.java index c41b988..f33c144 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/entity/util/SquidLayEggsGoal.java +++ b/src/main/java/codyhuh/unusualfishmod/common/entity/util/SquidLayEggsGoal.java @@ -44,7 +44,7 @@ public void tick() { } if (isReachedTarget()) { - squid.level.setBlock(getMoveToTarget().below(), eggsBlock.defaultBlockState().setValue(SquidEggsBlock.FACING, Direction.UP), 2); + squid.level().setBlock(getMoveToTarget().below(), eggsBlock.defaultBlockState().setValue(SquidEggsBlock.FACING, Direction.UP), 2); squid.playSound(SoundEvents.FROG_LAY_SPAWN); squid.setGravid(false); stop(); diff --git a/src/main/java/codyhuh/unusualfishmod/common/item/DepthScytheItem.java b/src/main/java/codyhuh/unusualfishmod/common/item/DepthScytheItem.java index a6bfe8d..2be85fa 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/item/DepthScytheItem.java +++ b/src/main/java/codyhuh/unusualfishmod/common/item/DepthScytheItem.java @@ -3,23 +3,17 @@ import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.Multimap; import net.minecraft.core.BlockPos; -import net.minecraft.core.NonNullList; -import net.minecraft.tags.BlockTags; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Tier; +import net.minecraft.world.item.*; import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Material; public class DepthScytheItem extends Item { public final Multimap attributeModifiers; @@ -41,9 +35,9 @@ public Multimap getAttributeModifiers(EquipmentSlo public float getDestroySpeed(ItemStack stack, BlockState state) { if (state.is(Blocks.COBWEB)) { return 15.0F; - } else { - Material material = state.getMaterial(); - return material != Material.PLANT && material != Material.REPLACEABLE_PLANT && material != Material.WATER_PLANT && !state.is(BlockTags.LEAVES) && material != Material.VEGETABLE ? 1.0F : 1.5F; + } + else { + return super.getDestroySpeed(stack, state); } } @@ -64,14 +58,14 @@ public boolean mineBlock(ItemStack stack, Level worldIn, BlockState state, Block return true; } - @Override +/* @Override public void fillItemCategory(CreativeModeTab tab, NonNullList list) { if (Enchantments.SWEEPING_EDGE.allowedInCreativeTab(this, tab)) { ItemStack stack = new ItemStack(this); stack.enchant(Enchantments.SWEEPING_EDGE, 5); list.add(stack); } - } + }*/ @Override public void onCraftedBy(ItemStack stack, Level level, Player player) { diff --git a/src/main/java/codyhuh/unusualfishmod/common/item/RipsawItem.java b/src/main/java/codyhuh/unusualfishmod/common/item/RipsawItem.java index fa772c6..9b0cd7e 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/item/RipsawItem.java +++ b/src/main/java/codyhuh/unusualfishmod/common/item/RipsawItem.java @@ -30,9 +30,9 @@ public UseAnim getUseAnimation(ItemStack p_41452_) { } @Override - public void onUsingTick(ItemStack stack, LivingEntity user, int count) { + public void onUseTick(Level level, LivingEntity user, ItemStack stack, int count) { if (user instanceof Player player) { - EntityHitResult result = getLookAtEntity(player, player.level, player.getReachDistance() + 1.0D); + EntityHitResult result = getLookAtEntity(player, player.level(), player.getEntityReach() + 1.0D); CompoundTag tag = stack.getOrCreateTag(); float i = count % 10; @@ -45,7 +45,7 @@ public void onUsingTick(ItemStack stack, LivingEntity user, int count) { player.playSound(UFSounds.SAWING.get()); } - if (living.hurt(DamageSource.playerAttack(player), getAttackDamage())) { + if (living.hurt(player.damageSources().playerAttack(player), getAttackDamage())) { stack.hurtAndBreak(1, player, (p_40665_) -> { p_40665_.broadcastBreakEvent(living.getUsedItemHand()); }); diff --git a/src/main/java/codyhuh/unusualfishmod/common/item/WeatherShellItem.java b/src/main/java/codyhuh/unusualfishmod/common/item/WeatherShellItem.java index ef742c1..76c6d1c 100644 --- a/src/main/java/codyhuh/unusualfishmod/common/item/WeatherShellItem.java +++ b/src/main/java/codyhuh/unusualfishmod/common/item/WeatherShellItem.java @@ -48,7 +48,7 @@ public InteractionResultHolder use(Level level, Player player, Intera if (!player.isUsingItem() && !player.getCooldowns().isOnCooldown(stack.getItem())) { player.startUsingItem(hand); - player.playSound(SoundEvents.GOAT_HORN_SOUND_VARIANTS.get(1), 1.0F, 1.0F); + player.playSound(SoundEvents.GOAT_HORN_SOUND_VARIANTS.get(1).get(), 1.0F, 1.0F); player.getCooldowns().addCooldown(this, getUseDuration(stack)); } diff --git a/src/main/java/codyhuh/unusualfishmod/core/registry/UFBlocks.java b/src/main/java/codyhuh/unusualfishmod/core/registry/UFBlocks.java index 7cfff3b..649d210 100644 --- a/src/main/java/codyhuh/unusualfishmod/core/registry/UFBlocks.java +++ b/src/main/java/codyhuh/unusualfishmod/core/registry/UFBlocks.java @@ -17,41 +17,41 @@ public final class UFBlocks { public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, UnusualFishMod.MOD_ID); - public static final RegistryObject VOLT_DETECTOR = registerBlock("volt_detector", () -> new VoltDetectorBlock(BlockBehaviour.Properties.copy(Blocks.COPPER_BLOCK).sound(SoundType.METAL).randomTicks().lightLevel(state -> 10)), UnusualFishMod.TAB); - public static final RegistryObject NAUTICAL_LAMP = registerBlock("nautical_lamp", () -> new NauticalLampBlock(BlockBehaviour.Properties.copy(Blocks.LANTERN)), UnusualFishMod.TAB); - public static final RegistryObject SEA_BOOM = registerBlock("sea_boom", () -> new SeaBoomBlock(BlockBehaviour.Properties.copy(Blocks.PRISMARINE).sound(SoundType.METAL).randomTicks()), UnusualFishMod.TAB); - public static final RegistryObject CRIMSON_EGGS = registerBlock("crimson_eggs", () -> new SquidEggsBlock(UFEntities.CRIMSONSHELL_SQUID::get, BlockBehaviour.Properties.copy(Blocks.FROGSPAWN)), UnusualFishMod.TAB); - public static final RegistryObject RELUCENT_EGGS = registerBlock("relucent_eggs", () -> new SquidEggsBlock(UFEntities.TRUMPET_SQUID::get, BlockBehaviour.Properties.copy(Blocks.FROGSPAWN)), UnusualFishMod.TAB); - public static final RegistryObject COPPER_ANTENNA = registerBlock("copper_antenna", () -> new CopperAntennaBlock(BlockBehaviour.Properties.copy(Blocks.LIGHTNING_ROD)), UnusualFishMod.TAB); - - public static final RegistryObject CHISELED_CRIMSON_BRICKS = registerBlock("chiseled_crimson_bricks", () -> new Block(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - public static final RegistryObject CRIMSON_BRICKS = registerBlock("crimson_bricks", () -> new Block(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - public static final RegistryObject CRIMSON_BRICK_STAIRS = registerBlock("crimson_brick_stairs", () -> new StairBlock(() -> CRIMSON_BRICKS.get().defaultBlockState(), BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - public static final RegistryObject CRIMSON_BRICK_SLAB = registerBlock("crimson_brick_slab", () -> new SlabBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - public static final RegistryObject CRIMSON_BRICK_WALL = registerBlock("crimson_brick_wall", () -> new WallBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - public static final RegistryObject CRIMSON_TILES = registerBlock("crimson_tiles", () -> new Block(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - public static final RegistryObject CRIMSON_TILE_STAIRS = registerBlock("crimson_tile_stairs", () -> new StairBlock(() -> CRIMSON_TILES.get().defaultBlockState(), BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - public static final RegistryObject CRIMSON_TILE_SLAB = registerBlock("crimson_tile_slab", () -> new SlabBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - public static final RegistryObject CRIMSON_TILE_WALL = registerBlock("crimson_tile_wall", () -> new WallBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - - public static final RegistryObject CHISELED_RELUCENT_BRICKS = registerBlock("chiseled_relucent_bricks", () -> new Block(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - public static final RegistryObject RELUCENT_BRICKS = registerBlock("relucent_bricks", () -> new Block(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - public static final RegistryObject RELUCENT_BRICK_STAIRS = registerBlock("relucent_brick_stairs", () -> new StairBlock(() -> RELUCENT_BRICKS.get().defaultBlockState(), BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - public static final RegistryObject RELUCENT_BRICK_SLAB = registerBlock("relucent_brick_slab", () -> new SlabBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - public static final RegistryObject RELUCENT_BRICK_WALL = registerBlock("relucent_brick_wall", () -> new WallBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - public static final RegistryObject RELUCENT_TILES = registerBlock("relucent_tiles", () -> new Block(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - public static final RegistryObject RELUCENT_TILE_STAIRS = registerBlock("relucent_tile_stairs", () -> new StairBlock(() -> RELUCENT_TILES.get().defaultBlockState(), BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - public static final RegistryObject RELUCENT_TILE_SLAB = registerBlock("relucent_tile_slab", () -> new SlabBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - public static final RegistryObject RELUCENT_TILE_WALL = registerBlock("relucent_tile_wall", () -> new WallBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS)), UnusualFishMod.TAB); - - private static RegistryObject registerBlock(String name, Supplier block, CreativeModeTab tab) { + public static final RegistryObject VOLT_DETECTOR = registerBlock("volt_detector", () -> new VoltDetectorBlock(BlockBehaviour.Properties.copy(Blocks.COPPER_BLOCK).sound(SoundType.METAL).randomTicks().lightLevel(state -> 10))); + public static final RegistryObject NAUTICAL_LAMP = registerBlock("nautical_lamp", () -> new NauticalLampBlock(BlockBehaviour.Properties.copy(Blocks.LANTERN))); + public static final RegistryObject SEA_BOOM = registerBlock("sea_boom", () -> new SeaBoomBlock(BlockBehaviour.Properties.copy(Blocks.PRISMARINE).sound(SoundType.METAL).randomTicks())); + public static final RegistryObject CRIMSON_EGGS = registerBlock("crimson_eggs", () -> new SquidEggsBlock(UFEntities.CRIMSONSHELL_SQUID::get, BlockBehaviour.Properties.copy(Blocks.FROGSPAWN))); + public static final RegistryObject RELUCENT_EGGS = registerBlock("relucent_eggs", () -> new SquidEggsBlock(UFEntities.TRUMPET_SQUID::get, BlockBehaviour.Properties.copy(Blocks.FROGSPAWN))); + public static final RegistryObject COPPER_ANTENNA = registerBlock("copper_antenna", () -> new CopperAntennaBlock(BlockBehaviour.Properties.copy(Blocks.LIGHTNING_ROD))); + + public static final RegistryObject CHISELED_CRIMSON_BRICKS = registerBlock("chiseled_crimson_bricks", () -> new Block(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + public static final RegistryObject CRIMSON_BRICKS = registerBlock("crimson_bricks", () -> new Block(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + public static final RegistryObject CRIMSON_BRICK_STAIRS = registerBlock("crimson_brick_stairs", () -> new StairBlock(() -> CRIMSON_BRICKS.get().defaultBlockState(), BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + public static final RegistryObject CRIMSON_BRICK_SLAB = registerBlock("crimson_brick_slab", () -> new SlabBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + public static final RegistryObject CRIMSON_BRICK_WALL = registerBlock("crimson_brick_wall", () -> new WallBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + public static final RegistryObject CRIMSON_TILES = registerBlock("crimson_tiles", () -> new Block(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + public static final RegistryObject CRIMSON_TILE_STAIRS = registerBlock("crimson_tile_stairs", () -> new StairBlock(() -> CRIMSON_TILES.get().defaultBlockState(), BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + public static final RegistryObject CRIMSON_TILE_SLAB = registerBlock("crimson_tile_slab", () -> new SlabBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + public static final RegistryObject CRIMSON_TILE_WALL = registerBlock("crimson_tile_wall", () -> new WallBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + + public static final RegistryObject CHISELED_RELUCENT_BRICKS = registerBlock("chiseled_relucent_bricks", () -> new Block(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + public static final RegistryObject RELUCENT_BRICKS = registerBlock("relucent_bricks", () -> new Block(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + public static final RegistryObject RELUCENT_BRICK_STAIRS = registerBlock("relucent_brick_stairs", () -> new StairBlock(() -> RELUCENT_BRICKS.get().defaultBlockState(), BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + public static final RegistryObject RELUCENT_BRICK_SLAB = registerBlock("relucent_brick_slab", () -> new SlabBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + public static final RegistryObject RELUCENT_BRICK_WALL = registerBlock("relucent_brick_wall", () -> new WallBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + public static final RegistryObject RELUCENT_TILES = registerBlock("relucent_tiles", () -> new Block(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + public static final RegistryObject RELUCENT_TILE_STAIRS = registerBlock("relucent_tile_stairs", () -> new StairBlock(() -> RELUCENT_TILES.get().defaultBlockState(), BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + public static final RegistryObject RELUCENT_TILE_SLAB = registerBlock("relucent_tile_slab", () -> new SlabBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + public static final RegistryObject RELUCENT_TILE_WALL = registerBlock("relucent_tile_wall", () -> new WallBlock(BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); + + private static RegistryObject registerBlock(String name, Supplier block) { RegistryObject toReturn = BLOCKS.register(name, block); - registerBlockItem(name, toReturn, tab); + registerBlockItem(name, toReturn); return toReturn; } - private static RegistryObject registerBlockItem(String name, RegistryObject block, CreativeModeTab tab) { - return UFItems.ITEMS.register(name, () -> new BlockItem(block.get(), new Item.Properties().tab(tab))); + private static RegistryObject registerBlockItem(String name, RegistryObject block) { + return UFItems.ITEMS.register(name, () -> new BlockItem(block.get(), new Item.Properties())); } public static void register(IEventBus eventBus) { diff --git a/src/main/java/codyhuh/unusualfishmod/core/registry/UFItems.java b/src/main/java/codyhuh/unusualfishmod/core/registry/UFItems.java index a76e522..c3e3749 100644 --- a/src/main/java/codyhuh/unusualfishmod/core/registry/UFItems.java +++ b/src/main/java/codyhuh/unusualfishmod/core/registry/UFItems.java @@ -16,165 +16,164 @@ public final class UFItems { public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, UnusualFishMod.MOD_ID); // Foods - public static final RegistryObject RAW_EYELASH = ITEMS.register("raw_eyelash", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_EYELASH).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_SPINDLEFISH = ITEMS.register("raw_spindlefish", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_SPINDLEFISH).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_SNOWFLAKE = ITEMS.register("raw_snowflake", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_SNOWFLAKE).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_AERO_MONO = ITEMS.register("raw_aero_mono", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_AERO_MONO).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_AERO_MONO_STICK = ITEMS.register("raw_aero_mono_stick", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_AERO_MONO_STICK).tab(UnusualFishMod.TAB))); - public static final RegistryObject COOKED_AERO_MONO_STICK = ITEMS.register("cooked_aero_mono_stick", () -> new Item(new Item.Properties().food(UFFoodProperties.COOKED_AERO_MONO_STICK).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_BUMPFACE = ITEMS.register("raw_bumpface", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_BUMPFACE).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_RHINO_TETRA = ITEMS.register("raw_rhino_tetra", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_RHINO_TETRA).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_SAILOR_BARB = ITEMS.register("raw_sailor_barb", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_SAILOR_BARB).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_BARK_ANGELFISH = ITEMS.register("raw_bark_angelfish", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_BARK_ANGELFISH).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_BLIZZARD_TUNA = ITEMS.register("raw_blizzard_tuna", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_BLIZZARD_TUNA).tab(UnusualFishMod.TAB))); - public static final RegistryObject COOKED_BLIZZARD_TUNA = ITEMS.register("cooked_blizzard_tuna", () -> new Item(new Item.Properties().food(UFFoodProperties.COOKED_BLIZZARD_TUNA).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_SHOCKCAT = ITEMS.register("raw_shockcat", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_SHOCKCAT).tab(UnusualFishMod.TAB))); - public static final RegistryObject COOKED_SHOCKCAT = ITEMS.register("cooked_shockcat", () -> new Item(new Item.Properties().food(UFFoodProperties.COOKED_SHOCKCAT).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_LOBSTER = ITEMS.register("raw_lobster", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_LOBSTER).tab(UnusualFishMod.TAB))); - public static final RegistryObject COOKED_LOBSTER = ITEMS.register("cooked_lobster", () -> new Item(new Item.Properties().food(UFFoodProperties.COOKED_LOBSTER).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_MOSSTHORN = ITEMS.register("raw_mossthorn", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_MOSSTHORN).tab(UnusualFishMod.TAB))); - public static final RegistryObject COOKED_MOSSTHORN = ITEMS.register("cooked_mossthorn", () -> new Item(new Item.Properties().food(UFFoodProperties.COOKED_MOSSTHORN).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_PICKLEFSIH = ITEMS.register("raw_picklefish", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_PICKLEFISH).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_AMBER_GOBY = ITEMS.register("raw_amber_goby", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_AMBER_GOBY).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_BEAKED_HERRING = ITEMS.register("raw_beaked_herring", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_BEAKED_HERRING).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_BLIND_SAILFIN = ITEMS.register("raw_blind_sailfin", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_BLIND_SAILFIN).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_CIRCUS_FISH = ITEMS.register("raw_circus_fish", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_CIRCUS_FISH).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_COPPERFLAME_ANTHIAS = ITEMS.register("raw_copperflame_anthias", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_COPPERFLAME_ANTHIAS).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_DEMON_HERRING = ITEMS.register("raw_demon_herring", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_DEMON_HERRING).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_DROOPING_GOURAMI = ITEMS.register("raw_drooping_gourami", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_DROOPING_GOURAMI).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_DUALITY_DAMSELFISH = ITEMS.register("raw_duality_damselfish", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_DUALITY_DAMSELFISH).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_FORKFISH = ITEMS.register("raw_forkfish", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_FORKFISH).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_HATCHETFISH = ITEMS.register("raw_hatchetfish", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_HATCHETFISH).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_SNEEP_SNORP = ITEMS.register("raw_sneep_snorp", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_SNEEP_SNORP).tab(UnusualFishMod.TAB))); - public static final RegistryObject RAW_TRIPLE_TWIRL_PLECO = ITEMS.register("raw_triple_twirl_pleco", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_TRIPLE_TWIRL_PLECO).tab(UnusualFishMod.TAB))); + public static final RegistryObject RAW_EYELASH = ITEMS.register("raw_eyelash", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_EYELASH))); + public static final RegistryObject RAW_SPINDLEFISH = ITEMS.register("raw_spindlefish", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_SPINDLEFISH))); + public static final RegistryObject RAW_SNOWFLAKE = ITEMS.register("raw_snowflake", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_SNOWFLAKE))); + public static final RegistryObject RAW_AERO_MONO = ITEMS.register("raw_aero_mono", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_AERO_MONO))); + public static final RegistryObject RAW_AERO_MONO_STICK = ITEMS.register("raw_aero_mono_stick", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_AERO_MONO_STICK))); + public static final RegistryObject COOKED_AERO_MONO_STICK = ITEMS.register("cooked_aero_mono_stick", () -> new Item(new Item.Properties().food(UFFoodProperties.COOKED_AERO_MONO_STICK))); + public static final RegistryObject RAW_BUMPFACE = ITEMS.register("raw_bumpface", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_BUMPFACE))); + public static final RegistryObject RAW_RHINO_TETRA = ITEMS.register("raw_rhino_tetra", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_RHINO_TETRA))); + public static final RegistryObject RAW_SAILOR_BARB = ITEMS.register("raw_sailor_barb", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_SAILOR_BARB))); + public static final RegistryObject RAW_BARK_ANGELFISH = ITEMS.register("raw_bark_angelfish", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_BARK_ANGELFISH))); + public static final RegistryObject RAW_BLIZZARD_TUNA = ITEMS.register("raw_blizzard_tuna", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_BLIZZARD_TUNA))); + public static final RegistryObject COOKED_BLIZZARD_TUNA = ITEMS.register("cooked_blizzard_tuna", () -> new Item(new Item.Properties().food(UFFoodProperties.COOKED_BLIZZARD_TUNA))); + public static final RegistryObject RAW_SHOCKCAT = ITEMS.register("raw_shockcat", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_SHOCKCAT))); + public static final RegistryObject COOKED_SHOCKCAT = ITEMS.register("cooked_shockcat", () -> new Item(new Item.Properties().food(UFFoodProperties.COOKED_SHOCKCAT))); + public static final RegistryObject RAW_LOBSTER = ITEMS.register("raw_lobster", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_LOBSTER))); + public static final RegistryObject COOKED_LOBSTER = ITEMS.register("cooked_lobster", () -> new Item(new Item.Properties().food(UFFoodProperties.COOKED_LOBSTER))); + public static final RegistryObject RAW_MOSSTHORN = ITEMS.register("raw_mossthorn", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_MOSSTHORN))); + public static final RegistryObject COOKED_MOSSTHORN = ITEMS.register("cooked_mossthorn", () -> new Item(new Item.Properties().food(UFFoodProperties.COOKED_MOSSTHORN))); + public static final RegistryObject RAW_PICKLEFSIH = ITEMS.register("raw_picklefish", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_PICKLEFISH))); + public static final RegistryObject RAW_AMBER_GOBY = ITEMS.register("raw_amber_goby", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_AMBER_GOBY))); + public static final RegistryObject RAW_BEAKED_HERRING = ITEMS.register("raw_beaked_herring", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_BEAKED_HERRING))); + public static final RegistryObject RAW_BLIND_SAILFIN = ITEMS.register("raw_blind_sailfin", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_BLIND_SAILFIN))); + public static final RegistryObject RAW_CIRCUS_FISH = ITEMS.register("raw_circus_fish", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_CIRCUS_FISH))); + public static final RegistryObject RAW_COPPERFLAME_ANTHIAS = ITEMS.register("raw_copperflame_anthias", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_COPPERFLAME_ANTHIAS))); + public static final RegistryObject RAW_DEMON_HERRING = ITEMS.register("raw_demon_herring", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_DEMON_HERRING))); + public static final RegistryObject RAW_DROOPING_GOURAMI = ITEMS.register("raw_drooping_gourami", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_DROOPING_GOURAMI))); + public static final RegistryObject RAW_DUALITY_DAMSELFISH = ITEMS.register("raw_duality_damselfish", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_DUALITY_DAMSELFISH))); + public static final RegistryObject RAW_FORKFISH = ITEMS.register("raw_forkfish", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_FORKFISH))); + public static final RegistryObject RAW_HATCHETFISH = ITEMS.register("raw_hatchetfish", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_HATCHETFISH))); + public static final RegistryObject RAW_SNEEP_SNORP = ITEMS.register("raw_sneep_snorp", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_SNEEP_SNORP))); + public static final RegistryObject RAW_TRIPLE_TWIRL_PLECO = ITEMS.register("raw_triple_twirl_pleco", () -> new Item(new Item.Properties().food(UFFoodProperties.RAW_TRIPLE_TWIRL_PLECO))); //public static final RegistryObject UNUSUAL_FILLET = ITEMS.register("unusual_fillet", () -> new Item(new Item.Properties().food(UFFoodProperties.UNUSUAL_FILLET))); - public static final RegistryObject COOKED_UNUSUAL_FILLET = ITEMS.register("cooked_unusual_fillet", () -> new Item(new Item.Properties().food(UFFoodProperties.COOKED_UNUSUAL_FILLET).tab(UnusualFishMod.TAB))); - public static final RegistryObject LOBSTER_ROLL = ITEMS.register("lobster_roll", () -> new Item(new Item.Properties().food(UFFoodProperties.LOBSTER_ROLL).tab(UnusualFishMod.TAB))); - public static final RegistryObject ODD_FISHSTICKS = ITEMS.register("odd_fishsticks", () -> new Item(new Item.Properties().food(UFFoodProperties.ODD_FISHSTICKS).tab(UnusualFishMod.TAB))); - public static final RegistryObject PICKLEDISH = ITEMS.register("pickledish", () -> new BowlFoodItem(new Item.Properties().food(UFFoodProperties.PICKLEDISH).stacksTo(1).tab(UnusualFishMod.TAB))); - public static final RegistryObject STRANGE_BROTH = ITEMS.register("strange_broth", () -> new BowlFoodItem(new Item.Properties().food(UFFoodProperties.STRANGE_BROTH).stacksTo(1).tab(UnusualFishMod.TAB))); - public static final RegistryObject UNUSUAL_SANDWICH = ITEMS.register("unusual_sandwich", () -> new Item(new Item.Properties().food(UFFoodProperties.UNUSUAL_SANDWICH).tab(UnusualFishMod.TAB))); - public static final RegistryObject WEIRD_GOLDFISH = ITEMS.register("weird_goldfish", () -> new Item(new Item.Properties().food(UFFoodProperties.WEIRD_GOLDFISH).tab(UnusualFishMod.TAB))); + public static final RegistryObject COOKED_UNUSUAL_FILLET = ITEMS.register("cooked_unusual_fillet", () -> new Item(new Item.Properties().food(UFFoodProperties.COOKED_UNUSUAL_FILLET))); + public static final RegistryObject LOBSTER_ROLL = ITEMS.register("lobster_roll", () -> new Item(new Item.Properties().food(UFFoodProperties.LOBSTER_ROLL))); + public static final RegistryObject ODD_FISHSTICKS = ITEMS.register("odd_fishsticks", () -> new Item(new Item.Properties().food(UFFoodProperties.ODD_FISHSTICKS))); + public static final RegistryObject PICKLEDISH = ITEMS.register("pickledish", () -> new BowlFoodItem(new Item.Properties().food(UFFoodProperties.PICKLEDISH).stacksTo(1))); + public static final RegistryObject STRANGE_BROTH = ITEMS.register("strange_broth", () -> new BowlFoodItem(new Item.Properties().food(UFFoodProperties.STRANGE_BROTH).stacksTo(1))); + public static final RegistryObject UNUSUAL_SANDWICH = ITEMS.register("unusual_sandwich", () -> new Item(new Item.Properties().food(UFFoodProperties.UNUSUAL_SANDWICH))); + public static final RegistryObject WEIRD_GOLDFISH = ITEMS.register("weird_goldfish", () -> new Item(new Item.Properties().food(UFFoodProperties.WEIRD_GOLDFISH))); // Drops - public static final RegistryObject GNASHER_ORGAN = ITEMS.register("gnasher_organ", () -> new Item(new Item.Properties())); - public static final RegistryObject TENDRIL = ITEMS.register("tendril", () -> new Item(new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject RIPPER_TOOTH = ITEMS.register("ripper_tooth", () -> new Item(new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject LOBSTER_SPIKE = ITEMS.register("lobster_spike", () -> new Item(new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject RELUCENT_SHARD = ITEMS.register("relucent_shard", () -> new Item(new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject CRIMSON_SHARD = ITEMS.register("crimson_shard", () -> new Item(new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject DEPTH_CLAW = ITEMS.register("depth_claw", () -> new Item(new Item.Properties().tab(UnusualFishMod.TAB))); + public static final RegistryObject TENDRIL = ITEMS.register("tendril", () -> new Item(new Item.Properties())); + public static final RegistryObject RIPPER_TOOTH = ITEMS.register("ripper_tooth", () -> new Item(new Item.Properties())); + public static final RegistryObject LOBSTER_SPIKE = ITEMS.register("lobster_spike", () -> new Item(new Item.Properties())); + public static final RegistryObject RELUCENT_SHARD = ITEMS.register("relucent_shard", () -> new Item(new Item.Properties())); + public static final RegistryObject CRIMSON_SHARD = ITEMS.register("crimson_shard", () -> new Item(new Item.Properties())); + public static final RegistryObject DEPTH_CLAW = ITEMS.register("depth_claw", () -> new Item(new Item.Properties())); // Gear - public static final RegistryObject DEPTH_SCYTHE = ITEMS.register("depth_scythe", () -> new DepthScytheItem(Tiers.DIAMOND, 3, -2.4F, new Item.Properties().tab(UnusualFishMod.TAB).durability(600))); - public static final RegistryObject RIPSAW = ITEMS.register("ripsaw", () -> new RipsawItem(new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject FLUVIAL_SHELL = ITEMS.register("fluvial_shell", () -> new WeatherShellItem("rain", new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1).durability(1))); - public static final RegistryObject CLEMENT_SHELL = ITEMS.register("clement_shell", () -> new WeatherShellItem("clear", new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1).durability(1))); - public static final RegistryObject THUNDEROUS_SHELL = ITEMS.register("thunderous_shell", () -> new WeatherShellItem("thunder", new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1).durability(1))); - public static final RegistryObject PRISMARINE_SPEAR = ITEMS.register("prismarine_spear", () -> new PrismarineSpearItem(new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1).durability(100))); - public static final RegistryObject WEAPON_PARTS = ITEMS.register("weapon_parts", () -> new Item(new Item.Properties().tab(UnusualFishMod.TAB))); + public static final RegistryObject DEPTH_SCYTHE = ITEMS.register("depth_scythe", () -> new DepthScytheItem(Tiers.DIAMOND, 3, -2.4F, new Item.Properties().durability(600))); + public static final RegistryObject RIPSAW = ITEMS.register("ripsaw", () -> new RipsawItem(new Item.Properties().stacksTo(1))); + public static final RegistryObject FLUVIAL_SHELL = ITEMS.register("fluvial_shell", () -> new WeatherShellItem("rain", new Item.Properties().stacksTo(1).durability(1))); + public static final RegistryObject CLEMENT_SHELL = ITEMS.register("clement_shell", () -> new WeatherShellItem("clear", new Item.Properties().stacksTo(1).durability(1))); + public static final RegistryObject THUNDEROUS_SHELL = ITEMS.register("thunderous_shell", () -> new WeatherShellItem("thunder", new Item.Properties().stacksTo(1).durability(1))); + public static final RegistryObject PRISMARINE_SPEAR = ITEMS.register("prismarine_spear", () -> new PrismarineSpearItem(new Item.Properties().stacksTo(1).durability(100))); + public static final RegistryObject WEAPON_PARTS = ITEMS.register("weapon_parts", () -> new Item(new Item.Properties())); //public static final RegistryObject STARGAZER = ITEMS.register("stargazer", () -> new StargazerItem(new Item.Properties().tab(UnusualFishMod.UNUSUAL_TAB).stacksTo(1))); // Buckets - public static final RegistryObject AERO_MONO_BUCKET = ITEMS.register("aero_mono_bucket", () -> new UFFishBucketItem(UFEntities.AERO_MONO, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject RHINO_TETRA_BUCKET = ITEMS.register("rhino_tetra_bucket", () -> new UFFishBucketItem(UFEntities.RHINO_TETRA, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject DUALITY_DAMSELFISH_BUCKET = ITEMS.register("duality_damselfish_bucket", () -> new UFFishBucketItem(UFEntities.DUALITY_DAMSELFISH, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject DROOPING_GOURAMI_BUCKET = ITEMS.register("drooping_gourami_bucket", () -> new UFFishBucketItem(UFEntities.DROOPING_GOURAMI, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject MOSSTHORN_BUCKET = ITEMS.register("mossthorn_bucket", () -> new UFFishBucketItem(UFEntities.MOSSTHORN, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject SAILOR_BARB_BUCKET = ITEMS.register("sailor_barb_bucket", () -> new UFFishBucketItem(UFEntities.SAILOR_BARB, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject TRIPLE_TWIRL_PLECO_BUCKET = ITEMS.register("triple_twirl_pleco_bucket", () -> new UFFishBucketItem(UFEntities.TRIPLE_TWIRL_PLECO, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject SPINDLEFISH_BUCKET = ITEMS.register("spindlefish_bucket", () -> new UFFishBucketItem(UFEntities.SPINDLEFISH, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject RIPPER_BUCKET = ITEMS.register("ripper_bucket", () -> new UFFishBucketItem(UFEntities.RIPPER, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject SEA_SPIDER_BUCKET = ITEMS.register("sea_spider_bucket", () -> new UFFishBucketItem(UFEntities.SEA_SPIDER, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject CLOWNTHORN_SHARK_BUCKET = ITEMS.register("clownthorn_shark_bucket", () -> new UFFishBucketItem(UFEntities.CLOWNTHORN_SHARK, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject SNEEPSNORP_BUCKET = ITEMS.register("sneepsnorp_bucket", () -> new UFFishBucketItem(UFEntities.SNEEPSNORP, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject BLACKCAP_SNAIL_BUCKET = ITEMS.register("blackcap_snail_bucket", () -> new UFFishBucketItem(UFEntities.BLACKCAP_SNAIL, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject BRICK_SNAIL_BUCKET = ITEMS.register("brick_snail_bucket", () -> new UFFishBucketItem(UFEntities.BRICK_SNAIL, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject DEEP_CRAWLER_BUCKET = ITEMS.register("deep_crawler_bucket", () -> new UFFishBucketItem(UFEntities.DEEP_CRAWLER, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject WIZARD_JELLY_BUCKET = ITEMS.register("wizard_jelly_bucket", () -> new UFFishBucketItem(UFEntities.WIZARD_JELLY, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject PORCUPINE_LOBSTA_BUCKET = ITEMS.register("porcupine_lobsta_bucket", () -> new UFFishBucketItem(UFEntities.PORCUPINE_LOBSTA, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject FRESHWATER_MANTIS_BUCKET = ITEMS.register("freshwater_mantis_bucket", () -> new UFFishBucketItem(UFEntities.FRESHWATER_MANTIS, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject BARK_ANGELFISH_BUCKET = ITEMS.register("bark_angelfish_bucket", () -> new UFFishBucketItem(UFEntities.BARK_ANGELFISH, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject SKIPPER_BUCKET = ITEMS.register("lobed_skipper_bucket", () -> new UFFishBucketItem(UFEntities.LOBED_SKIPPER, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject BEAKED_HERRING_BUCKET = ITEMS.register("beaked_herring_bucket", () -> new UFFishBucketItem(UFEntities.BEAKED_HERRING, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject PICKLEFISH_BUCKET = ITEMS.register("picklefish_bucket", () -> new UFFishBucketItem(UFEntities.PICKLEFISH, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject BLIND_SAILFIN_BUCKET = ITEMS.register("blind_sailfin_bucket", () -> new UFFishBucketItem(UFEntities.BLIND_SAILFIN, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject DEMON_HERRING_BUCKET = ITEMS.register("demon_herring_bucket", () -> new UFFishBucketItem(UFEntities.DEMON_HERRING, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject AMBER_GOBY_BUCKET = ITEMS.register("amber_goby_bucket", () -> new UFFishBucketItem(UFEntities.AMBER_GOBY, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject HATCHET_FISH_BUCKET = ITEMS.register("hatchet_fish_bucket", () -> new UFFishBucketItem(UFEntities.HATCHET_FISH, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject COPPERFLAME_BUCKET = ITEMS.register("copperflame_bucket", () -> new UFFishBucketItem(UFEntities.COPPERFLAME, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject SQUODDLE_BUCKET = ITEMS.register("squoddle_bucket", () -> new UFFishBucketItem(UFEntities.SQUODDLE, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject SEA_MOSQUITO_BUCKET = ITEMS.register("sea_mosquito_bucket", () -> new UFFishBucketItem(UFEntities.SEA_MOSQUITO, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject FORKFISH_BUCKET = ITEMS.register("forkfish_bucket", () -> new UFFishBucketItem(UFEntities.FORKFISH, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject SPOON_SHARK_BUCKET = ITEMS.register("spoon_shark_bucket", () -> new UFFishBucketItem(UFEntities.SPOON_SHARK, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject CORAL_SKRIMP_BUCKET = ITEMS.register("coral_skrimp_bucket", () -> new UFFishBucketItem(UFEntities.CORAL_SKRIMP, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject CIRCUS_FISH_BUCKET = ITEMS.register("circus_fish_bucket", () -> new UFFishBucketItem(UFEntities.CIRCUSFISH, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject EYELASH_FISH_BUCKET = ITEMS.register("eyelash_fish_bucket", () -> new UFFishBucketItem(UFEntities.EYELASH, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject SNOWFLAKE_TAIL_FISH_BUCKET = ITEMS.register("snowflake_tail_fish_bucket", () -> new UFFishBucketItem(UFEntities.SNOWFLAKE, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject CRIMSONSHELL_SQUID_BUCKET = ITEMS.register("crimsonshell_squid_bucket", () -> new UFFishBucketItem(UFEntities.CRIMSONSHELL_SQUID, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject VOLT_ANGLER_BUCKET = ITEMS.register("volt_angler_bucket", () -> new UFFishBucketItem(UFEntities.VOLT_ANGLER, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject BLIZZARDFIN_BUCKET = ITEMS.register("blizzardfin_bucket", () -> new UFFishBucketItem(UFEntities.BLIZZARDFIN, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject MUDDYTOP_SNAIL_BUCKET = ITEMS.register("muddytop_snail_bucket", () -> new UFFishBucketItem(UFEntities.MUDDYTOP_SNAIL, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject SHOCKCAT_BUCKET = ITEMS.register("shockcat_bucket", () -> new UFFishBucketItem(UFEntities.SHOCKCAT, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject PINKFIN_IDOL_BUCKET = ITEMS.register("pinkfin_idol_bucket", () -> new UFFishBucketItem(UFEntities.PINKFIN, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject TIGER_PUFFER_BUCKET = ITEMS.register("tiger_puffer_bucket", () -> new UFFishBucketItem(UFEntities.TIGER_PUFFER, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject STOUT_BICHIR_BUCKET = ITEMS.register("stout_bichir_bucket", () -> new UFFishBucketItem(UFEntities.STOUT_BICHIR, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject TRIBBLE_BUCKET = ITEMS.register("tribble_bucket", () -> new UFFishBucketItem(UFEntities.TRIBBLE, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); - public static final RegistryObject TRUMPET_SQUID_BUCKET = ITEMS.register("trumpet_squid_bucket", () -> new UFFishBucketItem(UFEntities.TRUMPET_SQUID, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().tab(UnusualFishMod.TAB).stacksTo(1))); + public static final RegistryObject AERO_MONO_BUCKET = ITEMS.register("aero_mono_bucket", () -> new UFFishBucketItem(UFEntities.AERO_MONO, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject RHINO_TETRA_BUCKET = ITEMS.register("rhino_tetra_bucket", () -> new UFFishBucketItem(UFEntities.RHINO_TETRA, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject DUALITY_DAMSELFISH_BUCKET = ITEMS.register("duality_damselfish_bucket", () -> new UFFishBucketItem(UFEntities.DUALITY_DAMSELFISH, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject DROOPING_GOURAMI_BUCKET = ITEMS.register("drooping_gourami_bucket", () -> new UFFishBucketItem(UFEntities.DROOPING_GOURAMI, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject MOSSTHORN_BUCKET = ITEMS.register("mossthorn_bucket", () -> new UFFishBucketItem(UFEntities.MOSSTHORN, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject SAILOR_BARB_BUCKET = ITEMS.register("sailor_barb_bucket", () -> new UFFishBucketItem(UFEntities.SAILOR_BARB, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject TRIPLE_TWIRL_PLECO_BUCKET = ITEMS.register("triple_twirl_pleco_bucket", () -> new UFFishBucketItem(UFEntities.TRIPLE_TWIRL_PLECO, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject SPINDLEFISH_BUCKET = ITEMS.register("spindlefish_bucket", () -> new UFFishBucketItem(UFEntities.SPINDLEFISH, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject RIPPER_BUCKET = ITEMS.register("ripper_bucket", () -> new UFFishBucketItem(UFEntities.RIPPER, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject SEA_SPIDER_BUCKET = ITEMS.register("sea_spider_bucket", () -> new UFFishBucketItem(UFEntities.SEA_SPIDER, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject CLOWNTHORN_SHARK_BUCKET = ITEMS.register("clownthorn_shark_bucket", () -> new UFFishBucketItem(UFEntities.CLOWNTHORN_SHARK, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject SNEEPSNORP_BUCKET = ITEMS.register("sneepsnorp_bucket", () -> new UFFishBucketItem(UFEntities.SNEEPSNORP, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject BLACKCAP_SNAIL_BUCKET = ITEMS.register("blackcap_snail_bucket", () -> new UFFishBucketItem(UFEntities.BLACKCAP_SNAIL, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject BRICK_SNAIL_BUCKET = ITEMS.register("brick_snail_bucket", () -> new UFFishBucketItem(UFEntities.BRICK_SNAIL, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject DEEP_CRAWLER_BUCKET = ITEMS.register("deep_crawler_bucket", () -> new UFFishBucketItem(UFEntities.DEEP_CRAWLER, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject WIZARD_JELLY_BUCKET = ITEMS.register("wizard_jelly_bucket", () -> new UFFishBucketItem(UFEntities.WIZARD_JELLY, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject PORCUPINE_LOBSTA_BUCKET = ITEMS.register("porcupine_lobsta_bucket", () -> new UFFishBucketItem(UFEntities.PORCUPINE_LOBSTA, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject FRESHWATER_MANTIS_BUCKET = ITEMS.register("freshwater_mantis_bucket", () -> new UFFishBucketItem(UFEntities.FRESHWATER_MANTIS, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject BARK_ANGELFISH_BUCKET = ITEMS.register("bark_angelfish_bucket", () -> new UFFishBucketItem(UFEntities.BARK_ANGELFISH, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject SKIPPER_BUCKET = ITEMS.register("lobed_skipper_bucket", () -> new UFFishBucketItem(UFEntities.LOBED_SKIPPER, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject BEAKED_HERRING_BUCKET = ITEMS.register("beaked_herring_bucket", () -> new UFFishBucketItem(UFEntities.BEAKED_HERRING, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject PICKLEFISH_BUCKET = ITEMS.register("picklefish_bucket", () -> new UFFishBucketItem(UFEntities.PICKLEFISH, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject BLIND_SAILFIN_BUCKET = ITEMS.register("blind_sailfin_bucket", () -> new UFFishBucketItem(UFEntities.BLIND_SAILFIN, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject DEMON_HERRING_BUCKET = ITEMS.register("demon_herring_bucket", () -> new UFFishBucketItem(UFEntities.DEMON_HERRING, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject AMBER_GOBY_BUCKET = ITEMS.register("amber_goby_bucket", () -> new UFFishBucketItem(UFEntities.AMBER_GOBY, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject HATCHET_FISH_BUCKET = ITEMS.register("hatchet_fish_bucket", () -> new UFFishBucketItem(UFEntities.HATCHET_FISH, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject COPPERFLAME_BUCKET = ITEMS.register("copperflame_bucket", () -> new UFFishBucketItem(UFEntities.COPPERFLAME, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject SQUODDLE_BUCKET = ITEMS.register("squoddle_bucket", () -> new UFFishBucketItem(UFEntities.SQUODDLE, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject SEA_MOSQUITO_BUCKET = ITEMS.register("sea_mosquito_bucket", () -> new UFFishBucketItem(UFEntities.SEA_MOSQUITO, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject FORKFISH_BUCKET = ITEMS.register("forkfish_bucket", () -> new UFFishBucketItem(UFEntities.FORKFISH, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject SPOON_SHARK_BUCKET = ITEMS.register("spoon_shark_bucket", () -> new UFFishBucketItem(UFEntities.SPOON_SHARK, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject CORAL_SKRIMP_BUCKET = ITEMS.register("coral_skrimp_bucket", () -> new UFFishBucketItem(UFEntities.CORAL_SKRIMP, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject CIRCUS_FISH_BUCKET = ITEMS.register("circus_fish_bucket", () -> new UFFishBucketItem(UFEntities.CIRCUSFISH, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject EYELASH_FISH_BUCKET = ITEMS.register("eyelash_fish_bucket", () -> new UFFishBucketItem(UFEntities.EYELASH, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject SNOWFLAKE_TAIL_FISH_BUCKET = ITEMS.register("snowflake_tail_fish_bucket", () -> new UFFishBucketItem(UFEntities.SNOWFLAKE, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject CRIMSONSHELL_SQUID_BUCKET = ITEMS.register("crimsonshell_squid_bucket", () -> new UFFishBucketItem(UFEntities.CRIMSONSHELL_SQUID, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject VOLT_ANGLER_BUCKET = ITEMS.register("volt_angler_bucket", () -> new UFFishBucketItem(UFEntities.VOLT_ANGLER, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject BLIZZARDFIN_BUCKET = ITEMS.register("blizzardfin_bucket", () -> new UFFishBucketItem(UFEntities.BLIZZARDFIN, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject MUDDYTOP_SNAIL_BUCKET = ITEMS.register("muddytop_snail_bucket", () -> new UFFishBucketItem(UFEntities.MUDDYTOP_SNAIL, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject SHOCKCAT_BUCKET = ITEMS.register("shockcat_bucket", () -> new UFFishBucketItem(UFEntities.SHOCKCAT, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject PINKFIN_IDOL_BUCKET = ITEMS.register("pinkfin_idol_bucket", () -> new UFFishBucketItem(UFEntities.PINKFIN, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject TIGER_PUFFER_BUCKET = ITEMS.register("tiger_puffer_bucket", () -> new UFFishBucketItem(UFEntities.TIGER_PUFFER, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject STOUT_BICHIR_BUCKET = ITEMS.register("stout_bichir_bucket", () -> new UFFishBucketItem(UFEntities.STOUT_BICHIR, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject TRIBBLE_BUCKET = ITEMS.register("tribble_bucket", () -> new UFFishBucketItem(UFEntities.TRIBBLE, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); + public static final RegistryObject TRUMPET_SQUID_BUCKET = ITEMS.register("trumpet_squid_bucket", () -> new UFFishBucketItem(UFEntities.TRUMPET_SQUID, () -> Fluids.WATER, Items.BUCKET, false, new Item.Properties().stacksTo(1))); // Spawn Eggs - public static final RegistryObject AERO_MONO_SPAWN_EGG = ITEMS.register("aero_mono_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.AERO_MONO, 0x8ea6af, 0x5b78ac, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject PINKFIN_SPAWN_EGG = ITEMS.register("pinkfin_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.PINKFIN, 0x0e011e, 0x421054, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject BARBED_SPAWN_EGG = ITEMS.register("roughback_guitarfish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.ROUGHBACK, 0x7d5e32, 0x612d1a, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject CLOWNTHORN_SPAWN_EGG = ITEMS.register("clownthorn_shark_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.CLOWNTHORN_SHARK, 0xd46c1d, 0xa21e00, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject DUALITY_SPAWN_EGG = ITEMS.register("duality_damselfish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.DUALITY_DAMSELFISH, 0xd7e7f0, 0x090719, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject DROOPING_GOURAMI_SPAWN_EGG = ITEMS.register("drooping_gourami_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.DROOPING_GOURAMI , 0x54291f, 0x52121f, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject MOSSTHORN_SPAWN_EGG = ITEMS.register("mossthorn_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.MOSSTHORN, 0x26a529, 0x034223, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject RHINO_TETRA_SPAWN_EGG = ITEMS.register("rhino_tetra_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.RHINO_TETRA, 0x50b9ad, 0x216687, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject RIPPER_SPAWN_EGG = ITEMS.register("ripper_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.RIPPER, 0x98aa58, 0x746825, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject SAILOR_BARB_PAWN_EGG = ITEMS.register("sailor_barb_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SAILOR_BARB, 0x77a439, 0x4b580c, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject SEA_PANCAKE_SPAWN_EGG = ITEMS.register("sea_pancake_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SEA_PANCAKE, 0x9e6229, 0x551908, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject SEA_SPIDER_SPAWN_EGG = ITEMS.register("sea_spider_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SEA_SPIDER, 0xc58a21, 0x7f0d00, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject SPINDLEFISH_SPAWN_EGG = ITEMS.register("spindlefish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SPINDLEFISH, 0xe07d76, 0x78064a, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject TRIPLE_TWIRL_PLECO_SPAWN_EGG = ITEMS.register("triple_twirl_pleco_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.TRIPLE_TWIRL_PLECO, 0xc1923a, 0x903113, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject BRICK_SNAIL_SPAWN_EGG = ITEMS.register("brick_snail_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.BRICK_SNAIL, 0x4b0c16, 0x7c5955, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject ZEBRA_CORNETFISH_SPAWN_EGG = ITEMS.register("zebra_cornetfish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.ZEBRA_CORNETFISH , 0xa088b4, 0x472e63, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject TIGER_PUFFER_SPAWN_EGG = ITEMS.register("tiger_puffer_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.TIGER_PUFFER, 0x4b0f0b, 0xc26715, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject BLACKCAP_SNAIL_SPAWN_EGG = ITEMS.register("blackcap_snail_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.BLACKCAP_SNAIL, 0x211c1e, 0x603d36, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject SNEEPSNORP_EGG = ITEMS.register("sneepsnorp_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SNEEPSNORP, 0x404a7b, 0x779aa8, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject DEEP_CRAWLER_SPAWN_EGG = ITEMS.register("deep_crawler_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.DEEP_CRAWLER, 0x1a1825, 0x434751, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject WIZARD_JELLY_SPAWN_EGG = ITEMS.register("wizard_jelly_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.WIZARD_JELLY, 0x1e134c, 0x8b55a6, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject PORCUPINE_LOBSTA_SPAWN_EGG = ITEMS.register("porcupine_lobsta_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.PORCUPINE_LOBSTA, 0x460121, 0x8d2c3f, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject TRUMPET_SQUID_SPAWN_EGG = ITEMS.register("trumpet_squid_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.TRUMPET_SQUID, 0x6a061a, 0xe9b142, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject FRESHWATER_MANTIS_EGG = ITEMS.register("freshwater_mantis_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.FRESHWATER_MANTIS, 0x4b2f1a, 0x7c8b44, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject BARK_ANGELFISH_SPAWN_EGG = ITEMS.register("bark_angelfish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.BARK_ANGELFISH, 0x3b0e08, 0x6b3f21, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject SHOCKCAT_SPAWN_EGG = ITEMS.register("shockcat_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SHOCKCAT, 0x222c58, 0x4595ba, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject MUDDYTOP_SNAIL_SPAWN_EGG = ITEMS.register("muddytop_snail_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.MUDDYTOP_SNAIL, 0x23100e, 0x5f4d3b, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject KALAPPA_SPAWN_EGG = ITEMS.register("kalappa_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.KALAPPA, 0x624051, 0x886d86, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject LOBED_SKIPPER_SPAWN_EGG = ITEMS.register("lobed_skipper_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.LOBED_SKIPPER, 0x4b2618, 0x9e632f, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject STOUT_BICHIR_SPAWN_EGG = ITEMS.register("stout_bichir_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.STOUT_BICHIR, 0x07331c, 0x3c7834, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject BEAKED_HERRING_SPAWN_EGG = ITEMS.register("beaked_herring_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.BEAKED_HERRING, 0x516881, 0x71a29f, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject PICKLEFISH_SPAWN_EGG = ITEMS.register("picklefish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.PICKLEFISH, 0x235806, 0xd0cd07, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject BLIND_SAILFIN_SPAWN_EGG = ITEMS.register("blind_sailfin_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.BLIND_SAILFIN, 0xb1717c, 0xd1bdbc, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject DEMON_HERRING_SPAWN_EGG = ITEMS.register("demon_herring_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.DEMON_HERRING, 0x1a1a3b, 0xe952b0, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject AMBER_GOBY_SPAWN_EGG = ITEMS.register("amber_goby_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.AMBER_GOBY, 0xa22902, 0xddb534, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject HATCHET_FISH_SPAWN_EGG = ITEMS.register("hatchet_fish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.HATCHET_FISH, 0x0b0b26, 0x7d3283, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject COPPERFLAME_SPAWN_EGG = ITEMS.register("copperflame_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.COPPERFLAME, 0x44950f, 0xcfde3c, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject ROOTBALL_SPAWN_EGG = ITEMS.register("root_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.ROOTBALL, 0x4c6e11, 0xd8d524, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject CELESTIAL_FISH_SPAWN_EGG = ITEMS.register("celestial_fish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.CELESTIAL_FISH, 0x060e26, 0xece651, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject GNASHER_SPAWN_EGG = ITEMS.register("gnasher_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.GNASHER, 0x050510, 0x6e60c9, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject PRAWN_SPAWN_EGG = ITEMS.register("prawn_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.PRAWN, 0x0a081f, 0x253048, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject SQUODDLE_SPAWN_EGG = ITEMS.register("squoddle_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SQUODDLE, 0xbf3f00, 0xd8d2d8, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject SEA_MOSQUITO_SPAWN_EGG = ITEMS.register("sea_mosquito_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SEA_MOSQUITO, 0x5a7636, 0x82b472, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject FORKFISH_SPAWN_EGG = ITEMS.register("forkfish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.FORKFISH, 0xa35826, 0xccb05b, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject SPOON_SHARK_SPAWN_EGG = ITEMS.register("spoon_shark_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SPOON_SHARK, 0x58241d, 0xb59259, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject CORAL_SKRIMP_EGG = ITEMS.register("coral_skrimp_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.CORAL_SKRIMP, 0x5a0e7a, 0xb34aa2, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject CIRCUS_FISH_SPAWN_EGG = ITEMS.register("circus_fish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.CIRCUSFISH, 0x590d0d, 0xd0c09a, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject BLIZZARDFIN_SPAWN_EGG = ITEMS.register("blizzardfin_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.BLIZZARDFIN, 0x033d9a, 0x25bcce, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject EYELASH_FISH_SPAWN_EGG = ITEMS.register("eyelash_fish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.EYELASH, 0xb7b7ba, 0xfcfcfa, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject SNOWFLAKE_TAIL_FISH_SPAWN_EGG = ITEMS.register("snowflake_tail_fish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SNOWFLAKE, 0x496497, 0x93edfb, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject TIGER_JUNGLE_SHARK_SPAWN_EGG = ITEMS.register("tiger_jungle_shark_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.TIGER_JUNGLE_SHARK, 0x2e2a44, 0xc1badb, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject CRIMSONSHELL_SQUID_SPAWN_EGG = ITEMS.register("crimsonshell_squid_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.CRIMSONSHELL_SQUID, 0x0e011e, 0xda4938, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject VOLT_ANGLER_SPAWN_EGG = ITEMS.register("volt_angler_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.VOLT_ANGLER, 0x0e011e, 0xffea14, new Item.Properties().tab(UnusualFishMod.TAB))); - public static final RegistryObject TRIBBLE_SPAWN_EGG = ITEMS.register("tribble_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.TRIBBLE, 0x0e011e, 0x5e1c68, new Item.Properties().tab(UnusualFishMod.TAB))); + public static final RegistryObject AERO_MONO_SPAWN_EGG = ITEMS.register("aero_mono_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.AERO_MONO, 0x8ea6af, 0x5b78ac, new Item.Properties())); + public static final RegistryObject PINKFIN_SPAWN_EGG = ITEMS.register("pinkfin_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.PINKFIN, 0x0e011e, 0x421054, new Item.Properties())); + public static final RegistryObject BARBED_SPAWN_EGG = ITEMS.register("roughback_guitarfish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.ROUGHBACK, 0x7d5e32, 0x612d1a, new Item.Properties())); + public static final RegistryObject CLOWNTHORN_SPAWN_EGG = ITEMS.register("clownthorn_shark_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.CLOWNTHORN_SHARK, 0xd46c1d, 0xa21e00, new Item.Properties())); + public static final RegistryObject DUALITY_SPAWN_EGG = ITEMS.register("duality_damselfish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.DUALITY_DAMSELFISH, 0xd7e7f0, 0x090719, new Item.Properties())); + public static final RegistryObject DROOPING_GOURAMI_SPAWN_EGG = ITEMS.register("drooping_gourami_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.DROOPING_GOURAMI , 0x54291f, 0x52121f, new Item.Properties())); + public static final RegistryObject MOSSTHORN_SPAWN_EGG = ITEMS.register("mossthorn_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.MOSSTHORN, 0x26a529, 0x034223, new Item.Properties())); + public static final RegistryObject RHINO_TETRA_SPAWN_EGG = ITEMS.register("rhino_tetra_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.RHINO_TETRA, 0x50b9ad, 0x216687, new Item.Properties())); + public static final RegistryObject RIPPER_SPAWN_EGG = ITEMS.register("ripper_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.RIPPER, 0x98aa58, 0x746825, new Item.Properties())); + public static final RegistryObject SAILOR_BARB_PAWN_EGG = ITEMS.register("sailor_barb_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SAILOR_BARB, 0x77a439, 0x4b580c, new Item.Properties())); + public static final RegistryObject SEA_PANCAKE_SPAWN_EGG = ITEMS.register("sea_pancake_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SEA_PANCAKE, 0x9e6229, 0x551908, new Item.Properties())); + public static final RegistryObject SEA_SPIDER_SPAWN_EGG = ITEMS.register("sea_spider_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SEA_SPIDER, 0xc58a21, 0x7f0d00, new Item.Properties())); + public static final RegistryObject SPINDLEFISH_SPAWN_EGG = ITEMS.register("spindlefish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SPINDLEFISH, 0xe07d76, 0x78064a, new Item.Properties())); + public static final RegistryObject TRIPLE_TWIRL_PLECO_SPAWN_EGG = ITEMS.register("triple_twirl_pleco_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.TRIPLE_TWIRL_PLECO, 0xc1923a, 0x903113, new Item.Properties())); + public static final RegistryObject BRICK_SNAIL_SPAWN_EGG = ITEMS.register("brick_snail_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.BRICK_SNAIL, 0x4b0c16, 0x7c5955, new Item.Properties())); + public static final RegistryObject ZEBRA_CORNETFISH_SPAWN_EGG = ITEMS.register("zebra_cornetfish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.ZEBRA_CORNETFISH , 0xa088b4, 0x472e63, new Item.Properties())); + public static final RegistryObject TIGER_PUFFER_SPAWN_EGG = ITEMS.register("tiger_puffer_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.TIGER_PUFFER, 0x4b0f0b, 0xc26715, new Item.Properties())); + public static final RegistryObject BLACKCAP_SNAIL_SPAWN_EGG = ITEMS.register("blackcap_snail_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.BLACKCAP_SNAIL, 0x211c1e, 0x603d36, new Item.Properties())); + public static final RegistryObject SNEEPSNORP_EGG = ITEMS.register("sneepsnorp_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SNEEPSNORP, 0x404a7b, 0x779aa8, new Item.Properties())); + public static final RegistryObject DEEP_CRAWLER_SPAWN_EGG = ITEMS.register("deep_crawler_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.DEEP_CRAWLER, 0x1a1825, 0x434751, new Item.Properties())); + public static final RegistryObject WIZARD_JELLY_SPAWN_EGG = ITEMS.register("wizard_jelly_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.WIZARD_JELLY, 0x1e134c, 0x8b55a6, new Item.Properties())); + public static final RegistryObject PORCUPINE_LOBSTA_SPAWN_EGG = ITEMS.register("porcupine_lobsta_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.PORCUPINE_LOBSTA, 0x460121, 0x8d2c3f, new Item.Properties())); + public static final RegistryObject TRUMPET_SQUID_SPAWN_EGG = ITEMS.register("trumpet_squid_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.TRUMPET_SQUID, 0x6a061a, 0xe9b142, new Item.Properties())); + public static final RegistryObject FRESHWATER_MANTIS_EGG = ITEMS.register("freshwater_mantis_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.FRESHWATER_MANTIS, 0x4b2f1a, 0x7c8b44, new Item.Properties())); + public static final RegistryObject BARK_ANGELFISH_SPAWN_EGG = ITEMS.register("bark_angelfish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.BARK_ANGELFISH, 0x3b0e08, 0x6b3f21, new Item.Properties())); + public static final RegistryObject SHOCKCAT_SPAWN_EGG = ITEMS.register("shockcat_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SHOCKCAT, 0x222c58, 0x4595ba, new Item.Properties())); + public static final RegistryObject MUDDYTOP_SNAIL_SPAWN_EGG = ITEMS.register("muddytop_snail_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.MUDDYTOP_SNAIL, 0x23100e, 0x5f4d3b, new Item.Properties())); + public static final RegistryObject KALAPPA_SPAWN_EGG = ITEMS.register("kalappa_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.KALAPPA, 0x624051, 0x886d86, new Item.Properties())); + public static final RegistryObject LOBED_SKIPPER_SPAWN_EGG = ITEMS.register("lobed_skipper_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.LOBED_SKIPPER, 0x4b2618, 0x9e632f, new Item.Properties())); + public static final RegistryObject STOUT_BICHIR_SPAWN_EGG = ITEMS.register("stout_bichir_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.STOUT_BICHIR, 0x07331c, 0x3c7834, new Item.Properties())); + public static final RegistryObject BEAKED_HERRING_SPAWN_EGG = ITEMS.register("beaked_herring_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.BEAKED_HERRING, 0x516881, 0x71a29f, new Item.Properties())); + public static final RegistryObject PICKLEFISH_SPAWN_EGG = ITEMS.register("picklefish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.PICKLEFISH, 0x235806, 0xd0cd07, new Item.Properties())); + public static final RegistryObject BLIND_SAILFIN_SPAWN_EGG = ITEMS.register("blind_sailfin_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.BLIND_SAILFIN, 0xb1717c, 0xd1bdbc, new Item.Properties())); + public static final RegistryObject DEMON_HERRING_SPAWN_EGG = ITEMS.register("demon_herring_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.DEMON_HERRING, 0x1a1a3b, 0xe952b0, new Item.Properties())); + public static final RegistryObject AMBER_GOBY_SPAWN_EGG = ITEMS.register("amber_goby_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.AMBER_GOBY, 0xa22902, 0xddb534, new Item.Properties())); + public static final RegistryObject HATCHET_FISH_SPAWN_EGG = ITEMS.register("hatchet_fish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.HATCHET_FISH, 0x0b0b26, 0x7d3283, new Item.Properties())); + public static final RegistryObject COPPERFLAME_SPAWN_EGG = ITEMS.register("copperflame_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.COPPERFLAME, 0x44950f, 0xcfde3c, new Item.Properties())); + public static final RegistryObject ROOTBALL_SPAWN_EGG = ITEMS.register("root_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.ROOTBALL, 0x4c6e11, 0xd8d524, new Item.Properties())); + public static final RegistryObject CELESTIAL_FISH_SPAWN_EGG = ITEMS.register("celestial_fish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.CELESTIAL_FISH, 0x060e26, 0xece651, new Item.Properties())); + public static final RegistryObject GNASHER_SPAWN_EGG = ITEMS.register("gnasher_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.GNASHER, 0x050510, 0x6e60c9, new Item.Properties())); + public static final RegistryObject PRAWN_SPAWN_EGG = ITEMS.register("prawn_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.PRAWN, 0x0a081f, 0x253048, new Item.Properties())); + public static final RegistryObject SQUODDLE_SPAWN_EGG = ITEMS.register("squoddle_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SQUODDLE, 0xbf3f00, 0xd8d2d8, new Item.Properties())); + public static final RegistryObject SEA_MOSQUITO_SPAWN_EGG = ITEMS.register("sea_mosquito_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SEA_MOSQUITO, 0x5a7636, 0x82b472, new Item.Properties())); + public static final RegistryObject FORKFISH_SPAWN_EGG = ITEMS.register("forkfish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.FORKFISH, 0xa35826, 0xccb05b, new Item.Properties())); + public static final RegistryObject SPOON_SHARK_SPAWN_EGG = ITEMS.register("spoon_shark_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SPOON_SHARK, 0x58241d, 0xb59259, new Item.Properties())); + public static final RegistryObject CORAL_SKRIMP_EGG = ITEMS.register("coral_skrimp_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.CORAL_SKRIMP, 0x5a0e7a, 0xb34aa2, new Item.Properties())); + public static final RegistryObject CIRCUS_FISH_SPAWN_EGG = ITEMS.register("circus_fish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.CIRCUSFISH, 0x590d0d, 0xd0c09a, new Item.Properties())); + public static final RegistryObject BLIZZARDFIN_SPAWN_EGG = ITEMS.register("blizzardfin_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.BLIZZARDFIN, 0x033d9a, 0x25bcce, new Item.Properties())); + public static final RegistryObject EYELASH_FISH_SPAWN_EGG = ITEMS.register("eyelash_fish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.EYELASH, 0xb7b7ba, 0xfcfcfa, new Item.Properties())); + public static final RegistryObject SNOWFLAKE_TAIL_FISH_SPAWN_EGG = ITEMS.register("snowflake_tail_fish_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.SNOWFLAKE, 0x496497, 0x93edfb, new Item.Properties())); + public static final RegistryObject TIGER_JUNGLE_SHARK_SPAWN_EGG = ITEMS.register("tiger_jungle_shark_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.TIGER_JUNGLE_SHARK, 0x2e2a44, 0xc1badb, new Item.Properties())); + public static final RegistryObject CRIMSONSHELL_SQUID_SPAWN_EGG = ITEMS.register("crimsonshell_squid_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.CRIMSONSHELL_SQUID, 0x0e011e, 0xda4938, new Item.Properties())); + public static final RegistryObject VOLT_ANGLER_SPAWN_EGG = ITEMS.register("volt_angler_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.VOLT_ANGLER, 0x0e011e, 0xffea14, new Item.Properties())); + public static final RegistryObject TRIBBLE_SPAWN_EGG = ITEMS.register("tribble_spawn_egg", () -> new ForgeSpawnEggItem(UFEntities.TRIBBLE, 0x0e011e, 0x5e1c68, new Item.Properties())); } diff --git a/src/main/java/codyhuh/unusualfishmod/core/registry/UFSounds.java b/src/main/java/codyhuh/unusualfishmod/core/registry/UFSounds.java index ee131ec..8b47fab 100644 --- a/src/main/java/codyhuh/unusualfishmod/core/registry/UFSounds.java +++ b/src/main/java/codyhuh/unusualfishmod/core/registry/UFSounds.java @@ -23,7 +23,7 @@ public class UFSounds { public static final RegistryObject SAWING = createSoundEvent("sawing"); private static RegistryObject createSoundEvent(final String name) { - return SOUND_EVENTS.register(name, () -> new SoundEvent(new ResourceLocation(UnusualFishMod.MOD_ID, name))); + return SOUND_EVENTS.register(name, () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(UnusualFishMod.MOD_ID, name))); } } diff --git a/src/main/java/codyhuh/unusualfishmod/core/registry/UFTabs.java b/src/main/java/codyhuh/unusualfishmod/core/registry/UFTabs.java new file mode 100644 index 0000000..2755686 --- /dev/null +++ b/src/main/java/codyhuh/unusualfishmod/core/registry/UFTabs.java @@ -0,0 +1,30 @@ +package codyhuh.unusualfishmod.core.registry; + +import codyhuh.unusualfishmod.UnusualFishMod; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.ItemLike; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.RegistryObject; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Supplier; + +public class UFTabs { + public static final DeferredRegister CREATIVE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, UnusualFishMod.MOD_ID); + + public static final RegistryObject UF_TAB = CREATIVE_TABS.register("unusual_fish_tab", + () -> CreativeModeTab.builder() + .title(Component.translatable("itemGroup.unusual_fish_mod")) + .icon(UFItems.RAW_RHINO_TETRA.get()::getDefaultInstance) + .displayItems((displayParams, output) -> { + for (var item : UFItems.ITEMS.getEntries()) { + output.accept(item.get()); + } + }) + .build() + ); +} diff --git a/src/main/java/codyhuh/unusualfishmod/core/registry/UFTags.java b/src/main/java/codyhuh/unusualfishmod/core/registry/UFTags.java index 7874055..2e8bd6d 100644 --- a/src/main/java/codyhuh/unusualfishmod/core/registry/UFTags.java +++ b/src/main/java/codyhuh/unusualfishmod/core/registry/UFTags.java @@ -2,6 +2,7 @@ import codyhuh.unusualfishmod.UnusualFishMod; import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; import net.minecraft.tags.ItemTags; @@ -18,7 +19,7 @@ public class UFTags { public static final TagKey SQUID_EGGS = blockTag("squid_eggs"); private static TagKey> entityTag(String path) { - return TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation(UnusualFishMod.MOD_ID, path)); + return TagKey.create(Registries.ENTITY_TYPE, new ResourceLocation(UnusualFishMod.MOD_ID, path)); } private static TagKey itemTag(String path) { diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index fc47722..503a26d 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -1,27 +1,70 @@ -modLoader="javafml" -loaderVersion="[40,)" -license="MIT" +# This is an example mods.toml file. It contains the data relating to the loading mods. +# There are several mandatory fields (#mandatory), and many more that are optional (#optional). +# The overall format is standard TOML format, v0.5.0. +# Note that there are a couple of TOML lists in this file. +# Find more information on toml format here: https://github.com/toml-lang/toml +# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml +modLoader="javafml" #mandatory +# A version range to match for said mod loader - for regular FML @Mod it will be the forge version +loaderVersion="${loader_version_range}" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions. +# The license for you mod. This is mandatory metadata and allows for easier comprehension of your redistributive properties. +# Review your options at https://choosealicense.com/. All rights reserved is the default copyright stance, and is thus the default here. +license="${mod_license}" +# A URL to refer people to when problems occur with this mod +#issueTrackerURL="https://change.me.to.your.issue.tracker.example.invalid/" #optional +# A list of mods - how many allowed here is determined by the individual mod loader +[[mods]] #mandatory +# The modid of the mod +modId="${mod_id}" #mandatory +# The version number of the mod +version="${mod_version}" #mandatory +# A display name for the mod +displayName="${mod_name}" #mandatory +# A URL to query for updates for this mod. See the JSON update specification https://docs.minecraftforge.net/en/latest/misc/updatechecker/ +#updateJSONURL="https://change.me.example.invalid/updates.json" #optional +# A URL for the "homepage" for this mod, displayed in the mod UI +#displayURL="https://change.me.to.your.mods.homepage.example.invalid/" #optional +# A file name (in the root of the mod JAR) containing a logo for display +#logoFile="examplemod.png" #optional +# A text field displayed in the mod UI +credits="Mango (sound designer)" #optional +# A text field displayed in the mod UI +authors="${mod_authors}" #optional +# Display Test controls the display for your mod in the server connection screen +# MATCH_VERSION means that your mod will cause a red X if the versions on client and server differ. This is the default behaviour and should be what you choose if you have server and client elements to your mod. +# IGNORE_SERVER_VERSION means that your mod will not cause a red X if it's present on the server but not on the client. This is what you should use if you're a server only mod. +# IGNORE_ALL_VERSION means that your mod will not cause a red X if it's present on the client or the server. This is a special case and should only be used if your mod has no server component. +# NONE means that no display test is set on your mod. You need to do this yourself, see IExtensionPoint.DisplayTest for more information. You can define any scheme you wish with this value. +# IMPORTANT NOTE: this is NOT an instruction as to which environments (CLIENT or DEDICATED SERVER) your mod loads on. Your mod should load (and maybe do nothing!) whereever it finds itself. +#displayTest="MATCH_VERSION" # MATCH_VERSION is the default if nothing is specified (#optional) -[[mods]] -modId="unusualfishmod" -version="${file.jarVersion}" -displayName= "Unusual Fish Mod" -#logoFile= "examplemod.png" -#credits= "" -authors= "codyhuh (maintainer), OmayPaty (most art), Peeko32213 (former author)" -description=''' -A mod that adds a variety of new aquatic creatures, both useful and atheistic! -''' +# The description text for the mod (multi line!) (#mandatory) +description='''${mod_description}''' +# A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional. +[[dependencies.${mod_id}]] #optional +# the modid of the dependency +modId="forge" #mandatory +# Does this dependency have to exist - if not, ordering below must be specified +mandatory=true #mandatory +# The version range of the dependency +versionRange="${forge_version_range}" #mandatory +# An ordering relationship for the dependency - BEFORE or AFTER required if the dependency is not mandatory +# BEFORE - This mod is loaded BEFORE the dependency +# AFTER - This mod is loaded AFTER the dependency +ordering="NONE" +# Side this dependency is applied on - BOTH, CLIENT, or SERVER +side="BOTH" +# Here's another dependency +[[dependencies.${mod_id}]] +modId="minecraft" +mandatory=true +# This version range declares a minimum of the current minecraft version up to but not including the next major version +versionRange="${minecraft_version_range}" +ordering="NONE" +side="BOTH" -[[dependencies.unusualfishmod]] - modId="forge" - mandatory=true - versionRange="[43.2.0,)" - ordering="NONE" - side="BOTH" -[[dependencies.unusualfishmod]] - modId="minecraft" - mandatory=true - versionRange="[1.19.2,1.19.3)" - ordering="NONE" - side="BOTH" \ No newline at end of file +# Features are specific properties of the game environment, that you may want to declare you require. This example declares +# that your mod requires GL version 3.2 or higher. Other features will be added. They are side aware so declaring this won't +# stop your mod loading on the server for example. +#[features.${mod_id}] +#openGLVersion="[3.2,)" \ No newline at end of file diff --git a/src/main/resources/assets/unusualfishmod/lang/en_us.json b/src/main/resources/assets/unusualfishmod/lang/en_us.json index aced667..8fcec2b 100644 --- a/src/main/resources/assets/unusualfishmod/lang/en_us.json +++ b/src/main/resources/assets/unusualfishmod/lang/en_us.json @@ -1,5 +1,5 @@ { - "itemGroup.unusualfishmod": "Unusual Fish", + "itemGroup.unusual_fish_mod": "Unusual Fish", "item.unusualfishmod.raw_mossthorn": "Raw Mossthorn Patty", "item.unusualfishmod.raw_aero_mono": "Aero Mono", @@ -43,7 +43,6 @@ "item.unusualfishmod.unusual_sandwich": "Unusual Sandwich", "item.unusualfishmod.weird_goldfish": "Weird Goldfish", - "item.unusualfishmod.gnasher_organ": "Gnasher Jewel", "item.unusualfishmod.tendril": "Shocking Tendril", "item.unusualfishmod.ripper_tooth": "Ripper Tooth", "item.unusualfishmod.lobster_spike": "Lobster Spike", diff --git a/src/main/resources/assets/unusualfishmod/models/item/depth_scythe.json b/src/main/resources/assets/unusualfishmod/models/item/depth_scythe.json index 0d1778f..64ad365 100644 --- a/src/main/resources/assets/unusualfishmod/models/item/depth_scythe.json +++ b/src/main/resources/assets/unusualfishmod/models/item/depth_scythe.json @@ -1,6 +1,6 @@ { "parent":"forge:item/default", - "loader":"forge:separate-perspective", + "loader":"forge:separate_transforms", "base": { "parent": "unusualfishmod:item/scythe_in_hand" }, diff --git a/src/main/resources/assets/unusualfishmod/models/item/gnasher_tooth.json b/src/main/resources/assets/unusualfishmod/models/item/gnasher_tooth.json deleted file mode 100644 index 2ff9eda..0000000 --- a/src/main/resources/assets/unusualfishmod/models/item/gnasher_tooth.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent" : "item/generated", - "textures" : { - "layer0" : "unusualfishmod:item/gnasher_tooth" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/unusualfishmod/textures/item/gnasher_organ.png b/src/main/resources/assets/unusualfishmod/textures/item/gnasher_organ.png deleted file mode 100644 index 2816097909940623313ca1d2d39d86b4912cb012..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 zcmV;c0aX5pP)rlQC<;Kp2LfD_w*ZLx&p*3N8&DI@sduC>=tfpko&u z>*$bQkRf9_#y=3jr9*La4%WF{0=i`oB?ZUp5Oa;9Q0mZI4(|Kjhxh&XPAH`~=A0a* z{tdt~ePx;c-vE~BtKgvna1e43V41#psdfO^+03NY@8_uoh}VzK zHXswWjV9GfQ3GZ92LLdQR`izx4H8NzEYnwQqq*fIgXCRIqt#YVe>p${0B+-Z0HS08 zz~fz+M!m>ryka;>ZB))L0C<;g0Gwu4+C~#Q>85!KP>XvECo>xL8!Zl{OSlm@h9~j> z?0Hu?B`?kS`9&aY07hevP`UuL)(+LHGu^Le0C0Wzq-t?bTa1#07DDQ1Pfg_aK!nmI zDA>B87WV{zQ}RS8U7}<`P_PN5i&NT(kU?5&hd|o-