From 11f3d68031690076e8d462bc8cc07c657cb97ae2 Mon Sep 17 00:00:00 2001 From: angel Date: Mon, 5 Jan 2026 17:24:05 -0600 Subject: [PATCH] 1.21.11 first part --- CHANGELOG.MD | 22 -- build.gradle | 69 ++-- gradle.properties | 25 +- gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 22 +- gradlew.bat | 20 +- run-data/logs/debug.log | 10 +- settings.gradle | 9 +- .../0f01e36c8c3e714f07da00bbe50a17425fd9bc5d | 6 - .../103d9f3f36b01595f1aa5172191e60eff02e6924 | 6 - .../2a6e80b4e4362196170dd4ee2a3d8e7f56f9a0a0 | 5 - .../59eb3dbb5f86130e09b3c62d89b9525ee01cf52d | 5 - .../670693f4e9f75e384665a60f155b7d94dfc51f73 | 55 --- .../8273965882b13bc067ed62dddc852c7100e3fe85 | 13 - .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 41 --- .../java/dev/sillyangel/nugget/Config.java | 37 ++ .../sillyangel/nugget/NuggetMod.java | 137 ++++--- .../sillyangel/nugget/block/ModBlocks.java | 118 +++--- .../nugget/datagen/DataGenerators.java | 80 ++-- .../datagen/ModBlockLootTableProvider.java | 106 +++--- .../nugget/datagen/ModBlockStateProvider.java | 56 +-- .../nugget/datagen/ModBlockTagProvider.java | 81 ++--- .../nugget/datagen/ModDatapackEntries.java | 14 +- .../nugget/datagen/ModItemModelProvider.java | 266 +++++++------- .../nugget/datagen/ModItemTagProvider.java | 85 +++-- .../nugget/datagen/ModRecipeProvider.java | 344 +++++++++--------- .../nugget/item/ModArmorMaterials.java | 22 +- .../nugget/item/ModCreativeModeTabs.java | 118 +++--- .../nugget/item/ModFoodProperties.java | 16 +- .../dev/sillyangel/nugget/item/ModItems.java | 96 +++++ .../sillyangel/nugget/item/ModToolTiers.java | 18 +- .../sillyangel/nugget/sound/ModSounds.java | 16 +- .../nugget/trim/ModTrimMaterials.java | 12 +- .../nugget/trim/ModTrimPatterns.java | 12 +- .../nugget/util/ModItemProperites.java | 2 +- .../sillyangel/nugget/util/ModTags.java | 56 +-- .../nugget/worldgen/ModBiomeModifiers.java | 8 +- .../worldgen/ModConfiguredFeatures.java | 10 +- .../nugget/worldgen/ModOrePlacement.java | 2 +- .../nugget/worldgen/ModPlacedFeatures.java | 8 +- .../java/xyz/sillyangel/nugget/Config.java | 63 ---- .../xyz/sillyangel/nugget/item/ModItems.java | 97 ----- src/main/resources/META-INF/mods.toml | 6 +- 43 files changed, 1023 insertions(+), 1174 deletions(-) delete mode 100644 CHANGELOG.MD delete mode 100644 src/generated/resources/.cache/0f01e36c8c3e714f07da00bbe50a17425fd9bc5d delete mode 100644 src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 delete mode 100644 src/generated/resources/.cache/2a6e80b4e4362196170dd4ee2a3d8e7f56f9a0a0 delete mode 100644 src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d delete mode 100644 src/generated/resources/.cache/670693f4e9f75e384665a60f155b7d94dfc51f73 delete mode 100644 src/generated/resources/.cache/8273965882b13bc067ed62dddc852c7100e3fe85 delete mode 100644 src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e create mode 100644 src/main/java/dev/sillyangel/nugget/Config.java rename src/main/java/{xyz => dev}/sillyangel/nugget/NuggetMod.java (51%) rename src/main/java/{xyz => dev}/sillyangel/nugget/block/ModBlocks.java (76%) rename src/main/java/{xyz => dev}/sillyangel/nugget/datagen/DataGenerators.java (92%) rename src/main/java/{xyz => dev}/sillyangel/nugget/datagen/ModBlockLootTableProvider.java (88%) rename src/main/java/{xyz => dev}/sillyangel/nugget/datagen/ModBlockStateProvider.java (85%) rename src/main/java/{xyz => dev}/sillyangel/nugget/datagen/ModBlockTagProvider.java (85%) rename src/main/java/{xyz => dev}/sillyangel/nugget/datagen/ModDatapackEntries.java (75%) rename src/main/java/{xyz => dev}/sillyangel/nugget/datagen/ModItemModelProvider.java (82%) rename src/main/java/{xyz => dev}/sillyangel/nugget/datagen/ModItemTagProvider.java (61%) rename src/main/java/{xyz => dev}/sillyangel/nugget/datagen/ModRecipeProvider.java (94%) rename src/main/java/{xyz => dev}/sillyangel/nugget/item/ModArmorMaterials.java (51%) rename src/main/java/{xyz => dev}/sillyangel/nugget/item/ModCreativeModeTabs.java (88%) rename src/main/java/{xyz => dev}/sillyangel/nugget/item/ModFoodProperties.java (83%) create mode 100644 src/main/java/dev/sillyangel/nugget/item/ModItems.java rename src/main/java/{xyz => dev}/sillyangel/nugget/item/ModToolTiers.java (73%) rename src/main/java/{xyz => dev}/sillyangel/nugget/sound/ModSounds.java (67%) rename src/main/java/{xyz => dev}/sillyangel/nugget/trim/ModTrimMaterials.java (78%) rename src/main/java/{xyz => dev}/sillyangel/nugget/trim/ModTrimPatterns.java (78%) rename src/main/java/{xyz => dev}/sillyangel/nugget/util/ModItemProperites.java (67%) rename src/main/java/{xyz => dev}/sillyangel/nugget/util/ModTags.java (70%) rename src/main/java/{xyz => dev}/sillyangel/nugget/worldgen/ModBiomeModifiers.java (86%) rename src/main/java/{xyz => dev}/sillyangel/nugget/worldgen/ModConfiguredFeatures.java (89%) rename src/main/java/{xyz => dev}/sillyangel/nugget/worldgen/ModOrePlacement.java (94%) rename src/main/java/{xyz => dev}/sillyangel/nugget/worldgen/ModPlacedFeatures.java (85%) delete mode 100644 src/main/java/xyz/sillyangel/nugget/Config.java delete mode 100644 src/main/java/xyz/sillyangel/nugget/item/ModItems.java diff --git a/CHANGELOG.MD b/CHANGELOG.MD deleted file mode 100644 index 47492a4..0000000 --- a/CHANGELOG.MD +++ /dev/null @@ -1,22 +0,0 @@ -# Changelog - - -## 1.1.1 - - -## 1.10 -- added tools, and sword -- datagen for no more json files* -- new textures for the tools -- adds horse armor, and player armor - -* kinda - -## 1.02 -adds ores both deepslate and regular and it drops you can smelt the raw nugget it drops into nuggets and makes it so you can create raw nugget blocks and nugget block -## 1.01 -add two new blocks -- raw nugget block -- nugget block -## 1.00 -version 1 adds the nugget item diff --git a/build.gradle b/build.gradle index c7b7875..1dd69a1 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ plugins { id 'eclipse' id 'idea' id 'maven-publish' - id 'net.minecraftforge.gradle' version '[6.0.24,6.2)' + id 'net.minecraftforge.gradle' version '[6.0.46,6.2)' id 'org.parchmentmc.librarian.forgegradle' version '1.+' } @@ -23,17 +23,13 @@ minecraft { // 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 - - // Tell FG to not automtically create the reobf tasks, as we now use Official mappings at runtime, If you don't use them at dev time then you'll have to fix your reobf yourself. + + // Forge 1.20.6 and newer use official mappings at runtime, so we shouldn't reobf from official to SRG reobf = false // 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. @@ -51,8 +47,7 @@ minecraft { // 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. + // This property enables access transformers for use in development, 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. @@ -66,17 +61,18 @@ minecraft { configureEach { workingDirectory project.file('run') - // Recommended logging data for a userdev environment - // The markers can be added/remove as needed separated by commas. + // Optional additional logging. 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' +// 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' + + // Recommended for development - enables more descriptive errors at the cost of slower startup and registration. + property 'eventbus.api.strictRuntimeChecks', 'true' + +// arg "-mixin.config=${mod_id}.mixins.json" } client { @@ -111,7 +107,26 @@ sourceSets.main.resources { srcDir 'src/generated/resources' } repositories { // Put repositories for dependencies here - // ForgeGradle automatically adds the Forge maven and Maven Central for you + mavenCentral() + maven { + name = 'Forge' + url = 'https://maven.minecraftforge.net' + } + maven { + name = 'Minecraft libraries' + url = 'https://libraries.minecraft.net' + } + exclusiveContent { + forRepository { + maven { + name = 'Sponge' + url = 'https://repo.spongepowered.org/repository/maven-public' + } + } + filter { + includeGroupAndSubgroups('org.spongepowered') + } + } // 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 @@ -128,6 +143,11 @@ dependencies { // 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}" + // Forge 1.21.6+ uses EventBus 7, which shifts most of its runtime validation to compile-time via an annotation processor + // to improve performance in production environments. This line is required to enable said compile-time validation + // in your development environment, helping you catch issues early. + annotationProcessor 'net.minecraftforge:eventbus-validator:7.0-beta.12' + // Example mod dependency with JEI // The JEI API is declared for compile time use, while the full JEI artifact is used at runtime // compileOnly "mezz.jei:jei-${mc_version}-common-api:${jei_version}" @@ -142,16 +162,13 @@ dependencies { // For more info: // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html // http://www.gradle.org/docs/current/userguide/dependency_management.html - - // Hack fix for now, force jopt-simple to be exactly 5.0.4 because Mojang ships that version, but some transitive dependencies request 6.0+ - implementation('net.sf.jopt-simple:jopt-simple:5.0.4') { version { strictly '5.0.4' } } } // 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 { +tasks.named('processResources', ProcessResources) { var replaceProperties = [ minecraft_version: minecraft_version, minecraft_version_range: minecraft_version_range, forge_version: forge_version, forge_version_range: forge_version_range, @@ -167,7 +184,7 @@ tasks.named('processResources', ProcessResources).configure { } // Example for how to get properties into the manifest for reading at runtime. -tasks.named('jar', Jar).configure { +tasks.named('jar', Jar) { manifest { attributes([ 'Specification-Title' : mod_id, @@ -177,10 +194,8 @@ tasks.named('jar', Jar).configure { 'Implementation-Version' : project.jar.archiveVersion, 'Implementation-Vendor' : mod_authors ]) +// attributes['MixinConfigs'] = "${mod_id}.mixins.json" } - archiveBaseName.set(mod_id) // Base name: mod ID - archiveVersion.set("${mod_version}-${minecraft_version}") // Version and Minecraft version - archiveClassifier.set('') // No additional classifier } // Example configuration to allow publishing using the maven-publish plugin @@ -201,6 +216,9 @@ tasks.withType(JavaCompile).configureEach { options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation } +// IntelliJ no longer downloads javadocs and sources by default, this tells Gradle to force IntelliJ to do it. +idea.module { downloadJavadoc = downloadSources = true } + eclipse { // Run everytime eclipse builds the code //autoBuildTasks genEclipseRuns @@ -208,8 +226,7 @@ eclipse { synchronizationTasks 'genEclipseRuns' } -// Merge the resources and classes into the same directory. -// This is done because java expects modules to be in a single directory. +// Merge the resources and classes into the same directory, because Java expects modules to be in a single directory. // And if we have it in multiple we have to do performance intensive hacks like having the UnionFileSystem // This will eventually be migrated to ForgeGradle so modders don't need to manually do it. But that is later. sourceSets.each { diff --git a/gradle.properties b/gradle.properties index a4e1bdb..954bd71 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,23 +1,30 @@ -# Sets default memory used for gradle commands. Can be overridden by user or command line properties. +# 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.jvmargs=-Xmx5G org.gradle.daemon=false +# In the case that Gradle needs to fork to recompile, this will set the memory for that process. +systemProp.net.minecraftforge.gradle.repo.recompile.fork=true +systemProp.net.minecraftforge.gradle.repo.recompile.fork.args=-Xmx5G + +# Opts-out of ForgeGradle automatically adding mavenCentral(), Forge's maven and MC libs maven to the repositories block +systemProp.net.minecraftforge.gradle.repo.attach=false + ## Environment Properties # The Minecraft version must agree with the Forge version to get a valid artifact -minecraft_version=1.21.3 +minecraft_version=1.21.11 # 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.21,1.22) +minecraft_version_range=[1.21.11,1.22) # The Forge version must agree with the Minecraft version to get a valid artifact -forge_version=53.0.25 +forge_version=61.0.3 # The Forge version range can use any version of Forge as bounds or match the loader version range -forge_version_range=[0,) +forge_version_range=[61,) # The loader version range can only use the major version of Forge/FML as bounds -loader_version_range=[0,) +loader_version_range=[61,) # 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. @@ -35,7 +42,7 @@ loader_version_range=[0,) mapping_channel=parchment # The mapping version to query from the mapping channel. # This must match the format required by the mapping channel. -mapping_version=1.21-2024.11.10-1.21.3 +mapping_version=2025.12.20-1.21.11 ## Mod Properties @@ -52,7 +59,7 @@ mod_version=1.2.2 # 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=xyz.sillyangel.nugget +mod_group_id=dev.sillyangel.nugget # The authors of the mod. This is a simple text string that is used for display purposes in the mod list. mod_authors=sillyangel # The description of the mod. This is a simple multiline text string that is used for display purposes in the mod list. diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bb6c191..e18bc25 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index aeb74cb..1aa94a4 100644 --- a/gradlew +++ b/gradlew @@ -83,7 +83,8 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -130,10 +131,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. @@ -141,7 +145,7 @@ 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 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -149,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -198,11 +202,11 @@ fi # 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"' -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/gradlew.bat b/gradlew.bat index 6689b85..7101f8e 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -43,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/run-data/logs/debug.log b/run-data/logs/debug.log index 2f0f57f..ca1bab1 100644 --- a/run-data/logs/debug.log +++ b/run-data/logs/debug.log @@ -307,8 +307,8 @@ [05Jan2025 22:08:43.805] [main/DEBUG] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Creating FMLModContainer instance for net.minecraftforge.common.ForgeMod [05Jan2025 22:08:43.805] [main/DEBUG] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Loaded modclass net.minecraftforge.forge/net.minecraftforge.common.ForgeMod with TransformingClassLoader[TRANSFORMER]@155829656 [05Jan2025 22:08:43.805] [main/DEBUG] [net.minecraftforge.fml.javafmlmod.FMLJavaModLanguageProvider/LOADING]: Loading FMLModContainer from classloader TransformingClassLoader[TRANSFORMER]@155829656 - got SecureModuleClassLoader[LAYER PLUGIN]@92941132 -[05Jan2025 22:08:43.805] [main/DEBUG] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Creating FMLModContainer instance for xyz.sillyangel.nugget.NuggetMod -[05Jan2025 22:08:43.805] [main/DEBUG] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Loaded modclass nuggetmod/xyz.sillyangel.nugget.NuggetMod with TransformingClassLoader[TRANSFORMER]@155829656 +[05Jan2025 22:08:43.805] [main/DEBUG] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Creating FMLModContainer instance for dev.sillyangel.nugget.NuggetMod +[05Jan2025 22:08:43.805] [main/DEBUG] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Loaded modclass nuggetmod/dev.sillyangel.nugget.NuggetMod with TransformingClassLoader[TRANSFORMER]@155829656 [05Jan2025 22:08:43.886] [modloading-worker-0/DEBUG] [net.minecraftforge.versions.forge.ForgeVersion/CORE]: Forge Version package package net.minecraftforge.versions.forge, Forge, version 0.0 from TransformingClassLoader[TRANSFORMER]@155829656 [05Jan2025 22:08:43.886] [modloading-worker-0/DEBUG] [net.minecraftforge.versions.forge.ForgeVersion/CORE]: Found Forge version 53.0.25 [05Jan2025 22:08:43.886] [modloading-worker-0/DEBUG] [net.minecraftforge.versions.forge.ForgeVersion/CORE]: Found Forge spec 0.0 @@ -320,10 +320,10 @@ [05Jan2025 22:08:43.886] [modloading-worker-0/INFO] [net.minecraftforge.common.MinecraftForge/FORGE]: MinecraftForge v53.0.25 Initialized [05Jan2025 22:08:43.965] [modloading-worker-0/DEBUG] [net.minecraftforge.fml.config.ConfigTracker/CONFIG]: Config file nuggetmod-common.toml for nuggetmod tracking [05Jan2025 22:08:43.998] [modloading-worker-0/DEBUG] [net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber/LOADING]: Attempting to inject @EventBusSubscriber classes into the eventbus for nuggetmod -[05Jan2025 22:08:43.998] [modloading-worker-0/DEBUG] [net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber/LOADING]: Auto-subscribing xyz.sillyangel.nugget.Config to MOD +[05Jan2025 22:08:43.998] [modloading-worker-0/DEBUG] [net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber/LOADING]: Auto-subscribing dev.sillyangel.nugget.Config to MOD [05Jan2025 22:08:44.013] [modloading-worker-0/INFO] [net.minecraftforge.common.ForgeMod/FORGEMOD]: Opening jdk.naming.dns/com.sun.jndi.dns to java.naming -[05Jan2025 22:08:44.029] [modloading-worker-0/DEBUG] [net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber/LOADING]: Auto-subscribing xyz.sillyangel.nugget.datagen.DataGenerators to MOD -[05Jan2025 22:08:44.029] [modloading-worker-0/DEBUG] [net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber/LOADING]: Auto-subscribing xyz.sillyangel.nugget.NuggetMod$ClientModEvents to MOD +[05Jan2025 22:08:44.029] [modloading-worker-0/DEBUG] [net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber/LOADING]: Auto-subscribing datagen.dev.sillyangel.nugget.DataGenerators to MOD +[05Jan2025 22:08:44.029] [modloading-worker-0/DEBUG] [net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber/LOADING]: Auto-subscribing dev.sillyangel.nugget.NuggetMod$ClientModEvents to MOD [05Jan2025 22:08:44.061] [modloading-worker-0/DEBUG] [io.netty.util.internal.PlatformDependent0/]: -Dio.netty.noUnsafe: false [05Jan2025 22:08:44.061] [modloading-worker-0/DEBUG] [io.netty.util.internal.PlatformDependent0/]: Java version: 21 [05Jan2025 22:08:44.061] [modloading-worker-0/DEBUG] [io.netty.util.internal.PlatformDependent0/]: sun.misc.Unsafe.theUnsafe: available diff --git a/settings.gradle b/settings.gradle index 137f6d2..ec0814f 100644 --- a/settings.gradle +++ b/settings.gradle @@ -5,10 +5,13 @@ pluginManagement { name = 'MinecraftForge' url = 'https://maven.minecraftforge.net/' } - maven { url = 'https://maven.parchmentmc.org' } + maven { + name = 'ParchmentMC' + url = 'https://maven.parchmentmc.org' + } } } plugins { - id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0' -} \ No newline at end of file + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.10.0' +} diff --git a/src/generated/resources/.cache/0f01e36c8c3e714f07da00bbe50a17425fd9bc5d b/src/generated/resources/.cache/0f01e36c8c3e714f07da00bbe50a17425fd9bc5d deleted file mode 100644 index f3f4ca5..0000000 --- a/src/generated/resources/.cache/0f01e36c8c3e714f07da00bbe50a17425fd9bc5d +++ /dev/null @@ -1,6 +0,0 @@ -// 1.21.3 2025-01-05T20:56:27.110625 Tags for minecraft:item mod id nuggetmod -4dd3e16112d5950861571bb8b5212983e5192dfc data/minecraft/tags/item/trimmable_armor.json -bb7be5aa0b582860d2d8dd7a0f2115ac4dc842a9 data/minecraft/tags/item/trim_materials.json -ab6bd31a8063a99913c4a6fc41bde37ff0564389 data/minecraft/tags/item/trim_templates.json -bb7be5aa0b582860d2d8dd7a0f2115ac4dc842a9 data/nuggetmod/tags/item/nugget_repairs.json -562be55fb606ffa455100bd2a6942846dcd124cb data/nuggetmod/tags/item/transformable_items.json diff --git a/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 b/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 deleted file mode 100644 index c763232..0000000 --- a/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 +++ /dev/null @@ -1,6 +0,0 @@ -// 1.21.3 2025-01-05T20:56:27.1418921 Registries -53aea7bfe12c9e17903617fdc8946ce53057c9da data/nuggetmod/forge/biome_modifier/add_nugget_ore.json -12edbe7dddaf2b8379bdf3bc1f3552c83a86e3b2 data/nuggetmod/trim_material/nugget.json -c26c02f523d403aa4352b30b1a97a95a69a4d97c data/nuggetmod/trim_pattern/nugget.json -8b0873c1ad86c61c7c0dfd0749909cc9982639de data/nuggetmod/worldgen/configured_feature/nugget_ore.json -c86e299467433ed0c44ce94a9a75e4352f8ce6ca data/nuggetmod/worldgen/placed_feature/nugget_ore_placed.json diff --git a/src/generated/resources/.cache/2a6e80b4e4362196170dd4ee2a3d8e7f56f9a0a0 b/src/generated/resources/.cache/2a6e80b4e4362196170dd4ee2a3d8e7f56f9a0a0 deleted file mode 100644 index 02f228f..0000000 --- a/src/generated/resources/.cache/2a6e80b4e4362196170dd4ee2a3d8e7f56f9a0a0 +++ /dev/null @@ -1,5 +0,0 @@ -// 1.21.3 2025-01-05T20:56:27.127889 Tags for minecraft:block mod id nuggetmod -265fffb09f55ddbd810e4aca08e95427b6f8abb8 data/minecraft/tags/block/mineable/pickaxe.json -d3afbade112106a4f7dba97fc08964398669700a data/minecraft/tags/block/needs_stone_tool.json -768d28c36c35fda7aa9d014ae9d9ce7ba23fdfb8 data/nuggetmod/tags/block/incorrect_for_nugget_tool.json -9c48de48f12ecaae54ddd4a48ea1ac229e0bcaa4 data/nuggetmod/tags/block/needs_nugget_tool.json diff --git a/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d deleted file mode 100644 index 4607197..0000000 --- a/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d +++ /dev/null @@ -1,5 +0,0 @@ -// 1.21.3 2025-01-05T20:56:27.127889 Loot Tables -74a43d938ccd280fff25bd66ec0f55a3e2c30ad0 data/nuggetmod/loot_table/blocks/nugget_block.json -206de236ad19cf2d06cf21b0f282e5b64bd5918d data/nuggetmod/loot_table/blocks/nugget_deepslate_ore.json -d65584c1286a06f15f88db5682372d78e8e0ebf7 data/nuggetmod/loot_table/blocks/nugget_ore.json -2b4a937626ec0aa515a8a78663ce0f6142b843a6 data/nuggetmod/loot_table/blocks/raw_nugget_block.json diff --git a/src/generated/resources/.cache/670693f4e9f75e384665a60f155b7d94dfc51f73 b/src/generated/resources/.cache/670693f4e9f75e384665a60f155b7d94dfc51f73 deleted file mode 100644 index 0f28118..0000000 --- a/src/generated/resources/.cache/670693f4e9f75e384665a60f155b7d94dfc51f73 +++ /dev/null @@ -1,55 +0,0 @@ -// 1.21.3 2025-01-05T20:56:27.110625 Item Models: nuggetmod -90b22d61432e35fb68e2232a3eb76e15d2a77d89 assets/nuggetmod/models/item/nugget.json -b8f9c1135f1af8d77201d51866966ba73f3dbbfc assets/nuggetmod/models/item/nugget_armor_trim_smithing_template.json -cac221f8a7659366628c3b429c22ebd27f5adadd assets/nuggetmod/models/item/nugget_axe.json -dbadf09a9e221788b2cef71600701e4400e7a5ac assets/nuggetmod/models/item/nugget_boots.json -7dca863c633a328b682607342061c24fa359317c assets/nuggetmod/models/item/nugget_boots_amethyst_trim.json -1dacd5f685c47004a55cbae6d955b2e710b3f07d assets/nuggetmod/models/item/nugget_boots_copper_trim.json -d1de5dad49d95556fa2fab70a7890d878200beea assets/nuggetmod/models/item/nugget_boots_diamond_trim.json -ae67748e68ad7bbcec748b6ee7f1f4791660ce8e assets/nuggetmod/models/item/nugget_boots_emerald_trim.json -a52575c6328635ee70967a31244336ae5a5aa669 assets/nuggetmod/models/item/nugget_boots_gold_trim.json -dcb69986d03a024a176d38dfcb495362ffeac193 assets/nuggetmod/models/item/nugget_boots_iron_trim.json -0ff4a87f97bbaaa1c4124fc43df140d29082a383 assets/nuggetmod/models/item/nugget_boots_lapis_trim.json -cba310d5939725d84f409fb6ea91432495da218b assets/nuggetmod/models/item/nugget_boots_netherite_trim.json -6b56d9ec6ca6d379030db32774c9a725e76c7005 assets/nuggetmod/models/item/nugget_boots_quartz_trim.json -af0f965c4b451cecbbc056ba5019bcc44ab9ec6f assets/nuggetmod/models/item/nugget_boots_redstone_trim.json -277e491adbc77bbf30fb263b1c6b14951f6cd84a assets/nuggetmod/models/item/nugget_chestplate.json -afa48d58bfe8a41e52947389eadacf1d54aa201e assets/nuggetmod/models/item/nugget_chestplate_amethyst_trim.json -34db4371091135f3d8ea5f9bf60472ac120614d2 assets/nuggetmod/models/item/nugget_chestplate_copper_trim.json -e0a4e96ecac9b8664d7b28332ad40b3a976d80d5 assets/nuggetmod/models/item/nugget_chestplate_diamond_trim.json -99b4bbeb361c600e1d3136857084094a17e83f89 assets/nuggetmod/models/item/nugget_chestplate_emerald_trim.json -1cd1064b3355e6da5b83cb569202962534cea5f1 assets/nuggetmod/models/item/nugget_chestplate_gold_trim.json -01f17a408f386d0a9658d5efd184e187616dd40e assets/nuggetmod/models/item/nugget_chestplate_iron_trim.json -01ee5bbd07e896aca474564bb64720a97a5f1146 assets/nuggetmod/models/item/nugget_chestplate_lapis_trim.json -9fdc651171a846a9c2815002709a33f0919821b2 assets/nuggetmod/models/item/nugget_chestplate_netherite_trim.json -2ab1f9773c249568d33a78622d39b9baf7eb193b assets/nuggetmod/models/item/nugget_chestplate_quartz_trim.json -15620acb506fa42a1d914768a2d4fca28a1ad4c7 assets/nuggetmod/models/item/nugget_chestplate_redstone_trim.json -55eac09e1c7132d02b0aac04c3a8ed8b1777833a assets/nuggetmod/models/item/nugget_helmet.json -15d62a07a0a79876c483ed4e9c60f3e474cc8ad0 assets/nuggetmod/models/item/nugget_helmet_amethyst_trim.json -000fb83913689a98c5973f78e51219cd9b646ceb assets/nuggetmod/models/item/nugget_helmet_copper_trim.json -0d5e6916288fb5a4bca41d87e1f6f02c99300032 assets/nuggetmod/models/item/nugget_helmet_diamond_trim.json -ee78e385f9e4ab937298a5e2ad81ebe75a81cb45 assets/nuggetmod/models/item/nugget_helmet_emerald_trim.json -1283c96f9f373f7657a8188b69107430d658c51b assets/nuggetmod/models/item/nugget_helmet_gold_trim.json -f9e9efc27bcaad6628e0f2bd73bfdb41ed8490d3 assets/nuggetmod/models/item/nugget_helmet_iron_trim.json -7e6b4feb55d2e5ddf35ac9a47b2ad2dadba8a0aa assets/nuggetmod/models/item/nugget_helmet_lapis_trim.json -032d8a3a745bf6b2931609f60073b527a9e304c7 assets/nuggetmod/models/item/nugget_helmet_netherite_trim.json -82fc614cc45ec6d645b943a390d630102f332a59 assets/nuggetmod/models/item/nugget_helmet_quartz_trim.json -62a7de8cca1d782c0f8071f66fe9adc90d637228 assets/nuggetmod/models/item/nugget_helmet_redstone_trim.json -cc6e0d754901f7397916b947124acf6ba8467153 assets/nuggetmod/models/item/nugget_hoe.json -585ab18ac9b18eff5dd487a2c30c3448915dd5cb assets/nuggetmod/models/item/nugget_horse_armor.json -33af7bddeab67677dc62cd5e92d5b8973b24106b assets/nuggetmod/models/item/nugget_leggings.json -3e5b37dd9163b929d93012d11d2ef7ec968606da assets/nuggetmod/models/item/nugget_leggings_amethyst_trim.json -3a0993a40e57bfed0b2bd9818ea191b8a779b30b assets/nuggetmod/models/item/nugget_leggings_copper_trim.json -3917c35fd1454de92ae457b1362f98f07a8b8721 assets/nuggetmod/models/item/nugget_leggings_diamond_trim.json -93da5f00ac4604464454ca88d23634974f2a904a assets/nuggetmod/models/item/nugget_leggings_emerald_trim.json -f2b8f7782a1248c2e8de7eeb981a0e7abcf5cc23 assets/nuggetmod/models/item/nugget_leggings_gold_trim.json -c52faa339653807513edd9c61b99e9311df33e30 assets/nuggetmod/models/item/nugget_leggings_iron_trim.json -6fe0d511015bb76193f85d598a2db9a73f15c5a6 assets/nuggetmod/models/item/nugget_leggings_lapis_trim.json -597e2fb3857aeb6c2a7b4c464c0e2d91b13581a0 assets/nuggetmod/models/item/nugget_leggings_netherite_trim.json -d3c9108105a1732366550c88e524fd2ae4a15c7a assets/nuggetmod/models/item/nugget_leggings_quartz_trim.json -d5eb4a552e79ff6bfe770e092abfb48e88e58f06 assets/nuggetmod/models/item/nugget_leggings_redstone_trim.json -ee757b7f51aa5703ac735ac748f433503c4f2596 assets/nuggetmod/models/item/nugget_music_disc.json -1453d89f622ad5616505f248996b1715b196af76 assets/nuggetmod/models/item/nugget_pickaxe.json -f67a964a8a74c61df4d090dc5b250ad03bb16d8f assets/nuggetmod/models/item/nugget_shovel.json -dcc1dd8bb95c5c088212a9584d952a11ac2a840d assets/nuggetmod/models/item/nugget_sword.json -762606d79e485c8a5e4447e8a1236bee89185245 assets/nuggetmod/models/item/raw_nugget.json diff --git a/src/generated/resources/.cache/8273965882b13bc067ed62dddc852c7100e3fe85 b/src/generated/resources/.cache/8273965882b13bc067ed62dddc852c7100e3fe85 deleted file mode 100644 index bdb69dc..0000000 --- a/src/generated/resources/.cache/8273965882b13bc067ed62dddc852c7100e3fe85 +++ /dev/null @@ -1,13 +0,0 @@ -// 1.21.3 2025-01-05T20:56:27.127889 Block States: nuggetmod -e458b67af79198beb28149bb003b81fd70269977 assets/nuggetmod/blockstates/nugget_block.json -878193901a69171263432147c8d69dc3ad6a3329 assets/nuggetmod/blockstates/nugget_deepslate_ore.json -97b7f829a5952c457a7bd71a23fd2e40c9e41afd assets/nuggetmod/blockstates/nugget_ore.json -fc3b3199be08abb9ba378b6500ae96db0336a2ac assets/nuggetmod/blockstates/raw_nugget_block.json -5cd8b360f3c316bc790a0a08cca2902f5494ecb1 assets/nuggetmod/models/block/nugget_block.json -04a6c3905fc9bebb1701de7bf870efea11648a0e assets/nuggetmod/models/block/nugget_deepslate_ore.json -d8685b96ce2399042e685f5a0d52cc6f93aa2f7c assets/nuggetmod/models/block/nugget_ore.json -22ddcb7a66f04ae207af491a5e9264556726fec1 assets/nuggetmod/models/block/raw_nugget_block.json -87d953ce0211f8d1ae9e2f0411c38e6a937db408 assets/nuggetmod/models/item/nugget_block.json -1cbd017c90351ede4f571a9e6efd9b78640fed67 assets/nuggetmod/models/item/nugget_deepslate_ore.json -e8d9aff343954c5f248feb0b5fda5d9719aff29e assets/nuggetmod/models/item/nugget_ore.json -54f4c1e65c7687038adaf302a6471a1591ec2c2e assets/nuggetmod/models/item/raw_nugget_block.json diff --git a/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e deleted file mode 100644 index fe7a529..0000000 --- a/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ /dev/null @@ -1,41 +0,0 @@ -// 1.21.3 2025-01-05T20:56:27.127889 Recipes -0fd5b77716dc45e332dc36b7f60aed900e725668 data/minecraft/advancement/recipes/misc/nugget_armor_trim_smithing_template_smithing_trim.json -eee047ea671dd65353f1d8da201bc2436d4df8ce data/minecraft/recipe/nugget_armor_trim_smithing_template_smithing_trim.json -1c4efbad060c0d91ce6e6c1cb6d1d1669bbcc6b4 data/nuggetmod/advancement/recipes/combat/nugget_boots.json -588a665982f97f016a8945b507f6a03d310f4090 data/nuggetmod/advancement/recipes/combat/nugget_chestplate.json -63d4a98bae280da5308f5011f4dce19970e727f9 data/nuggetmod/advancement/recipes/combat/nugget_helmet.json -5fd0412d9575823d882ec6e844021f2bdf83dc7c data/nuggetmod/advancement/recipes/combat/nugget_leggings.json -587bf7befb4b1be77e7002038b9faf0eb5bb4ce5 data/nuggetmod/advancement/recipes/combat/nugget_sword.json -39a320d3e238f524a92dae1eaa1c60d0e45ba296 data/nuggetmod/advancement/recipes/misc/nugget.json -8160ae7d8117c0cc293fcd40e22d1072c16ca478 data/nuggetmod/advancement/recipes/misc/nugget_block.json -ebf761f6dad07dac9f3ac9f8732d291cf7930611 data/nuggetmod/advancement/recipes/misc/nugget_from_blasting_nugget_deepslate_ore.json -e10188670de3a7a815f73a66fc5f4e92a648b51e data/nuggetmod/advancement/recipes/misc/nugget_from_blasting_nugget_ore.json -6138abcf020eb5235f574a65048b88a03b8dc057 data/nuggetmod/advancement/recipes/misc/nugget_from_blasting_raw_nugget.json -16fc56222bdb61afa3618038ee189f405fd20922 data/nuggetmod/advancement/recipes/misc/nugget_from_smelting_nugget_deepslate_ore.json -7b9dcb92c1af9c1982292c1efd6b4fb27513b3f5 data/nuggetmod/advancement/recipes/misc/nugget_from_smelting_nugget_ore.json -762af010e4f2c6dbf4b54f5f7c4575f28b47c524 data/nuggetmod/advancement/recipes/misc/nugget_from_smelting_raw_nugget.json -59e41b4b30c51f225ccb673f401839ec7e77fe20 data/nuggetmod/advancement/recipes/misc/raw_nugget.json -0eac4876a225ba434ebefcecb2d9a3d5b1af5cc3 data/nuggetmod/advancement/recipes/misc/raw_nugget_block.json -a159ddd57f6c263d4862f5ee479f3df3595379d9 data/nuggetmod/advancement/recipes/tools/nugget_axe.json -1889633531251f9d32df839f13041a7839569079 data/nuggetmod/advancement/recipes/tools/nugget_hoe.json -e6dbb4576802c7009518fe2bc4dbe541f16b6687 data/nuggetmod/advancement/recipes/tools/nugget_pickaxe.json -f63988753316f6848707a1bebb9004bff2f6d5e4 data/nuggetmod/advancement/recipes/tools/nugget_shovel.json -f18984bdec26f4f333b5ec20dcd09fe9dac918d5 data/nuggetmod/recipe/nugget.json -c7c3acba2cdae39001c97944e1a1eae52005bd21 data/nuggetmod/recipe/nugget_axe.json -aa4ff76dcf9a17b5d90446ef62241e4c7361e4a9 data/nuggetmod/recipe/nugget_block.json -4b405f3dad7ae6b25cf1d2eddfc27ddbe1ce19f6 data/nuggetmod/recipe/nugget_boots.json -b3ce51675061ff49c9b94b9f8d15dc87dcf9d089 data/nuggetmod/recipe/nugget_chestplate.json -be70886b617dbe8cdcb814a4d2f754fe3abbc659 data/nuggetmod/recipe/nugget_from_blasting_nugget_deepslate_ore.json -45cac40fe007c51d5b6e1d197c395975d2655def data/nuggetmod/recipe/nugget_from_blasting_nugget_ore.json -5c3110d1dd220a719fc151cc9067a4a53ee690c5 data/nuggetmod/recipe/nugget_from_blasting_raw_nugget.json -c21c2f595a958d26505b7615307edc354d890505 data/nuggetmod/recipe/nugget_from_smelting_nugget_deepslate_ore.json -33c1f170f1bb2e409858a4953b957abf9c3de9a1 data/nuggetmod/recipe/nugget_from_smelting_nugget_ore.json -731c7b164832de8e43bf6e9f900026a43ce5ee1a data/nuggetmod/recipe/nugget_from_smelting_raw_nugget.json -421bd212f8c4995d52f9818aa393a18003442ffc data/nuggetmod/recipe/nugget_helmet.json -c833522c310026665d6aa35a7d356f977e08b500 data/nuggetmod/recipe/nugget_hoe.json -10dbf3cb9b95e5bf98b10b7f2c68c24fb6fe0404 data/nuggetmod/recipe/nugget_leggings.json -dc1605410ae247b2a5ee0f94c3914b3c8a6f01a2 data/nuggetmod/recipe/nugget_pickaxe.json -9ef92db13ca907ab529a954bf53fe21e2fdd65c3 data/nuggetmod/recipe/nugget_shovel.json -9a9aa6724cc4ccc22c3cf0f7fb52b59e91e47215 data/nuggetmod/recipe/nugget_sword.json -4788404672bb103c1ac8572be4e1d17db06c31c1 data/nuggetmod/recipe/raw_nugget.json -73fcf373c40d2d9c3e8e5d6ccacbac0f4a2efa55 data/nuggetmod/recipe/raw_nugget_block.json diff --git a/src/main/java/dev/sillyangel/nugget/Config.java b/src/main/java/dev/sillyangel/nugget/Config.java new file mode 100644 index 0000000..c11aa96 --- /dev/null +++ b/src/main/java/dev/sillyangel/nugget/Config.java @@ -0,0 +1,37 @@ +package dev.sillyangel.nugget; + +import net.minecraft.resources.Identifier; +import net.minecraft.world.item.Item; +import net.minecraftforge.common.ForgeConfigSpec; +import net.minecraftforge.eventbus.api.listener.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.config.ModConfigEvent; +import net.minecraftforge.registries.ForgeRegistries; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +// An example config class. This is not required, but it's a good idea to have one to keep your config organized. +// Demonstrates how to use Forge's config APIs +@Mod.EventBusSubscriber(modid = NuggetMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class Config +{ + private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + + static final ForgeConfigSpec SPEC = BUILDER.build(); + + public static boolean logDirtBlock; + public static Set items; + + private static boolean validateItemName(final Object obj) + { + return obj instanceof final String itemName && ForgeRegistries.ITEMS.containsKey(Identifier.tryParse(itemName)); + } + + @SubscribeEvent + static void onLoad(final ModConfigEvent event) + { + + } +} \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/NuggetMod.java b/src/main/java/dev/sillyangel/nugget/NuggetMod.java similarity index 51% rename from src/main/java/xyz/sillyangel/nugget/NuggetMod.java rename to src/main/java/dev/sillyangel/nugget/NuggetMod.java index 356a2ad..1a29fb5 100644 --- a/src/main/java/xyz/sillyangel/nugget/NuggetMod.java +++ b/src/main/java/dev/sillyangel/nugget/NuggetMod.java @@ -1,73 +1,66 @@ -package xyz.sillyangel.nugget; - -import com.mojang.logging.LogUtils; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; -import net.minecraftforge.event.server.ServerStartingEvent; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.ModLoadingContext; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.config.ModConfig; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import org.slf4j.Logger; -import xyz.sillyangel.nugget.item.ModCreativeModeTabs; -import xyz.sillyangel.nugget.item.ModItems; -import xyz.sillyangel.nugget.block.ModBlocks; -import xyz.sillyangel.nugget.sound.ModSounds; - -// Very important Comment -// The value here should match an entry in the META-INF/mods.toml file -@Mod(NuggetMod.MOD_ID) -public class NuggetMod { - // Define mod id in a common place for everything to reference - public static final String MOD_ID = "nuggetmod"; - // Directly reference a slf4j logger - public static final Logger LOGGER = LogUtils.getLogger(); - - public NuggetMod() { - IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); - modEventBus.addListener(this::commonSetup); - // Register ourselves for server and other game events we are interested in - MinecraftForge.EVENT_BUS.register(this); - - ModCreativeModeTabs.register(modEventBus); - - ModItems.register(modEventBus); - ModBlocks.register(modEventBus); - - ModSounds.register(modEventBus); - - // Register the item to a creative tab - modEventBus.addListener(this::addCreative); - // Register our mod's ForgeConfigSpec so that Forge can create and load the config file for us - ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, Config.SPEC); - } - - private void commonSetup(final FMLCommonSetupEvent event) { - - } - - // Add the example block item to the building blocks tab - private void addCreative(BuildCreativeModeTabContentsEvent event) { - - } - - // You can use SubscribeEvent and let the Event Bus discover methods to call - @SubscribeEvent - public void onServerStarting(ServerStartingEvent event) { - - } - - // You can use EventBusSubscriber to automatically register all static methods in the class annotated with @SubscribeEvent - @Mod.EventBusSubscriber(modid = MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) - public static class ClientModEvents { - @SubscribeEvent - public static void onClientSetup(FMLClientSetupEvent event) { - - } - } +package dev.sillyangel.nugget; + +import com.mojang.logging.LogUtils; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.eventbus.api.listener.SubscribeEvent; +import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.config.ModConfig; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import org.slf4j.Logger; +import dev.sillyangel.nugget.item.ModCreativeModeTabs; +import dev.sillyangel.nugget.item.ModItems; +import dev.sillyangel.nugget.block.ModBlocks; +import dev.sillyangel.nugget.sound.ModSounds; + +// Very important Comment +// The value here should match an entry in the META-INF/mods.toml file +@Mod(NuggetMod.MOD_ID) +public class NuggetMod { + // Define mod id in a common place for everything to reference + public static final String MOD_ID = "nuggetmod"; + // Directly reference a slf4j logger + public static final Logger LOGGER = LogUtils.getLogger(); + + public NuggetMod(FMLJavaModLoadingContext context) { + var modBusGroup = context.getModBusGroup(); + + // Register the commonSetup method for modloading + FMLCommonSetupEvent.getBus(modBusGroup).addListener(this::commonSetup); + + // Register the Deferred Register to the mod event bus so blocks get registered + ModBlocks.register(modBusGroup); + // Register the Deferred Register to the mod event bus so items get registered + ModItems.register(modBusGroup); + // Register the Deferred Register to the mod event bus so tabs get registered + ModCreativeModeTabs.register(modBusGroup); + // Register the Deferred Register to the mod event bus so sounds get registered + ModSounds.register(modBusGroup); + + // Register the item to a creative tab + BuildCreativeModeTabContentsEvent.BUS.addListener(this::addCreative); + + // Register our mod's ForgeConfigSpec so that Forge can create and load the config file for us + context.registerConfig(ModConfig.Type.COMMON, Config.SPEC); + } + + private void commonSetup(final FMLCommonSetupEvent event) { + + } + + // Add the example block item to the building blocks tab + private void addCreative(BuildCreativeModeTabContentsEvent event) { + + } + + // You can use EventBusSubscriber to automatically register all static methods in the class annotated with @SubscribeEvent + @Mod.EventBusSubscriber(modid = MOD_ID, value = Dist.CLIENT) + public static class ClientModEvents { + @SubscribeEvent + public static void onClientSetup(FMLClientSetupEvent event) { + + } + } } \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/block/ModBlocks.java b/src/main/java/dev/sillyangel/nugget/block/ModBlocks.java similarity index 76% rename from src/main/java/xyz/sillyangel/nugget/block/ModBlocks.java rename to src/main/java/dev/sillyangel/nugget/block/ModBlocks.java index 2f0c25b..35c7004 100644 --- a/src/main/java/xyz/sillyangel/nugget/block/ModBlocks.java +++ b/src/main/java/dev/sillyangel/nugget/block/ModBlocks.java @@ -1,60 +1,60 @@ -package xyz.sillyangel.nugget.block; - -import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; -import xyz.sillyangel.nugget.NuggetMod; -import xyz.sillyangel.nugget.item.ModItems; -import net.minecraft.util.valueproviders.UniformInt; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.DropExperienceBlock; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; - -import java.util.function.Supplier; - -public class ModBlocks { - public static final DeferredRegister BLOCKS = - DeferredRegister.create(ForgeRegistries.BLOCKS, NuggetMod.MOD_ID); - - public static final RegistryObject NUGGET_BLOCK = registerBlock("nugget_block", - () -> new Block(BlockBehaviour.Properties.of() - .setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_block"))) - .strength(4f).requiresCorrectToolForDrops().sound(SoundType.AMETHYST))); - - public static final RegistryObject RAW_NUGGET_BLOCK = registerBlock("raw_nugget_block", - () -> new Block(BlockBehaviour.Properties.of() - .setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "raw_nugget_block"))) - .strength(3f).requiresCorrectToolForDrops())); - // ores - public static final RegistryObject NUGGET_ORE = registerBlock("nugget_ore", - () -> new DropExperienceBlock(UniformInt.of(2, 4), BlockBehaviour.Properties.of() - .setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_ore"))) - .strength(4f).requiresCorrectToolForDrops())); - - public static final RegistryObject NUGGET_DEEPSLATE_ORE = registerBlock("nugget_deepslate_ore", - () -> new DropExperienceBlock(UniformInt.of(2, 4), BlockBehaviour.Properties.of() - .setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_deepslate_ore"))) - .strength(5f).requiresCorrectToolForDrops().sound(SoundType.DEEPSLATE))); - - private static RegistryObject registerBlock(String name, Supplier block) { - RegistryObject toReturn = BLOCKS.register(name, block); - registerBlockItem(name, toReturn); - return toReturn; - } - - private static void registerBlockItem(String name, RegistryObject block) { - ModItems.ITEMS.register(name, () -> new BlockItem(block.get(), new Item.Properties() - .setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, name))))); - } - - public static void register(IEventBus eventBus) { - BLOCKS.register(eventBus); - } +package dev.sillyangel.nugget.block; + +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.Identifier; +import dev.sillyangel.nugget.NuggetMod; +import dev.sillyangel.nugget.item.ModItems; +import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.DropExperienceBlock; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraftforge.eventbus.api.bus.BusGroup; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import java.util.function.Supplier; + +public class ModBlocks { + public static final DeferredRegister BLOCKS = + DeferredRegister.create(ForgeRegistries.BLOCKS, NuggetMod.MOD_ID); + + public static final RegistryObject NUGGET_BLOCK = registerBlock("nugget_block", + () -> new Block(BlockBehaviour.Properties.of() + .setId(ResourceKey.create(Registries.BLOCK, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_block"))) + .strength(4f).requiresCorrectToolForDrops().sound(SoundType.AMETHYST))); + + public static final RegistryObject RAW_NUGGET_BLOCK = registerBlock("raw_nugget_block", + () -> new Block(BlockBehaviour.Properties.of() + .setId(ResourceKey.create(Registries.BLOCK, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "raw_nugget_block"))) + .strength(3f).requiresCorrectToolForDrops())); + // ores + public static final RegistryObject NUGGET_ORE = registerBlock("nugget_ore", + () -> new DropExperienceBlock(UniformInt.of(2, 4), BlockBehaviour.Properties.of() + .setId(ResourceKey.create(Registries.BLOCK, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_ore"))) + .strength(4f).requiresCorrectToolForDrops())); + + public static final RegistryObject NUGGET_DEEPSLATE_ORE = registerBlock("nugget_deepslate_ore", + () -> new DropExperienceBlock(UniformInt.of(2, 4), BlockBehaviour.Properties.of() + .setId(ResourceKey.create(Registries.BLOCK, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_deepslate_ore"))) + .strength(5f).requiresCorrectToolForDrops().sound(SoundType.DEEPSLATE))); + + private static RegistryObject registerBlock(String name, Supplier block) { + RegistryObject toReturn = BLOCKS.register(name, block); + registerBlockItem(name, toReturn); + return toReturn; + } + + private static void registerBlockItem(String name, RegistryObject block) { + ModItems.ITEMS.register(name, () -> new BlockItem(block.get(), new Item.Properties() + .setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, name))))); + } + + public static void register(BusGroup busGroup) { + BLOCKS.register(busGroup); + } } \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/datagen/DataGenerators.java b/src/main/java/dev/sillyangel/nugget/datagen/DataGenerators.java similarity index 92% rename from src/main/java/xyz/sillyangel/nugget/datagen/DataGenerators.java rename to src/main/java/dev/sillyangel/nugget/datagen/DataGenerators.java index 3fad65d..56a9407 100644 --- a/src/main/java/xyz/sillyangel/nugget/datagen/DataGenerators.java +++ b/src/main/java/dev/sillyangel/nugget/datagen/DataGenerators.java @@ -1,41 +1,41 @@ -package xyz.sillyangel.nugget.datagen; - -import xyz.sillyangel.nugget.NuggetMod; -import net.minecraft.core.HolderLookup; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.PackOutput; -import net.minecraft.data.loot.LootTableProvider; -import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; -import net.minecraftforge.common.data.BlockTagsProvider; -import net.minecraftforge.common.data.ExistingFileHelper; -import net.minecraftforge.data.event.GatherDataEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; - -import java.util.Collections; -import java.util.List; -import java.util.concurrent.CompletableFuture; - -@Mod.EventBusSubscriber(modid = NuggetMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) -public class DataGenerators { - @SubscribeEvent - public static void gatherData(GatherDataEvent event) { - DataGenerator generator = event.getGenerator(); - PackOutput packOutput = generator.getPackOutput(); - ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - CompletableFuture lookupProvider = event.getLookupProvider(); - - generator.addProvider(event.includeServer(), new LootTableProvider(packOutput, Collections.emptySet(), - List.of(new LootTableProvider.SubProviderEntry(ModBlockLootTableProvider::new, LootContextParamSets.BLOCK)), lookupProvider)); - generator.addProvider(event.includeServer(), new ModRecipeProvider.Runner(packOutput, lookupProvider)); - - BlockTagsProvider blockTagsProvider = new ModBlockTagProvider(packOutput, lookupProvider, existingFileHelper); - generator.addProvider(event.includeServer(), blockTagsProvider); - generator.addProvider(event.includeServer(), new ModItemTagProvider(packOutput, lookupProvider, blockTagsProvider.contentsGetter(), existingFileHelper)); - - generator.addProvider(event.includeClient(), new ModItemModelProvider(packOutput, existingFileHelper)); - generator.addProvider(event.includeClient(), new ModBlockStateProvider(packOutput, existingFileHelper)); - - generator.addProvider(event.includeServer(), new ModDatapackEntries(packOutput, lookupProvider)); - } +package dev.sillyangel.nugget.datagen; + +import dev.sillyangel.nugget.NuggetMod; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; +import net.minecraft.data.loot.LootTableProvider; +import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; +import net.minecraftforge.common.data.BlockTagsProvider; +import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraftforge.data.event.GatherDataEvent; +import net.minecraftforge.eventbus.api.listener.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import java.util.Collections; +import java.util.List; +import java.util.concurrent.CompletableFuture; + +@Mod.EventBusSubscriber(modid = NuggetMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class DataGenerators { + @SubscribeEvent + public static void gatherData(GatherDataEvent event) { + DataGenerator generator = event.getGenerator(); + PackOutput packOutput = generator.getPackOutput(); + ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); + CompletableFuture lookupProvider = event.getLookupProvider(); + + generator.addProvider(event.includeServer(), new LootTableProvider(packOutput, Collections.emptySet(), + List.of(new LootTableProvider.SubProviderEntry(ModBlockLootTableProvider::new, LootContextParamSets.BLOCK)), lookupProvider)); + generator.addProvider(event.includeServer(), new ModRecipeProvider.Runner(packOutput, lookupProvider)); + + BlockTagsProvider blockTagsProvider = new ModBlockTagProvider(packOutput, lookupProvider, existingFileHelper); + generator.addProvider(event.includeServer(), blockTagsProvider); + generator.addProvider(event.includeServer(), new ModItemTagProvider(packOutput, lookupProvider, blockTagsProvider.contentsGetter(), existingFileHelper)); + + generator.addProvider(event.includeClient(), new ModItemModelProvider(packOutput, existingFileHelper)); + generator.addProvider(event.includeClient(), new ModBlockStateProvider(packOutput, existingFileHelper)); + + generator.addProvider(event.includeServer(), new ModDatapackEntries(packOutput, lookupProvider)); + } } \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/datagen/ModBlockLootTableProvider.java b/src/main/java/dev/sillyangel/nugget/datagen/ModBlockLootTableProvider.java similarity index 88% rename from src/main/java/xyz/sillyangel/nugget/datagen/ModBlockLootTableProvider.java rename to src/main/java/dev/sillyangel/nugget/datagen/ModBlockLootTableProvider.java index b39f52c..88f151a 100644 --- a/src/main/java/xyz/sillyangel/nugget/datagen/ModBlockLootTableProvider.java +++ b/src/main/java/dev/sillyangel/nugget/datagen/ModBlockLootTableProvider.java @@ -1,55 +1,53 @@ -package xyz.sillyangel.nugget.datagen; - -import xyz.sillyangel.nugget.block.ModBlocks; -import xyz.sillyangel.nugget.item.ModItems; -import net.minecraft.core.HolderLookup; -import net.minecraft.core.registries.Registries; -import net.minecraft.data.loot.BlockLootSubProvider; -import net.minecraft.world.flag.FeatureFlags; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.enchantment.Enchantment; -import net.minecraft.world.item.enchantment.Enchantments; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.storage.loot.LootTable; -import net.minecraft.world.level.storage.loot.entries.LootItem; -import net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer; -import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount; -import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction; -import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; -import net.minecraftforge.registries.RegistryObject; - -import java.util.Set; - -public class ModBlockLootTableProvider extends BlockLootSubProvider { - protected ModBlockLootTableProvider(HolderLookup.Provider pRegistries) { - super(Set.of(), FeatureFlags.REGISTRY.allFlags(), pRegistries); - } - - @Override - protected void generate() { - dropSelf(ModBlocks.NUGGET_BLOCK.get()); - dropSelf(ModBlocks.RAW_NUGGET_BLOCK.get()); - - this.add(ModBlocks.NUGGET_ORE.get(), - block -> createOreDrop(ModBlocks.NUGGET_ORE.get(), ModItems.RAW_NUGGET.get())); - this.add(ModBlocks.NUGGET_DEEPSLATE_ORE.get(), - block -> createMultipleOreDrops(ModBlocks.NUGGET_DEEPSLATE_ORE.get(), ModItems.RAW_NUGGET.get(), 2, 6)); - } - - protected LootTable.Builder createMultipleOreDrops(Block pBlock, Item item, float minDrops, float maxDrops) { - HolderLookup.RegistryLookup registrylookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); - return this.createSilkTouchDispatchTable( - pBlock, this.applyExplosionDecay( - pBlock, LootItem.lootTableItem(item) - .apply(SetItemCountFunction.setCount(UniformGenerator.between(minDrops, maxDrops))) - .apply(ApplyBonusCount.addOreBonusCount(registrylookup.getOrThrow(Enchantments.FORTUNE))) - ) - ); - } - - @Override - protected Iterable getKnownBlocks() { - return ModBlocks.BLOCKS.getEntries().stream().map(RegistryObject::get)::iterator; - } +package dev.sillyangel.nugget.datagen; + +import dev.sillyangel.nugget.block.ModBlocks; +import dev.sillyangel.nugget.item.ModItems; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.loot.BlockLootSubProvider; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.storage.loot.LootTable; +import net.minecraft.world.level.storage.loot.entries.LootItem; +import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount; +import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction; +import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; +import net.minecraftforge.registries.RegistryObject; + +import java.util.Set; + +public class ModBlockLootTableProvider extends BlockLootSubProvider { + protected ModBlockLootTableProvider(HolderLookup.Provider pRegistries) { + super(Set.of(), FeatureFlags.REGISTRY.allFlags(), pRegistries); + } + + @Override + protected void generate() { + dropSelf(ModBlocks.NUGGET_BLOCK.get()); + dropSelf(ModBlocks.RAW_NUGGET_BLOCK.get()); + + this.add(ModBlocks.NUGGET_ORE.get(), + block -> createOreDrop(ModBlocks.NUGGET_ORE.get(), ModItems.RAW_NUGGET.get())); + this.add(ModBlocks.NUGGET_DEEPSLATE_ORE.get(), + block -> createMultipleOreDrops(ModBlocks.NUGGET_DEEPSLATE_ORE.get(), ModItems.RAW_NUGGET.get(), 2, 6)); + } + + protected LootTable.Builder createMultipleOreDrops(Block pBlock, Item item, float minDrops, float maxDrops) { + HolderLookup.RegistryLookup registrylookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + return this.createSilkTouchDispatchTable( + pBlock, this.applyExplosionDecay( + pBlock, LootItem.lootTableItem(item) + .apply(SetItemCountFunction.setCount(UniformGenerator.between(minDrops, maxDrops))) + .apply(ApplyBonusCount.addOreBonusCount(registrylookup.getOrThrow(Enchantments.FORTUNE))) + ) + ); + } + + @Override + protected Iterable getKnownBlocks() { + return ModBlocks.BLOCKS.getEntries().stream().map(RegistryObject::get)::iterator; + } } \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/datagen/ModBlockStateProvider.java b/src/main/java/dev/sillyangel/nugget/datagen/ModBlockStateProvider.java similarity index 85% rename from src/main/java/xyz/sillyangel/nugget/datagen/ModBlockStateProvider.java rename to src/main/java/dev/sillyangel/nugget/datagen/ModBlockStateProvider.java index 0cf1045..35a68ef 100644 --- a/src/main/java/xyz/sillyangel/nugget/datagen/ModBlockStateProvider.java +++ b/src/main/java/dev/sillyangel/nugget/datagen/ModBlockStateProvider.java @@ -1,29 +1,29 @@ -package xyz.sillyangel.nugget.datagen; - -import xyz.sillyangel.nugget.NuggetMod; -import xyz.sillyangel.nugget.block.ModBlocks; -import net.minecraft.data.PackOutput; -import net.minecraft.world.level.block.Block; -import net.minecraftforge.client.model.generators.BlockStateProvider; -import net.minecraftforge.common.data.ExistingFileHelper; -import net.minecraftforge.registries.RegistryObject; - -public class ModBlockStateProvider extends BlockStateProvider { - public ModBlockStateProvider(PackOutput output, ExistingFileHelper exFileHelper) { - super(output, NuggetMod.MOD_ID, exFileHelper); - } - - @Override - protected void registerStatesAndModels() { - blockWithItem(ModBlocks.NUGGET_BLOCK); - blockWithItem(ModBlocks.RAW_NUGGET_BLOCK); - - blockWithItem(ModBlocks.NUGGET_ORE); - blockWithItem(ModBlocks.NUGGET_DEEPSLATE_ORE); - - } - - private void blockWithItem(RegistryObject blockRegistryObject) { - simpleBlockWithItem(blockRegistryObject.get(), cubeAll(blockRegistryObject.get())); - } +package dev.sillyangel.nugget.datagen; + +import dev.sillyangel.nugget.NuggetMod; +import dev.sillyangel.nugget.block.ModBlocks; +import net.minecraft.data.PackOutput; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.client.model.generators.BlockStateProvider; +import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraftforge.registries.RegistryObject; + +public class ModBlockStateProvider extends BlockStateProvider { + public ModBlockStateProvider(PackOutput output, ExistingFileHelper exFileHelper) { + super(output, NuggetMod.MOD_ID, exFileHelper); + } + + @Override + protected void registerStatesAndModels() { + blockWithItem(ModBlocks.NUGGET_BLOCK); + blockWithItem(ModBlocks.RAW_NUGGET_BLOCK); + + blockWithItem(ModBlocks.NUGGET_ORE); + blockWithItem(ModBlocks.NUGGET_DEEPSLATE_ORE); + + } + + private void blockWithItem(RegistryObject blockRegistryObject) { + simpleBlockWithItem(blockRegistryObject.get(), cubeAll(blockRegistryObject.get())); + } } \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/datagen/ModBlockTagProvider.java b/src/main/java/dev/sillyangel/nugget/datagen/ModBlockTagProvider.java similarity index 85% rename from src/main/java/xyz/sillyangel/nugget/datagen/ModBlockTagProvider.java rename to src/main/java/dev/sillyangel/nugget/datagen/ModBlockTagProvider.java index ace9e18..ef35684 100644 --- a/src/main/java/xyz/sillyangel/nugget/datagen/ModBlockTagProvider.java +++ b/src/main/java/dev/sillyangel/nugget/datagen/ModBlockTagProvider.java @@ -1,42 +1,41 @@ -package xyz.sillyangel.nugget.datagen; - -import xyz.sillyangel.nugget.NuggetMod; -import xyz.sillyangel.nugget.block.ModBlocks; -import net.minecraft.core.HolderLookup; -import net.minecraft.data.PackOutput; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.tags.BlockTags; -import net.minecraftforge.common.data.BlockTagsProvider; -import net.minecraftforge.common.data.ExistingFileHelper; -import org.jetbrains.annotations.Nullable; -import xyz.sillyangel.nugget.util.ModTags; - -import java.util.concurrent.CompletableFuture; - -public class ModBlockTagProvider extends BlockTagsProvider { - public ModBlockTagProvider(PackOutput output, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(output, lookupProvider, NuggetMod.MOD_ID, existingFileHelper); - } - - @Override - protected void addTags(HolderLookup.Provider pProvider) { - tag(BlockTags.MINEABLE_WITH_PICKAXE) - .add(ModBlocks.NUGGET_BLOCK.get()) - .add(ModBlocks.RAW_NUGGET_BLOCK.get()) - .add(ModBlocks.NUGGET_ORE.get()) - .add(ModBlocks.NUGGET_DEEPSLATE_ORE.get()); - - tag(BlockTags.NEEDS_STONE_TOOL) - .add(ModBlocks.NUGGET_DEEPSLATE_ORE.get()) - .add(ModBlocks.NUGGET_BLOCK.get()) - .add(ModBlocks.RAW_NUGGET_BLOCK.get()); - - tag(ModTags.Blocks.NEEDS_NUGGET_TOOL) - .add(ModBlocks.RAW_NUGGET_BLOCK.get()) - .addTag(BlockTags.NEEDS_DIAMOND_TOOL); - - tag(ModTags.Blocks.INCORRECT_FOR_NUGGET_TOOL) - .addTag(BlockTags.INCORRECT_FOR_DIAMOND_TOOL) - .remove(ModTags.Blocks.NEEDS_NUGGET_TOOL); - } +package dev.sillyangel.nugget.datagen; + +import dev.sillyangel.nugget.NuggetMod; +import dev.sillyangel.nugget.block.ModBlocks; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.minecraft.tags.BlockTags; +import net.minecraftforge.common.data.BlockTagsProvider; +import net.minecraftforge.common.data.ExistingFileHelper; +import org.jetbrains.annotations.Nullable; +import dev.sillyangel.nugget.util.ModTags; + +import java.util.concurrent.CompletableFuture; + +public class ModBlockTagProvider extends BlockTagsProvider { + public ModBlockTagProvider(PackOutput output, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { + super(output, lookupProvider, NuggetMod.MOD_ID, existingFileHelper); + } + + @Override + protected void addTags(HolderLookup.Provider pProvider) { + tag(BlockTags.MINEABLE_WITH_PICKAXE) + .add(ModBlocks.NUGGET_BLOCK.get()) + .add(ModBlocks.RAW_NUGGET_BLOCK.get()) + .add(ModBlocks.NUGGET_ORE.get()) + .add(ModBlocks.NUGGET_DEEPSLATE_ORE.get()); + + tag(BlockTags.NEEDS_STONE_TOOL) + .add(ModBlocks.NUGGET_DEEPSLATE_ORE.get()) + .add(ModBlocks.NUGGET_BLOCK.get()) + .add(ModBlocks.RAW_NUGGET_BLOCK.get()); + + tag(ModTags.Blocks.NEEDS_NUGGET_TOOL) + .add(ModBlocks.RAW_NUGGET_BLOCK.get()) + .addTag(BlockTags.NEEDS_DIAMOND_TOOL); + + tag(ModTags.Blocks.INCORRECT_FOR_NUGGET_TOOL) + .addTag(BlockTags.INCORRECT_FOR_DIAMOND_TOOL) + .remove(ModTags.Blocks.NEEDS_NUGGET_TOOL); + } } \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/datagen/ModDatapackEntries.java b/src/main/java/dev/sillyangel/nugget/datagen/ModDatapackEntries.java similarity index 75% rename from src/main/java/xyz/sillyangel/nugget/datagen/ModDatapackEntries.java rename to src/main/java/dev/sillyangel/nugget/datagen/ModDatapackEntries.java index 63ca0c4..970dddf 100644 --- a/src/main/java/xyz/sillyangel/nugget/datagen/ModDatapackEntries.java +++ b/src/main/java/dev/sillyangel/nugget/datagen/ModDatapackEntries.java @@ -1,11 +1,11 @@ -package xyz.sillyangel.nugget.datagen; +package dev.sillyangel.nugget.datagen; -import xyz.sillyangel.nugget.NuggetMod; -import xyz.sillyangel.nugget.trim.ModTrimMaterials; -import xyz.sillyangel.nugget.trim.ModTrimPatterns; -import xyz.sillyangel.nugget.worldgen.ModBiomeModifiers; -import xyz.sillyangel.nugget.worldgen.ModConfiguredFeatures; -import xyz.sillyangel.nugget.worldgen.ModPlacedFeatures; +import dev.sillyangel.nugget.NuggetMod; +import dev.sillyangel.nugget.trim.ModTrimMaterials; +import dev.sillyangel.nugget.trim.ModTrimPatterns; +import dev.sillyangel.nugget.worldgen.ModBiomeModifiers; +import dev.sillyangel.nugget.worldgen.ModConfiguredFeatures; +import dev.sillyangel.nugget.worldgen.ModPlacedFeatures; import net.minecraft.core.HolderLookup; import net.minecraft.core.RegistrySetBuilder; import net.minecraft.core.registries.Registries; diff --git a/src/main/java/xyz/sillyangel/nugget/datagen/ModItemModelProvider.java b/src/main/java/dev/sillyangel/nugget/datagen/ModItemModelProvider.java similarity index 82% rename from src/main/java/xyz/sillyangel/nugget/datagen/ModItemModelProvider.java rename to src/main/java/dev/sillyangel/nugget/datagen/ModItemModelProvider.java index c15fd90..b437cb1 100644 --- a/src/main/java/xyz/sillyangel/nugget/datagen/ModItemModelProvider.java +++ b/src/main/java/dev/sillyangel/nugget/datagen/ModItemModelProvider.java @@ -1,134 +1,134 @@ -package xyz.sillyangel.nugget.datagen; - -import net.minecraft.world.item.equipment.trim.TrimMaterial; -import net.minecraft.world.item.equipment.trim.TrimMaterials; -import xyz.sillyangel.nugget.NuggetMod; -import xyz.sillyangel.nugget.item.ModItems; -import net.minecraft.data.PackOutput; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; -import net.minecraftforge.client.model.generators.ItemModelBuilder; -import net.minecraftforge.client.model.generators.ItemModelProvider; -import net.minecraftforge.common.data.ExistingFileHelper; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; -import net.minecraft.resources.ResourceKey; -import net.minecraft.server.packs.PackType; -import net.minecraft.world.item.ArmorItem; -import net.minecraftforge.client.model.generators.ModelFile; - -import java.util.LinkedHashMap; - -public class ModItemModelProvider extends ItemModelProvider { - private static LinkedHashMap, Float> trimMaterials = new LinkedHashMap<>(); - static { - trimMaterials.put(TrimMaterials.QUARTZ, 0.1F); - trimMaterials.put(TrimMaterials.IRON, 0.2F); - trimMaterials.put(TrimMaterials.NETHERITE, 0.3F); - trimMaterials.put(TrimMaterials.REDSTONE, 0.4F); - trimMaterials.put(TrimMaterials.COPPER, 0.5F); - trimMaterials.put(TrimMaterials.GOLD, 0.6F); - trimMaterials.put(TrimMaterials.EMERALD, 0.7F); - trimMaterials.put(TrimMaterials.DIAMOND, 0.8F); - trimMaterials.put(TrimMaterials.LAPIS, 0.9F); - trimMaterials.put(TrimMaterials.AMETHYST, 1.0F); - } - - public ModItemModelProvider(PackOutput output, ExistingFileHelper existingFileHelper) { - super(output, NuggetMod.MOD_ID, existingFileHelper); - } - - @Override - protected void registerModels() { - basicItem(ModItems.NUGGET_HORSE_ARMOR.get()); - basicItem(ModItems.NUGGET_SMITHING_TEMPLATE.get()); - basicItem(ModItems.NUGGET.get()); - basicItem(ModItems.RAW_NUGGET.get()); - basicItem(ModItems.NUGGET_MUSIC_DISC.get()); - - handheldItem(ModItems.NUGGET_SWORD); - handheldItem(ModItems.NUGGET_PICKAXE); - handheldItem(ModItems.NUGGET_SHOVEL); - handheldItem(ModItems.NUGGET_AXE); - handheldItem(ModItems.NUGGET_HOE); - - trimmedArmorItem(ModItems.NUGGET_HELMET); - trimmedArmorItem(ModItems.NUGGET_CHESTPLATE); - trimmedArmorItem(ModItems.NUGGET_LEGGINGS); - trimmedArmorItem(ModItems.NUGGET_BOOTS); - } - private void trimmedArmorItem(RegistryObject itemRegistryObject) { - final String MOD_ID = NuggetMod.MOD_ID; // Change this to your mod id - if (itemRegistryObject.get() instanceof ArmorItem armorItem) { - trimMaterials.forEach((trimMaterial, value) -> { - float trimValue = value; - - String armorType = ""; - if(armorItem.toString().contains("helmet")) { - armorType = "helmet"; - } else if(armorItem.toString().contains("chestplate")) { - armorType = "chestplate"; - } else if(armorItem.toString().contains("leggings")) { - armorType = "leggings"; - } else if(armorItem.toString().contains("boots")) { - armorType = "boots"; - } - - - String armorItemPath = armorItem.toString(); - String trimPath = "trims/items/" + armorType + "_trim_" + trimMaterial.location().getPath(); - String currentTrimName = armorItemPath + "_" + trimMaterial.location().getPath() + "_trim"; - ResourceLocation armorItemResLoc = ResourceLocation.parse(armorItemPath); - ResourceLocation trimResLoc = ResourceLocation.parse(trimPath); // minecraft namespace - ResourceLocation trimNameResLoc = ResourceLocation.parse(currentTrimName); - // This is used for making the ExistingFileHelper acknowledge that this texture exist, so this will - // avoid an IllegalArgumentException - existingFileHelper.trackGenerated(trimResLoc, PackType.CLIENT_RESOURCES, ".png", "textures"); - // Trimmed armorItem files - getBuilder(currentTrimName) - .parent(new ModelFile.UncheckedModelFile("item/generated")) - .texture("layer0", armorItemResLoc.getNamespace() + ":item/" + armorItemResLoc.getPath()) - .texture("layer1", trimResLoc); - // Non-trimmed armorItem file (normal variant) - this.withExistingParent(itemRegistryObject.getId().getPath(), - mcLoc("item/generated")) - .override() - .model(new ModelFile.UncheckedModelFile(trimNameResLoc.getNamespace() + ":item/" + trimNameResLoc.getPath())) - .predicate(mcLoc("trim_type"), trimValue).end() - .texture("layer0", - ResourceLocation.fromNamespaceAndPath(MOD_ID, - "item/" + itemRegistryObject.getId().getPath())); - }); - } - } - private ItemModelBuilder handheldItem(RegistryObject item) { - return withExistingParent(item.getId().getPath(), - ResourceLocation.parse("item/handheld")).texture("layer0", - ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID,"item/" + item.getId().getPath())); - } - - public void buttonItem(RegistryObject block, RegistryObject baseBlock) { - this.withExistingParent(ForgeRegistries.BLOCKS.getKey(block.get()).getPath(), mcLoc("block/button_inventory")) - .texture("texture", ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, - "block/" + ForgeRegistries.BLOCKS.getKey(baseBlock.get()).getPath())); - } - - public void fenceItem(RegistryObject block, RegistryObject baseBlock) { - this.withExistingParent(ForgeRegistries.BLOCKS.getKey(block.get()).getPath(), mcLoc("block/fence_inventory")) - .texture("texture", ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, - "block/" + ForgeRegistries.BLOCKS.getKey(baseBlock.get()).getPath())); - } - - public void wallItem(RegistryObject block, RegistryObject baseBlock) { - this.withExistingParent(ForgeRegistries.BLOCKS.getKey(block.get()).getPath(), mcLoc("block/wall_inventory")) - .texture("wall", ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, - "block/" + ForgeRegistries.BLOCKS.getKey(baseBlock.get()).getPath())); - } - - private ItemModelBuilder simpleBlockItem(RegistryObject item) { - return withExistingParent(item.getId().getPath(), - ResourceLocation.parse("item/generated")).texture("layer0", - ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID,"item/" + item.getId().getPath())); - } +package dev.sillyangel.nugget.datagen; + +import dev.sillyangel.nugget.NuggetMod; +import dev.sillyangel.nugget.item.ModItems; +import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.Identifier; +import net.minecraft.server.packs.PackType; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.equipment.trim.TrimMaterial; +import net.minecraft.world.item.equipment.trim.TrimMaterials; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.client.model.generators.ItemModelBuilder; +import net.minecraftforge.client.model.generators.ItemModelProvider; +import net.minecraftforge.client.model.generators.ModelFile; +import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import java.util.LinkedHashMap; + +public class ModItemModelProvider extends ItemModelProvider { + private static LinkedHashMap, Float> trimMaterials = new LinkedHashMap<>(); + static { + trimMaterials.put(TrimMaterials.QUARTZ, 0.1F); + trimMaterials.put(TrimMaterials.IRON, 0.2F); + trimMaterials.put(TrimMaterials.NETHERITE, 0.3F); + trimMaterials.put(TrimMaterials.REDSTONE, 0.4F); + trimMaterials.put(TrimMaterials.COPPER, 0.5F); + trimMaterials.put(TrimMaterials.GOLD, 0.6F); + trimMaterials.put(TrimMaterials.EMERALD, 0.7F); + trimMaterials.put(TrimMaterials.DIAMOND, 0.8F); + trimMaterials.put(TrimMaterials.LAPIS, 0.9F); + trimMaterials.put(TrimMaterials.AMETHYST, 1.0F); + } + + public ModItemModelProvider(PackOutput output, ExistingFileHelper existingFileHelper) { + super(output, NuggetMod.MOD_ID, existingFileHelper); + } + + @Override + protected void registerModels() { + basicItem(ModItems.NUGGET_HORSE_ARMOR.get()); + basicItem(ModItems.NUGGET_SMITHING_TEMPLATE.get()); + basicItem(ModItems.NUGGET.get()); + basicItem(ModItems.RAW_NUGGET.get()); + basicItem(ModItems.NUGGET_MUSIC_DISC.get()); + + handheldItem(ModItems.NUGGET_SWORD); + handheldItem(ModItems.NUGGET_PICKAXE); + handheldItem(ModItems.NUGGET_SHOVEL); + handheldItem(ModItems.NUGGET_AXE); + handheldItem(ModItems.NUGGET_HOE); + + trimmedArmorItem(ModItems.NUGGET_HELMET); + trimmedArmorItem(ModItems.NUGGET_CHESTPLATE); + trimmedArmorItem(ModItems.NUGGET_LEGGINGS); + trimmedArmorItem(ModItems.NUGGET_BOOTS); + } + private void trimmedArmorItem(RegistryObject itemRegistryObject) { + final String MOD_ID = NuggetMod.MOD_ID; // Change this to your mod id + if (itemRegistryObject.get() instanceof ArmorItem armorItem) { + trimMaterials.forEach((trimMaterial, value) -> { + float trimValue = value; + + String armorType = ""; + if(armorItem.toString().contains("helmet")) { + armorType = "helmet"; + } else if(armorItem.toString().contains("chestplate")) { + armorType = "chestplate"; + } else if(armorItem.toString().contains("leggings")) { + armorType = "leggings"; + } else if(armorItem.toString().contains("boots")) { + armorType = "boots"; + } + + + String armorItemPath = armorItem.toString(); + String trimPath = "trims/items/" + armorType + "_trim_" + trimMaterial.location().getPath(); + String currentTrimName = armorItemPath + "_" + trimMaterial.location().getPath() + "_trim"; + Identifier armorItemResLoc = Identifier.parse(armorItemPath); + Identifier trimResLoc = Identifier.parse(trimPath); // minecraft namespace + Identifier trimNameResLoc = Identifier.parse(currentTrimName); + // This is used for making the ExistingFileHelper acknowledge that this texture exist, so this will + // avoid an IllegalArgumentException + existingFileHelper.trackGenerated(trimResLoc, PackType.CLIENT_RESOURCES, ".png", "textures"); + // Trimmed armorItem files + getBuilder(currentTrimName) + .parent(new ModelFile.UncheckedModelFile("item/generated")) + .texture("layer0", armorItemResLoc.getNamespace() + ":item/" + armorItemResLoc.getPath()) + .texture("layer1", trimResLoc); + // Non-trimmed armorItem file (normal variant) + this.withExistingParent(itemRegistryObject.getId().getPath(), + mcLoc("item/generated")) + .override() + .model(new ModelFile.UncheckedModelFile(trimNameResLoc.getNamespace() + ":item/" + trimNameResLoc.getPath())) + .predicate(mcLoc("trim_type"), trimValue).end() + .texture("layer0", + Identifier.fromNamespaceAndPath(MOD_ID, + "item/" + itemRegistryObject.getId().getPath())); + }); + } + } + private ItemModelBuilder handheldItem(RegistryObject item) { + return withExistingParent(item.getId().getPath(), + Identifier.parse("item/handheld")).texture("layer0", + Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID,"item/" + item.getId().getPath())); + } + + public void buttonItem(RegistryObject block, RegistryObject baseBlock) { + this.withExistingParent(ForgeRegistries.BLOCKS.getKey(block.get()).getPath(), mcLoc("block/button_inventory")) + .texture("texture", Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, + "block/" + ForgeRegistries.BLOCKS.getKey(baseBlock.get()).getPath())); + } + + public void fenceItem(RegistryObject block, RegistryObject baseBlock) { + this.withExistingParent(ForgeRegistries.BLOCKS.getKey(block.get()).getPath(), mcLoc("block/fence_inventory")) + .texture("texture", Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, + "block/" + ForgeRegistries.BLOCKS.getKey(baseBlock.get()).getPath())); + } + + public void wallItem(RegistryObject block, RegistryObject baseBlock) { + this.withExistingParent(ForgeRegistries.BLOCKS.getKey(block.get()).getPath(), mcLoc("block/wall_inventory")) + .texture("wall", Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, + "block/" + ForgeRegistries.BLOCKS.getKey(baseBlock.get()).getPath())); + } + + private ItemModelBuilder simpleBlockItem(RegistryObject item) { + return withExistingParent(item.getId().getPath(), + Identifier.parse("item/generated")).texture("layer0", + Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID,"item/" + item.getId().getPath())); + } } \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/datagen/ModItemTagProvider.java b/src/main/java/dev/sillyangel/nugget/datagen/ModItemTagProvider.java similarity index 61% rename from src/main/java/xyz/sillyangel/nugget/datagen/ModItemTagProvider.java rename to src/main/java/dev/sillyangel/nugget/datagen/ModItemTagProvider.java index 0a22262..86ea67f 100644 --- a/src/main/java/xyz/sillyangel/nugget/datagen/ModItemTagProvider.java +++ b/src/main/java/dev/sillyangel/nugget/datagen/ModItemTagProvider.java @@ -1,44 +1,43 @@ -package xyz.sillyangel.nugget.datagen; - -import xyz.sillyangel.nugget.NuggetMod; -import xyz.sillyangel.nugget.item.ModItems; -import xyz.sillyangel.nugget.util.ModTags; -import net.minecraft.core.HolderLookup; -import net.minecraft.tags.ItemTags; -import net.minecraft.data.PackOutput; -import net.minecraft.data.tags.ItemTagsProvider; -import net.minecraft.world.item.Items; -import net.minecraft.world.level.block.Block; -import net.minecraftforge.common.data.ExistingFileHelper; -import org.jetbrains.annotations.Nullable; - -import java.util.concurrent.CompletableFuture; - -public class ModItemTagProvider extends ItemTagsProvider { - public ModItemTagProvider(PackOutput packOutput, CompletableFuture completableFuture, - CompletableFuture> lookupCompletableFuture, @Nullable ExistingFileHelper existingFileHelper) { - super(packOutput, completableFuture, lookupCompletableFuture, NuggetMod.MOD_ID, existingFileHelper); - } - - @Override - protected void addTags(HolderLookup.Provider pProvider) { - tag(ModTags.Items.TRANSFORMABLE_ITEMS) - .add(ModItems.NUGGET.get()) - .add(ModItems.RAW_NUGGET.get()) - .add(Items.COAL) - .add(Items.STICK) - .add(Items.COMPASS); - - tag(ItemTags.TRIMMABLE_ARMOR) - .add(ModItems.NUGGET_HELMET.get()) - .add(ModItems.NUGGET_CHESTPLATE.get()) - .add(ModItems.NUGGET_LEGGINGS.get()) - .add(ModItems.NUGGET_BOOTS.get()); - tag(ItemTags.TRIM_MATERIALS) - .add(ModItems.NUGGET.get()); - tag(ItemTags.TRIM_TEMPLATES) - .add(ModItems.NUGGET_SMITHING_TEMPLATE.get()); - tag(ModTags.Items.NUGGET_REPAIRS) - .add(ModItems.NUGGET.get()); - } +package dev.sillyangel.nugget.datagen; + +import dev.sillyangel.nugget.NuggetMod; +import dev.sillyangel.nugget.item.ModItems; +import dev.sillyangel.nugget.util.ModTags; +import net.minecraft.core.HolderLookup; +import net.minecraft.tags.ItemTags; +import net.minecraft.data.PackOutput; +import net.minecraft.data.tags.ItemTagProvider; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.common.data.ExistingFileHelper; +import org.jetbrains.annotations.Nullable; + +import java.util.concurrent.CompletableFuture; + +public class ModItemTagProvider extends ItemTagsProvider { + public ModItemTagProvider(PackOutput pOutput, CompletableFuture pLookupProvider, CompletableFuture> pBlockTags, @Nullable ExistingFileHelper existingFileHelper) { + super(pOutput, pLookupProvider, pBlockTags, NuggetMod.MOD_ID, existingFileHelper); + } + + @Override + protected void addTags(HolderLookup.Provider pProvider) { + tag(ModTags.Items.TRANSFORMABLE_ITEMS) + .add(ModItems.NUGGET.get()) + .add(ModItems.RAW_NUGGET.get()) + .add(Items.COAL) + .add(Items.STICK) + .add(Items.COMPASS); + + tag(ItemTags.TRIMMABLE_ARMOR) + .add(ModItems.NUGGET_HELMET.get()) + .add(ModItems.NUGGET_CHESTPLATE.get()) + .add(ModItems.NUGGET_LEGGINGS.get()) + .add(ModItems.NUGGET_BOOTS.get()); + tag(ItemTags.TRIM_MATERIALS) + .add(ModItems.NUGGET.get()); +// tag(ItemTags.TRIM_TEMPLATES) +// .add(ModItems.NUGGET_SMITHING_TEMPLATE.get()); + tag(ModTags.Items.NUGGET_REPAIRS) + .add(ModItems.NUGGET.get()); + } } \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/datagen/ModRecipeProvider.java b/src/main/java/dev/sillyangel/nugget/datagen/ModRecipeProvider.java similarity index 94% rename from src/main/java/xyz/sillyangel/nugget/datagen/ModRecipeProvider.java rename to src/main/java/dev/sillyangel/nugget/datagen/ModRecipeProvider.java index e9a9a0c..7a190d7 100644 --- a/src/main/java/xyz/sillyangel/nugget/datagen/ModRecipeProvider.java +++ b/src/main/java/dev/sillyangel/nugget/datagen/ModRecipeProvider.java @@ -1,173 +1,173 @@ -package xyz.sillyangel.nugget.datagen; - -import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceKey; -import net.minecraft.world.item.Items; -import xyz.sillyangel.nugget.NuggetMod; -import xyz.sillyangel.nugget.block.ModBlocks; -import xyz.sillyangel.nugget.item.ModItems; -import net.minecraft.core.HolderLookup; -import net.minecraft.data.PackOutput; -import net.minecraft.data.recipes.*; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.*; -import net.minecraft.world.level.ItemLike; -import net.minecraftforge.common.crafting.conditions.IConditionBuilder; - -import java.util.List; -import java.util.concurrent.CompletableFuture; - -public class ModRecipeProvider extends RecipeProvider implements IConditionBuilder { - public ModRecipeProvider(HolderLookup.Provider lookup, RecipeOutput recipeOutput) { - super(lookup, recipeOutput); - } - - public static class Runner extends RecipeProvider.Runner { - public Runner(PackOutput output, CompletableFuture providerCompletableFuture) { - super(output, providerCompletableFuture); - } - - - @Override - protected RecipeProvider createRecipeProvider(HolderLookup.Provider provider, RecipeOutput recipeOutput) { - return new ModRecipeProvider(provider, recipeOutput); - } - - @Override - public String getName() { - return "Recipes"; - } - } - - @Override - protected void buildRecipes() { - List NUGGET_SMELTABLES = List.of(ModItems.RAW_NUGGET.get(), - ModBlocks.NUGGET_ORE.get(), ModBlocks.NUGGET_DEEPSLATE_ORE.get()); - - shaped(RecipeCategory.MISC, ModBlocks.NUGGET_BLOCK.get()) - .pattern("AAA") - .pattern("AAA") - .pattern("AAA") - .define('A', ModItems.NUGGET.get()) - .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); - - shapeless(RecipeCategory.MISC, ModItems.NUGGET.get(), 9) - .requires(ModBlocks.NUGGET_BLOCK.get()) - .unlockedBy(getHasName(ModBlocks.NUGGET_BLOCK.get()), has(ModBlocks.NUGGET_BLOCK.get())).save(this.output); - - // RAW NUGGET - - shaped(RecipeCategory.MISC, ModBlocks.RAW_NUGGET_BLOCK.get()) - .pattern("AAA") - .pattern("AAA") - .pattern("AAA") - .define('A', ModItems.RAW_NUGGET.get()) - .unlockedBy(getHasName(ModItems.RAW_NUGGET.get()), has(ModItems.RAW_NUGGET.get())).save(this.output); - - shapeless(RecipeCategory.MISC, ModItems.RAW_NUGGET.get(), 9) - .requires(ModBlocks.RAW_NUGGET_BLOCK.get()) - .unlockedBy(getHasName(ModBlocks.RAW_NUGGET_BLOCK.get()), has(ModBlocks.RAW_NUGGET_BLOCK.get())).save(this.output); - // TOOLS - - //SWORD - shaped(RecipeCategory.COMBAT, ModItems.NUGGET_SWORD.get()) - .pattern(" A ") - .pattern(" A ") - .pattern(" B ") - .define('A', ModItems.NUGGET.get()) - .define('B', Items.STICK) - .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); - //PICAXE - shaped(RecipeCategory.TOOLS, ModItems.NUGGET_PICKAXE.get()) - .pattern("AAA") - .pattern(" B ") - .pattern(" B ") - .define('A', ModItems.NUGGET.get()) - .define('B', Items.STICK) - .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); - //AXE - shaped(RecipeCategory.TOOLS, ModItems.NUGGET_AXE.get()) - .pattern(" AA") - .pattern(" BA") - .pattern(" B ") - .define('A', ModItems.NUGGET.get()) - .define('B', Items.STICK) - .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); - //SHOVEL - shaped(RecipeCategory.TOOLS, ModItems.NUGGET_SHOVEL.get()) - .pattern(" A ") - .pattern(" B ") - .pattern(" B ") - .define('A', ModItems.NUGGET.get()) - .define('B', Items.STICK) - .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); - //HOE - shaped(RecipeCategory.TOOLS, ModItems.NUGGET_HOE.get()) - .pattern(" AA") - .pattern(" B ") - .pattern(" B ") - .define('A', ModItems.NUGGET.get()) - .define('B', Items.STICK) - .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); - - // END OF TOOLS - - // start of armor - // head!?! - shaped(RecipeCategory.COMBAT, ModItems.NUGGET_HELMET.get()) - .pattern("AAA") - .pattern("A A") - .pattern(" ") - .define('A', ModItems.NUGGET.get()) - .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); - //shirt - shaped(RecipeCategory.COMBAT, ModItems.NUGGET_CHESTPLATE.get()) - .pattern("A A") - .pattern("AAA") - .pattern("AAA") - .define('A', ModItems.NUGGET.get()) - .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); - //pants? - shaped(RecipeCategory.COMBAT, ModItems.NUGGET_LEGGINGS.get()) - .pattern("AAA") - .pattern("A A") - .pattern("A A") - .define('A', ModItems.NUGGET.get()) - .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); - //socks - shaped(RecipeCategory.COMBAT, ModItems.NUGGET_BOOTS.get()) - .pattern(" ") - .pattern("A A") - .pattern("A A") - .define('A', ModItems.NUGGET.get()) - .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); - - trimSmithing(ModItems.NUGGET_SMITHING_TEMPLATE.get(), ResourceKey.create(Registries.RECIPE, - ResourceLocation.parse(getItemName(ModItems.NUGGET_SMITHING_TEMPLATE.get()) + "_smithing_trim"))); - - oreSmelting(this.output, NUGGET_SMELTABLES, RecipeCategory.MISC, ModItems.NUGGET.get(), 0.25f, 200, "nugget"); - oreBlasting(this.output, NUGGET_SMELTABLES, RecipeCategory.MISC, ModItems.NUGGET.get(), 0.25f, 100, "nugget"); - - - } - - protected void oreSmelting(RecipeOutput recipeOutput, List pIngredients, RecipeCategory pCategory, ItemLike pResult, - float pExperience, int pCookingTIme, String pGroup) { - oreCooking(recipeOutput, RecipeSerializer.SMELTING_RECIPE, SmeltingRecipe::new, pIngredients, pCategory, pResult, - pExperience, pCookingTIme, pGroup, "_from_smelting"); - } - - protected void oreBlasting(RecipeOutput recipeOutput, List pIngredients, RecipeCategory pCategory, ItemLike pResult, - float pExperience, int pCookingTime, String pGroup) { - oreCooking(recipeOutput, RecipeSerializer.BLASTING_RECIPE, BlastingRecipe::new, pIngredients, pCategory, pResult, - pExperience, pCookingTime, pGroup, "_from_blasting"); - } - - protected void oreCooking(RecipeOutput recipeOutput, RecipeSerializer pCookingSerializer, AbstractCookingRecipe.Factory factory, - List pIngredients, RecipeCategory pCategory, ItemLike pResult, float pExperience, int pCookingTime, String pGroup, String pRecipeName) { - for(ItemLike itemlike : pIngredients) { - SimpleCookingRecipeBuilder.generic(Ingredient.of(itemlike), pCategory, pResult, pExperience, pCookingTime, pCookingSerializer, factory).group(pGroup).unlockedBy(getHasName(itemlike), has(itemlike)) - .save(recipeOutput, NuggetMod.MOD_ID + ":" + getItemName(pResult) + pRecipeName + "_" + getItemName(itemlike)); - } - } +package dev.sillyangel.nugget.datagen; + +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.Items; +import dev.sillyangel.nugget.NuggetMod; +import dev.sillyangel.nugget.block.ModBlocks; +import dev.sillyangel.nugget.item.ModItems; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.minecraft.data.recipes.*; +import net.minecraft.resources.Identifier; +import net.minecraft.world.item.crafting.*; +import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.conditions.IConditionBuilder; + +import java.util.List; +import java.util.concurrent.CompletableFuture; + +public class ModRecipeProvider extends RecipeProvider implements IConditionBuilder { + public ModRecipeProvider(HolderLookup.Provider lookup, RecipeOutput recipeOutput) { + super(lookup, recipeOutput); + } + + public static class Runner extends RecipeProvider.Runner { + public Runner(PackOutput output, CompletableFuture providerCompletableFuture) { + super(output, providerCompletableFuture); + } + + + @Override + protected RecipeProvider createRecipeProvider(HolderLookup.Provider provider, RecipeOutput recipeOutput) { + return new ModRecipeProvider(provider, recipeOutput); + } + + @Override + public String getName() { + return "Recipes"; + } + } + + @Override + protected void buildRecipes() { + List NUGGET_SMELTABLES = List.of(ModItems.RAW_NUGGET.get(), + ModBlocks.NUGGET_ORE.get(), ModBlocks.NUGGET_DEEPSLATE_ORE.get()); + + shaped(RecipeCategory.MISC, ModBlocks.NUGGET_BLOCK.get()) + .pattern("AAA") + .pattern("AAA") + .pattern("AAA") + .define('A', ModItems.NUGGET.get()) + .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); + + shapeless(RecipeCategory.MISC, ModItems.NUGGET.get(), 9) + .requires(ModBlocks.NUGGET_BLOCK.get()) + .unlockedBy(getHasName(ModBlocks.NUGGET_BLOCK.get()), has(ModBlocks.NUGGET_BLOCK.get())).save(this.output); + + // RAW NUGGET + + shaped(RecipeCategory.MISC, ModBlocks.RAW_NUGGET_BLOCK.get()) + .pattern("AAA") + .pattern("AAA") + .pattern("AAA") + .define('A', ModItems.RAW_NUGGET.get()) + .unlockedBy(getHasName(ModItems.RAW_NUGGET.get()), has(ModItems.RAW_NUGGET.get())).save(this.output); + + shapeless(RecipeCategory.MISC, ModItems.RAW_NUGGET.get(), 9) + .requires(ModBlocks.RAW_NUGGET_BLOCK.get()) + .unlockedBy(getHasName(ModBlocks.RAW_NUGGET_BLOCK.get()), has(ModBlocks.RAW_NUGGET_BLOCK.get())).save(this.output); + // TOOLS + + //SWORD + shaped(RecipeCategory.COMBAT, ModItems.NUGGET_SWORD.get()) + .pattern(" A ") + .pattern(" A ") + .pattern(" B ") + .define('A', ModItems.NUGGET.get()) + .define('B', Items.STICK) + .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); + //PICAXE + shaped(RecipeCategory.TOOLS, ModItems.NUGGET_PICKAXE.get()) + .pattern("AAA") + .pattern(" B ") + .pattern(" B ") + .define('A', ModItems.NUGGET.get()) + .define('B', Items.STICK) + .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); + //AXE + shaped(RecipeCategory.TOOLS, ModItems.NUGGET_AXE.get()) + .pattern(" AA") + .pattern(" BA") + .pattern(" B ") + .define('A', ModItems.NUGGET.get()) + .define('B', Items.STICK) + .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); + //SHOVEL + shaped(RecipeCategory.TOOLS, ModItems.NUGGET_SHOVEL.get()) + .pattern(" A ") + .pattern(" B ") + .pattern(" B ") + .define('A', ModItems.NUGGET.get()) + .define('B', Items.STICK) + .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); + //HOE + shaped(RecipeCategory.TOOLS, ModItems.NUGGET_HOE.get()) + .pattern(" AA") + .pattern(" B ") + .pattern(" B ") + .define('A', ModItems.NUGGET.get()) + .define('B', Items.STICK) + .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); + + // END OF TOOLS + + // start of armor + // head!?! + shaped(RecipeCategory.COMBAT, ModItems.NUGGET_HELMET.get()) + .pattern("AAA") + .pattern("A A") + .pattern(" ") + .define('A', ModItems.NUGGET.get()) + .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); + //shirt + shaped(RecipeCategory.COMBAT, ModItems.NUGGET_CHESTPLATE.get()) + .pattern("A A") + .pattern("AAA") + .pattern("AAA") + .define('A', ModItems.NUGGET.get()) + .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); + //pants? + shaped(RecipeCategory.COMBAT, ModItems.NUGGET_LEGGINGS.get()) + .pattern("AAA") + .pattern("A A") + .pattern("A A") + .define('A', ModItems.NUGGET.get()) + .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); + //socks + shaped(RecipeCategory.COMBAT, ModItems.NUGGET_BOOTS.get()) + .pattern(" ") + .pattern("A A") + .pattern("A A") + .define('A', ModItems.NUGGET.get()) + .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output); + + trimSmithing(ModItems.NUGGET_SMITHING_TEMPLATE.get(), ResourceKey.create(Registries.RECIPE, + Identifier.parse(getItemName(ModItems.NUGGET_SMITHING_TEMPLATE.get()) + "_smithing_trim"))); + + oreSmelting(this.output, NUGGET_SMELTABLES, RecipeCategory.MISC, ModItems.NUGGET.get(), 0.25f, 200, "nugget"); + oreBlasting(this.output, NUGGET_SMELTABLES, RecipeCategory.MISC, ModItems.NUGGET.get(), 0.25f, 100, "nugget"); + + + } + + protected void oreSmelting(RecipeOutput recipeOutput, List pIngredients, RecipeCategory pCategory, ItemLike pResult, + float pExperience, int pCookingTIme, String pGroup) { + oreCooking(recipeOutput, RecipeSerializer.SMELTING_RECIPE, SmeltingRecipe::new, pIngredients, pCategory, pResult, + pExperience, pCookingTIme, pGroup, "_from_smelting"); + } + + protected void oreBlasting(RecipeOutput recipeOutput, List pIngredients, RecipeCategory pCategory, ItemLike pResult, + float pExperience, int pCookingTime, String pGroup) { + oreCooking(recipeOutput, RecipeSerializer.BLASTING_RECIPE, BlastingRecipe::new, pIngredients, pCategory, pResult, + pExperience, pCookingTime, pGroup, "_from_blasting"); + } + + protected void oreCooking(RecipeOutput recipeOutput, RecipeSerializer pCookingSerializer, AbstractCookingRecipe.Factory factory, + List pIngredients, RecipeCategory pCategory, ItemLike pResult, float pExperience, int pCookingTime, String pGroup, String pRecipeName) { + for(ItemLike itemlike : pIngredients) { + SimpleCookingRecipeBuilder.generic(Ingredient.of(itemlike), pCategory, pResult, pExperience, pCookingTime, pCookingSerializer, factory).group(pGroup).unlockedBy(getHasName(itemlike), has(itemlike)) + .save(recipeOutput, NuggetMod.MOD_ID + ":" + getItemName(pResult) + pRecipeName + "_" + getItemName(itemlike)); + } + } } \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/item/ModArmorMaterials.java b/src/main/java/dev/sillyangel/nugget/item/ModArmorMaterials.java similarity index 51% rename from src/main/java/xyz/sillyangel/nugget/item/ModArmorMaterials.java rename to src/main/java/dev/sillyangel/nugget/item/ModArmorMaterials.java index ae42e35..1cb30c5 100644 --- a/src/main/java/xyz/sillyangel/nugget/item/ModArmorMaterials.java +++ b/src/main/java/dev/sillyangel/nugget/item/ModArmorMaterials.java @@ -1,15 +1,22 @@ -package xyz.sillyangel.nugget.item; +package dev.sillyangel.nugget.item; -import xyz.sillyangel.nugget.NuggetMod; -import xyz.sillyangel.nugget.util.ModTags; -import net.minecraft.Util; -import net.minecraft.resources.ResourceLocation; +import dev.sillyangel.nugget.NuggetMod; +import dev.sillyangel.nugget.util.ModTags; +import net.minecraft.util.Util; +import net.minecraft.resources.Identifier; +import net.minecraft.resources.ResourceKey; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.item.equipment.ArmorMaterial; import net.minecraft.world.item.equipment.ArmorType; +import net.minecraft.world.item.equipment.EquipmentAsset; + import java.util.EnumMap; public class ModArmorMaterials { + public static final ResourceKey NUGGET_EQUIPMENT_ASSET = + ResourceKey.create(ResourceKey.createRegistryKey(Identifier.withDefaultNamespace("equipment_asset")), + Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget")); + public static final ArmorMaterial NUGGET_ARMOR_MATERIAL = new ArmorMaterial(1200, Util.make(new EnumMap<>(ArmorType.class), attribute -> { attribute.put(ArmorType.BOOTS, 5); @@ -18,5 +25,6 @@ public class ModArmorMaterials { attribute.put(ArmorType.HELMET, 5); attribute.put(ArmorType.BODY, 11); }), 20, SoundEvents.ARMOR_EQUIP_NETHERITE, - 4f, 0.1f, ModTags.Items.NUGGET_REPAIRS, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget")); -} \ No newline at end of file + 4f, 0.1f, ModTags.Items.NUGGET_REPAIRS, NUGGET_EQUIPMENT_ASSET); +} + diff --git a/src/main/java/xyz/sillyangel/nugget/item/ModCreativeModeTabs.java b/src/main/java/dev/sillyangel/nugget/item/ModCreativeModeTabs.java similarity index 88% rename from src/main/java/xyz/sillyangel/nugget/item/ModCreativeModeTabs.java rename to src/main/java/dev/sillyangel/nugget/item/ModCreativeModeTabs.java index ef0f88b..f792017 100644 --- a/src/main/java/xyz/sillyangel/nugget/item/ModCreativeModeTabs.java +++ b/src/main/java/dev/sillyangel/nugget/item/ModCreativeModeTabs.java @@ -1,59 +1,59 @@ -package xyz.sillyangel.nugget.item; - -import net.minecraft.core.registries.Registries; -import net.minecraft.network.chat.Component; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.RegistryObject; -import xyz.sillyangel.nugget.NuggetMod; -import xyz.sillyangel.nugget.block.ModBlocks; - -public class ModCreativeModeTabs { - public static final DeferredRegister CREATIVE_MODE_TABS = - DeferredRegister.create(Registries.CREATIVE_MODE_TAB, NuggetMod.MOD_ID); - - public static final RegistryObject NUGGET_ITEMS_TAB = CREATIVE_MODE_TABS.register("nuggetmod_items_tab", - () -> CreativeModeTab.builder().icon(() -> new ItemStack(ModItems.NUGGET.get())) - .title(Component.translatable("creativetab.nuggetmod.nugget_items")) - .displayItems((itemDisplayParameters, output) -> { - output.accept(ModItems.NUGGET.get()); - output.accept(ModItems.RAW_NUGGET.get()); - - output.accept(ModItems.NUGGET_SWORD.get()); - output.accept(ModItems.NUGGET_PICKAXE.get()); - output.accept(ModItems.NUGGET_SHOVEL.get()); - output.accept(ModItems.NUGGET_AXE.get()); - output.accept(ModItems.NUGGET_HOE.get()); - - output.accept(ModItems.NUGGET_HELMET.get()); - output.accept(ModItems.NUGGET_CHESTPLATE.get()); - output.accept(ModItems.NUGGET_LEGGINGS.get()); - output.accept(ModItems.NUGGET_BOOTS.get()); - - output.accept(ModItems.NUGGET_HORSE_ARMOR.get()); - output.accept(ModItems.NUGGET_SMITHING_TEMPLATE.get()); - - output.accept(ModItems.NUGGET_MUSIC_DISC.get()); - - }).build()); - - public static final RegistryObject NUGGET_BLOCKS_TAB = CREATIVE_MODE_TABS.register("nuggetmod_blocks_tab", - () -> CreativeModeTab.builder().icon(() -> new ItemStack(ModBlocks.NUGGET_BLOCK.get())) - .withTabsBefore(NUGGET_ITEMS_TAB.getId()) - .title(Component.translatable("creativetab.nuggetmod.nugget_blocks")) - .displayItems((itemDisplayParameters, output) -> { - output.accept(ModBlocks.NUGGET_BLOCK.get()); - output.accept(ModBlocks.RAW_NUGGET_BLOCK.get()); - output.accept(ModBlocks.NUGGET_ORE.get()); - output.accept(ModBlocks.NUGGET_DEEPSLATE_ORE.get()); - }).build()); - - - - - public static void register(IEventBus eventBus) { - CREATIVE_MODE_TABS.register(eventBus); - } -} +package dev.sillyangel.nugget.item; + +import net.minecraft.core.registries.Registries; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.eventbus.api.bus.BusGroup; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.RegistryObject; +import dev.sillyangel.nugget.NuggetMod; +import dev.sillyangel.nugget.block.ModBlocks; + +public class ModCreativeModeTabs { + public static final DeferredRegister CREATIVE_MODE_TABS = + DeferredRegister.create(Registries.CREATIVE_MODE_TAB, NuggetMod.MOD_ID); + + public static final RegistryObject NUGGET_ITEMS_TAB = CREATIVE_MODE_TABS.register("nuggetmod_items_tab", + () -> CreativeModeTab.builder().icon(() -> new ItemStack(ModItems.NUGGET.get())) + .title(Component.translatable("creativetab.nuggetmod.nugget_items")) + .displayItems((itemDisplayParameters, output) -> { + output.accept(ModItems.NUGGET.get()); + output.accept(ModItems.RAW_NUGGET.get()); + + output.accept(ModItems.NUGGET_SWORD.get()); + output.accept(ModItems.NUGGET_PICKAXE.get()); + output.accept(ModItems.NUGGET_SHOVEL.get()); + output.accept(ModItems.NUGGET_AXE.get()); + output.accept(ModItems.NUGGET_HOE.get()); + + output.accept(ModItems.NUGGET_HELMET.get()); + output.accept(ModItems.NUGGET_CHESTPLATE.get()); + output.accept(ModItems.NUGGET_LEGGINGS.get()); + output.accept(ModItems.NUGGET_BOOTS.get()); + + output.accept(ModItems.NUGGET_HORSE_ARMOR.get()); + output.accept(ModItems.NUGGET_SMITHING_TEMPLATE.get()); + + output.accept(ModItems.NUGGET_MUSIC_DISC.get()); + + }).build()); + + public static final RegistryObject NUGGET_BLOCKS_TAB = CREATIVE_MODE_TABS.register("nuggetmod_blocks_tab", + () -> CreativeModeTab.builder().icon(() -> new ItemStack(ModBlocks.NUGGET_BLOCK.get())) + .withTabsBefore(NUGGET_ITEMS_TAB.getId()) + .title(Component.translatable("creativetab.nuggetmod.nugget_blocks")) + .displayItems((itemDisplayParameters, output) -> { + output.accept(ModBlocks.NUGGET_BLOCK.get()); + output.accept(ModBlocks.RAW_NUGGET_BLOCK.get()); + output.accept(ModBlocks.NUGGET_ORE.get()); + output.accept(ModBlocks.NUGGET_DEEPSLATE_ORE.get()); + }).build()); + + + + + public static void register(BusGroup busGroup) { + CREATIVE_MODE_TABS.register(busGroup); + } +} diff --git a/src/main/java/xyz/sillyangel/nugget/item/ModFoodProperties.java b/src/main/java/dev/sillyangel/nugget/item/ModFoodProperties.java similarity index 83% rename from src/main/java/xyz/sillyangel/nugget/item/ModFoodProperties.java rename to src/main/java/dev/sillyangel/nugget/item/ModFoodProperties.java index e1b93d9..a360486 100644 --- a/src/main/java/xyz/sillyangel/nugget/item/ModFoodProperties.java +++ b/src/main/java/dev/sillyangel/nugget/item/ModFoodProperties.java @@ -1,8 +1,8 @@ -package xyz.sillyangel.nugget.item; - -import net.minecraft.world.food.FoodProperties; - -public class ModFoodProperties { - public static final FoodProperties Nugget = new FoodProperties.Builder().nutrition(5).saturationModifier(0.5f) - .build(); -} +package dev.sillyangel.nugget.item; + +import net.minecraft.world.food.FoodProperties; + +public class ModFoodProperties { + public static final FoodProperties Nugget = new FoodProperties.Builder().nutrition(5).saturationModifier(0.5f) + .build(); +} diff --git a/src/main/java/dev/sillyangel/nugget/item/ModItems.java b/src/main/java/dev/sillyangel/nugget/item/ModItems.java new file mode 100644 index 0000000..ee2cfd6 --- /dev/null +++ b/src/main/java/dev/sillyangel/nugget/item/ModItems.java @@ -0,0 +1,96 @@ +package dev.sillyangel.nugget.item; + +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.equipment.ArmorType; +import dev.sillyangel.nugget.NuggetMod; +import net.minecraftforge.eventbus.api.bus.BusGroup; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.resources.Identifier; +import net.minecraftforge.registries.RegistryObject; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ShovelItem; +import net.minecraft.world.item.AxeItem; +import net.minecraft.world.item.HoeItem; +import net.minecraft.world.item.SmithingTemplateItem; +import dev.sillyangel.nugget.sound.ModSounds; + + +public class ModItems { + public static final DeferredRegister ITEMS = + DeferredRegister.create(ForgeRegistries.ITEMS, NuggetMod.MOD_ID); + + public static final RegistryObject NUGGET = ITEMS.register("nugget", + () -> new Item(new Item.Properties().setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget"))) + .food(ModFoodProperties.Nugget))); + + public static final RegistryObject RAW_NUGGET = ITEMS.register("raw_nugget", + () -> new Item(new Item.Properties().setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "raw_nugget"))))); + + public static final RegistryObject NUGGET_SWORD = ITEMS.register("nugget_sword", + () -> new Item(new Item.Properties() + .setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_sword"))) + .sword(ModToolTiers.NUGGET, 3.0F, -2.4F))); + + public static final RegistryObject NUGGET_PICKAXE = ITEMS.register("nugget_pickaxe", + () -> new Item(new Item.Properties() + .setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_pickaxe"))) + .pickaxe(ModToolTiers.NUGGET, 1.0F, -2.8F))); + + public static final RegistryObject NUGGET_SHOVEL = ITEMS.register("nugget_shovel", + () -> new ShovelItem(ModToolTiers.NUGGET, 1.5f, -3.0f, new Item.Properties() + .setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_shovel"))))); + + public static final RegistryObject NUGGET_AXE = ITEMS.register("nugget_axe", + () -> new AxeItem(ModToolTiers.NUGGET, 6, -3.2f, new Item.Properties() + .setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_axe"))))); + + public static final RegistryObject NUGGET_HOE = ITEMS.register("nugget_hoe", + () -> new HoeItem(ModToolTiers.NUGGET, 0, -3.0f, new Item.Properties() + .setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_hoe"))))); + + // armor things + + public static final RegistryObject NUGGET_HELMET = ITEMS.register("nugget_helmet", + () -> new Item(new Item.Properties() + .setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_helmet"))) + .humanoidArmor(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorType.HELMET))); + + public static final RegistryObject NUGGET_CHESTPLATE = ITEMS.register("nugget_chestplate", + () -> new Item(new Item.Properties() + .setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_chestplate"))) + .humanoidArmor(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorType.CHESTPLATE))); + + public static final RegistryObject NUGGET_LEGGINGS = ITEMS.register("nugget_leggings", + () -> new Item(new Item.Properties() + .setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_leggings"))) + .humanoidArmor(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorType.LEGGINGS))); + + public static final RegistryObject NUGGET_BOOTS = ITEMS.register("nugget_boots", + () -> new Item(new Item.Properties() + .setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_boots"))) + .humanoidArmor(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorType.BOOTS))); + + // horse armor + public static final RegistryObject NUGGET_HORSE_ARMOR = ITEMS.register("nugget_horse_armor", + () -> new Item(new Item.Properties() + .setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_horse_armor"))) + .horseArmor(ModArmorMaterials.NUGGET_ARMOR_MATERIAL) + .stacksTo(1))); + // smithing temp + public static final RegistryObject NUGGET_SMITHING_TEMPLATE = ITEMS.register("nugget_armor_trim_smithing_template", + () -> SmithingTemplateItem.createArmorTrimTemplate(new Item.Properties() + .setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_armor_trim_smithing_template"))))); + + public static final RegistryObject NUGGET_MUSIC_DISC = ITEMS.register("nugget_music_disc", + () -> new Item(new Item.Properties() + .setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_music_disc"))) + .jukeboxPlayable(ModSounds.NUGGET_THEME_KEY).stacksTo(1))); + + + public static void register(BusGroup busGroup) { + ITEMS.register(busGroup); + } + +} diff --git a/src/main/java/xyz/sillyangel/nugget/item/ModToolTiers.java b/src/main/java/dev/sillyangel/nugget/item/ModToolTiers.java similarity index 73% rename from src/main/java/xyz/sillyangel/nugget/item/ModToolTiers.java rename to src/main/java/dev/sillyangel/nugget/item/ModToolTiers.java index 4131471..771a26f 100644 --- a/src/main/java/xyz/sillyangel/nugget/item/ModToolTiers.java +++ b/src/main/java/dev/sillyangel/nugget/item/ModToolTiers.java @@ -1,9 +1,9 @@ -package xyz.sillyangel.nugget.item; - -import net.minecraft.world.item.ToolMaterial; -import xyz.sillyangel.nugget.util.ModTags; - -public class ModToolTiers { - public static final ToolMaterial NUGGET = new ToolMaterial(ModTags.Blocks.INCORRECT_FOR_NUGGET_TOOL, - 1500, 8f, 3.5f, 22, ModTags.Items.NUGGET_REPAIRS); -} +package dev.sillyangel.nugget.item; + +import net.minecraft.world.item.ToolMaterial; +import dev.sillyangel.nugget.util.ModTags; + +public class ModToolTiers { + public static final ToolMaterial NUGGET = new ToolMaterial(ModTags.Blocks.INCORRECT_FOR_NUGGET_TOOL, + 1500, 8f, 3.5f, 22, ModTags.Items.NUGGET_REPAIRS); +} diff --git a/src/main/java/xyz/sillyangel/nugget/sound/ModSounds.java b/src/main/java/dev/sillyangel/nugget/sound/ModSounds.java similarity index 67% rename from src/main/java/xyz/sillyangel/nugget/sound/ModSounds.java rename to src/main/java/dev/sillyangel/nugget/sound/ModSounds.java index 19d823b..eb0bea5 100644 --- a/src/main/java/xyz/sillyangel/nugget/sound/ModSounds.java +++ b/src/main/java/dev/sillyangel/nugget/sound/ModSounds.java @@ -1,12 +1,12 @@ -package xyz.sillyangel.nugget.sound; +package dev.sillyangel.nugget.sound; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.JukeboxSong; -import xyz.sillyangel.nugget.NuggetMod; -import net.minecraft.resources.ResourceLocation; +import dev.sillyangel.nugget.NuggetMod; +import net.minecraft.resources.Identifier; import net.minecraft.sounds.SoundEvent; -import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.eventbus.api.bus.BusGroup; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; @@ -18,14 +18,14 @@ public class ModSounds { public static final RegistryObject NUGGET_THEME = registerSoundEvent("nugget_theme"); public static final ResourceKey NUGGET_THEME_KEY = ResourceKey.create(Registries.JUKEBOX_SONG, - ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_theme")); + Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_theme")); private static RegistryObject registerSoundEvent(String name) { - return SOUND_EVENT.register(name, () -> SoundEvent.createVariableRangeEvent(ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, name))); + return SOUND_EVENT.register(name, () -> SoundEvent.createVariableRangeEvent(Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, name))); } - public static void register(IEventBus eventBus) { - SOUND_EVENT.register(eventBus); + public static void register(BusGroup busGroup) { + SOUND_EVENT.register(busGroup); } } diff --git a/src/main/java/xyz/sillyangel/nugget/trim/ModTrimMaterials.java b/src/main/java/dev/sillyangel/nugget/trim/ModTrimMaterials.java similarity index 78% rename from src/main/java/xyz/sillyangel/nugget/trim/ModTrimMaterials.java rename to src/main/java/dev/sillyangel/nugget/trim/ModTrimMaterials.java index ff61895..ac8ee26 100644 --- a/src/main/java/xyz/sillyangel/nugget/trim/ModTrimMaterials.java +++ b/src/main/java/dev/sillyangel/nugget/trim/ModTrimMaterials.java @@ -1,15 +1,15 @@ -package xyz.sillyangel.nugget.trim; +package dev.sillyangel.nugget.trim; -import xyz.sillyangel.nugget.NuggetMod; -import xyz.sillyangel.nugget.item.ModItems; -import net.minecraft.Util; +import dev.sillyangel.nugget.NuggetMod; +import dev.sillyangel.nugget.item.ModItems; +import net.minecraft.util.Util; import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; import net.minecraft.network.chat.TextColor; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.Item; import net.minecraft.world.item.equipment.trim.TrimMaterial; @@ -17,7 +17,7 @@ import java.util.Map; public class ModTrimMaterials { public static final ResourceKey NUGGET = - ResourceKey.create(Registries.TRIM_MATERIAL, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget")); + ResourceKey.create(Registries.TRIM_MATERIAL, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget")); public static void bootstrap(BootstrapContext context) { register(context, NUGGET, ModItems.NUGGET.get(), Style.EMPTY.withColor(TextColor.parseColor("#f9b042").getOrThrow()), 0.1F); diff --git a/src/main/java/xyz/sillyangel/nugget/trim/ModTrimPatterns.java b/src/main/java/dev/sillyangel/nugget/trim/ModTrimPatterns.java similarity index 78% rename from src/main/java/xyz/sillyangel/nugget/trim/ModTrimPatterns.java rename to src/main/java/dev/sillyangel/nugget/trim/ModTrimPatterns.java index 1a55c53..a4bed99 100644 --- a/src/main/java/xyz/sillyangel/nugget/trim/ModTrimPatterns.java +++ b/src/main/java/dev/sillyangel/nugget/trim/ModTrimPatterns.java @@ -1,20 +1,20 @@ -package xyz.sillyangel.nugget.trim; +package dev.sillyangel.nugget.trim; import net.minecraft.world.item.equipment.trim.TrimPattern; -import xyz.sillyangel.nugget.NuggetMod; -import xyz.sillyangel.nugget.item.ModItems; -import net.minecraft.Util; +import dev.sillyangel.nugget.NuggetMod; +import dev.sillyangel.nugget.item.ModItems; +import net.minecraft.util.Util; import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.Item; import net.minecraftforge.registries.ForgeRegistries; public class ModTrimPatterns { public static final ResourceKey NUGGET = ResourceKey.create(Registries.TRIM_PATTERN, - ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget")); + Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget")); public static void bootstrap(BootstrapContext context) { register(context, ModItems.NUGGET_SMITHING_TEMPLATE.get(), NUGGET); diff --git a/src/main/java/xyz/sillyangel/nugget/util/ModItemProperites.java b/src/main/java/dev/sillyangel/nugget/util/ModItemProperites.java similarity index 67% rename from src/main/java/xyz/sillyangel/nugget/util/ModItemProperites.java rename to src/main/java/dev/sillyangel/nugget/util/ModItemProperites.java index 713709d..ea40ed9 100644 --- a/src/main/java/xyz/sillyangel/nugget/util/ModItemProperites.java +++ b/src/main/java/dev/sillyangel/nugget/util/ModItemProperites.java @@ -1,4 +1,4 @@ -package xyz.sillyangel.nugget.util; +package dev.sillyangel.nugget.util; public class ModItemProperites { // i dont know what to put here?! diff --git a/src/main/java/xyz/sillyangel/nugget/util/ModTags.java b/src/main/java/dev/sillyangel/nugget/util/ModTags.java similarity index 70% rename from src/main/java/xyz/sillyangel/nugget/util/ModTags.java rename to src/main/java/dev/sillyangel/nugget/util/ModTags.java index 8eb16d0..f2074f5 100644 --- a/src/main/java/xyz/sillyangel/nugget/util/ModTags.java +++ b/src/main/java/dev/sillyangel/nugget/util/ModTags.java @@ -1,29 +1,29 @@ -package xyz.sillyangel.nugget.util; - -import xyz.sillyangel.nugget.NuggetMod; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ItemTags; -import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; - -public class ModTags { - public static class Blocks { - public static final TagKey NEEDS_NUGGET_TOOL = createTag("needs_nugget_tool"); - public static final TagKey INCORRECT_FOR_NUGGET_TOOL = createTag("incorrect_for_nugget_tool"); - - private static TagKey createTag(String name) { - return BlockTags.create(ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, name)); - } - } - - public static class Items { - public static final TagKey TRANSFORMABLE_ITEMS = createTag("transformable_items"); - public static final TagKey NUGGET_REPAIRS = createTag("nugget_repairs"); - - private static TagKey createTag(String name) { - return ItemTags.create(ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, name)); - } - } +package dev.sillyangel.nugget.util; + +import dev.sillyangel.nugget.NuggetMod; +import net.minecraft.resources.Identifier; +import net.minecraft.tags.BlockTags; +import net.minecraft.tags.ItemTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; + +public class ModTags { + public static class Blocks { + public static final TagKey NEEDS_NUGGET_TOOL = createTag("needs_nugget_tool"); + public static final TagKey INCORRECT_FOR_NUGGET_TOOL = createTag("incorrect_for_nugget_tool"); + + private static TagKey createTag(String name) { + return BlockTags.create(Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, name)); + } + } + + public static class Items { + public static final TagKey TRANSFORMABLE_ITEMS = createTag("transformable_items"); + public static final TagKey NUGGET_REPAIRS = createTag("nugget_repairs"); + + private static TagKey createTag(String name) { + return ItemTags.create(Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, name)); + } + } } \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/worldgen/ModBiomeModifiers.java b/src/main/java/dev/sillyangel/nugget/worldgen/ModBiomeModifiers.java similarity index 86% rename from src/main/java/xyz/sillyangel/nugget/worldgen/ModBiomeModifiers.java rename to src/main/java/dev/sillyangel/nugget/worldgen/ModBiomeModifiers.java index 5ba1015..fc61992 100644 --- a/src/main/java/xyz/sillyangel/nugget/worldgen/ModBiomeModifiers.java +++ b/src/main/java/dev/sillyangel/nugget/worldgen/ModBiomeModifiers.java @@ -1,14 +1,14 @@ -package xyz.sillyangel.nugget.worldgen; +package dev.sillyangel.nugget.worldgen; import net.minecraft.core.HolderSet; import net.minecraft.tags.BiomeTags; import net.minecraft.world.level.levelgen.GenerationStep; import net.minecraftforge.common.world.ForgeBiomeModifiers; -import xyz.sillyangel.nugget.NuggetMod; +import dev.sillyangel.nugget.NuggetMod; import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraftforge.common.world.BiomeModifier; import net.minecraftforge.registries.ForgeRegistries; @@ -29,6 +29,6 @@ public class ModBiomeModifiers { } private static ResourceKey registerKey(String name) { - return ResourceKey.create(ForgeRegistries.Keys.BIOME_MODIFIERS, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, name)); + return ResourceKey.create(ForgeRegistries.Keys.BIOME_MODIFIERS, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, name)); } } \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/worldgen/ModConfiguredFeatures.java b/src/main/java/dev/sillyangel/nugget/worldgen/ModConfiguredFeatures.java similarity index 89% rename from src/main/java/xyz/sillyangel/nugget/worldgen/ModConfiguredFeatures.java rename to src/main/java/dev/sillyangel/nugget/worldgen/ModConfiguredFeatures.java index 73cabb7..4e14487 100644 --- a/src/main/java/xyz/sillyangel/nugget/worldgen/ModConfiguredFeatures.java +++ b/src/main/java/dev/sillyangel/nugget/worldgen/ModConfiguredFeatures.java @@ -1,18 +1,18 @@ -package xyz.sillyangel.nugget.worldgen; +package dev.sillyangel.nugget.worldgen; import net.minecraft.tags.BlockTags; import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest; import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; -import xyz.sillyangel.nugget.NuggetMod; +import dev.sillyangel.nugget.NuggetMod; import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; -import xyz.sillyangel.nugget.block.ModBlocks; +import dev.sillyangel.nugget.block.ModBlocks; import java.util.List; @@ -34,7 +34,7 @@ public class ModConfiguredFeatures { } public static ResourceKey> registerKey(String name) { - return ResourceKey.create(Registries.CONFIGURED_FEATURE, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, name)); + return ResourceKey.create(Registries.CONFIGURED_FEATURE, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, name)); } private static > void register(BootstrapContext> context, diff --git a/src/main/java/xyz/sillyangel/nugget/worldgen/ModOrePlacement.java b/src/main/java/dev/sillyangel/nugget/worldgen/ModOrePlacement.java similarity index 94% rename from src/main/java/xyz/sillyangel/nugget/worldgen/ModOrePlacement.java rename to src/main/java/dev/sillyangel/nugget/worldgen/ModOrePlacement.java index 55fbd22..fb62f85 100644 --- a/src/main/java/xyz/sillyangel/nugget/worldgen/ModOrePlacement.java +++ b/src/main/java/dev/sillyangel/nugget/worldgen/ModOrePlacement.java @@ -1,4 +1,4 @@ -package xyz.sillyangel.nugget.worldgen; +package dev.sillyangel.nugget.worldgen; import net.minecraft.world.level.levelgen.placement.*; diff --git a/src/main/java/xyz/sillyangel/nugget/worldgen/ModPlacedFeatures.java b/src/main/java/dev/sillyangel/nugget/worldgen/ModPlacedFeatures.java similarity index 85% rename from src/main/java/xyz/sillyangel/nugget/worldgen/ModPlacedFeatures.java rename to src/main/java/dev/sillyangel/nugget/worldgen/ModPlacedFeatures.java index 476b720..c35781f 100644 --- a/src/main/java/xyz/sillyangel/nugget/worldgen/ModPlacedFeatures.java +++ b/src/main/java/dev/sillyangel/nugget/worldgen/ModPlacedFeatures.java @@ -1,13 +1,13 @@ -package xyz.sillyangel.nugget.worldgen; +package dev.sillyangel.nugget.worldgen; import net.minecraft.world.level.levelgen.VerticalAnchor; import net.minecraft.world.level.levelgen.placement.HeightRangePlacement; -import xyz.sillyangel.nugget.NuggetMod; +import dev.sillyangel.nugget.NuggetMod; import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.placement.PlacedFeature; import net.minecraft.world.level.levelgen.placement.PlacementModifier; @@ -28,7 +28,7 @@ public class ModPlacedFeatures { } private static ResourceKey registerKey(String name) { - return ResourceKey.create(Registries.PLACED_FEATURE, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, name)); + return ResourceKey.create(Registries.PLACED_FEATURE, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, name)); } private static void register(BootstrapContext context, ResourceKey key, Holder> configuration, diff --git a/src/main/java/xyz/sillyangel/nugget/Config.java b/src/main/java/xyz/sillyangel/nugget/Config.java deleted file mode 100644 index d3d1c4d..0000000 --- a/src/main/java/xyz/sillyangel/nugget/Config.java +++ /dev/null @@ -1,63 +0,0 @@ -package xyz.sillyangel.nugget; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; -import net.minecraftforge.common.ForgeConfigSpec; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.config.ModConfigEvent; -import net.minecraftforge.registries.ForgeRegistries; - -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -// An example config class. This is not required, but it's a good idea to have one to keep your config organized. -// Demonstrates how to use Forge's config APIs -@Mod.EventBusSubscriber(modid = NuggetMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) -public class Config -{ - private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); - - private static final ForgeConfigSpec.BooleanValue LOG_DIRT_BLOCK = BUILDER - .comment("Whether to log the dirt block on common setup") - .define("logDirtBlock", true); - - private static final ForgeConfigSpec.IntValue MAGIC_NUMBER = BUILDER - .comment("A magic number") - .defineInRange("magicNumber", 42, 0, Integer.MAX_VALUE); - - public static final ForgeConfigSpec.ConfigValue MAGIC_NUMBER_INTRODUCTION = BUILDER - .comment("What you want the introduction message to be for the magic number") - .define("magicNumberIntroduction", "The magic number is... "); - - // a list of strings that are treated as resource locations for items - private static final ForgeConfigSpec.ConfigValue> ITEM_STRINGS = BUILDER - .comment("A list of items to log on common setup.") - .defineListAllowEmpty("items", List.of("minecraft:iron_ingot"), Config::validateItemName); - - static final ForgeConfigSpec SPEC = BUILDER.build(); - - public static boolean logDirtBlock; - public static int magicNumber; - public static String magicNumberIntroduction; - public static Set items; - - private static boolean validateItemName(final Object obj) - { - return obj instanceof final String itemName && ForgeRegistries.ITEMS.containsKey(ResourceLocation.tryParse(itemName)); - } - - @SubscribeEvent - static void onLoad(final ModConfigEvent event) - { - logDirtBlock = LOG_DIRT_BLOCK.get(); - magicNumber = MAGIC_NUMBER.get(); - magicNumberIntroduction = MAGIC_NUMBER_INTRODUCTION.get(); - - // convert the list of strings into a set of items - items = ITEM_STRINGS.get().stream() - .map(itemName -> ForgeRegistries.ITEMS.getValue(ResourceLocation.tryParse(itemName))) - .collect(Collectors.toSet()); - } -} \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/item/ModItems.java b/src/main/java/xyz/sillyangel/nugget/item/ModItems.java deleted file mode 100644 index 2c5ce2e..0000000 --- a/src/main/java/xyz/sillyangel/nugget/item/ModItems.java +++ /dev/null @@ -1,97 +0,0 @@ -package xyz.sillyangel.nugget.item; - -import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceKey; -import net.minecraft.world.item.equipment.ArmorType; -import xyz.sillyangel.nugget.NuggetMod; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.registries.RegistryObject; -import net.minecraft.world.item.*; -import xyz.sillyangel.nugget.sound.ModSounds; - -import java.util.List; - -public class ModItems { - public static final DeferredRegister ITEMS = - DeferredRegister.create(ForgeRegistries.ITEMS, NuggetMod.MOD_ID); - - public static final RegistryObject NUGGET = ITEMS.register("nugget", - () -> new Item(new Item.Properties().setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget"))) - .food(ModFoodProperties.Nugget)) { - @Override - public void appendHoverText(ItemStack pStack, TooltipContext pContext, List pTooltipComponent, TooltipFlag pTooltipFlag) { - pTooltipComponent.add(Component.translatable("item.nuggetmod.nugget.tooltip")); - super.appendHoverText(pStack, pContext, pTooltipComponent, pTooltipFlag); - } - }); - - public static final RegistryObject RAW_NUGGET = ITEMS.register("raw_nugget", - () -> new Item(new Item.Properties().setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "raw_nugget"))))); - - public static final RegistryObject NUGGET_SWORD = ITEMS.register("nugget_sword", - () -> new SwordItem(ModToolTiers.NUGGET, 3, -2.4f, new Item.Properties() - .setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_sword"))))); - - public static final RegistryObject NUGGET_PICKAXE = ITEMS.register("nugget_pickaxe", - () -> new PickaxeItem(ModToolTiers.NUGGET, 1, -2.8f, new Item.Properties() - .setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_pickaxe"))))); - - public static final RegistryObject NUGGET_SHOVEL = ITEMS.register("nugget_shovel", - () -> new ShovelItem(ModToolTiers.NUGGET, 1.5f, -3.0f, new Item.Properties() - .setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_shovel"))))); - - public static final RegistryObject NUGGET_AXE = ITEMS.register("nugget_axe", - () -> new AxeItem(ModToolTiers.NUGGET, 6, -3.2f, new Item.Properties() - .setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_axe"))))); - - public static final RegistryObject NUGGET_HOE = ITEMS.register("nugget_hoe", - () -> new HoeItem(ModToolTiers.NUGGET, 0, -3.0f, new Item.Properties() - .setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_hoe"))))); - - // armor things - - public static final RegistryObject NUGGET_HELMET = ITEMS.register("nugget_helmet", - () -> new ArmorItem(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorType.HELMET, - new Item.Properties() - .setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_helmet"))))); - - public static final RegistryObject NUGGET_CHESTPLATE = ITEMS.register("nugget_chestplate", - () -> new ArmorItem(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorType.CHESTPLATE, - new Item.Properties() - .setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_chestplate"))))); - - public static final RegistryObject NUGGET_LEGGINGS = ITEMS.register("nugget_leggings", - () -> new ArmorItem(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorType.LEGGINGS, - new Item.Properties() - .setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_leggings"))))); - - public static final RegistryObject NUGGET_BOOTS = ITEMS.register("nugget_boots", - () -> new ArmorItem(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorType.BOOTS, - new Item.Properties() - .setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_boots"))))); - - // horse armor - public static final RegistryObject NUGGET_HORSE_ARMOR = ITEMS.register("nugget_horse_armor", - () -> new AnimalArmorItem(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, AnimalArmorItem.BodyType.EQUESTRIAN, new Item.Properties() - .setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_horse_armor"))) - .stacksTo(1))); - // smithing temp - public static final RegistryObject NUGGET_SMITHING_TEMPLATE = ITEMS.register("nugget_armor_trim_smithing_template", - () -> SmithingTemplateItem.createArmorTrimTemplate(new Item.Properties() - .setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_armor_trim_smithing_template"))))); - - public static final RegistryObject NUGGET_MUSIC_DISC = ITEMS.register("nugget_music_disc", - () -> new Item(new Item.Properties() - .setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_music_disc"))) - .jukeboxPlayable(ModSounds.NUGGET_THEME_KEY).stacksTo(1))); - - - public static void register(IEventBus eventBus) { - ITEMS.register(eventBus); - } - -} diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 80795f1..9924ede 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -11,7 +11,7 @@ loaderVersion="${loader_version_range}" #mandatory This is typically bumped ever # 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 +issueTrackerURL="https://github.com/sillyangel/nugget" #optional # If your mod is purely client-side and has no multiplayer functionality (be it dedicated servers or Open to LAN), # set this to true, and Forge will set the correct displayTest for you and skip loading your mod on dedicated servers. #clientSideOnly=true #optional - defaults to false if absent @@ -26,9 +26,9 @@ 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 +displayURL="https://sillyangel.dev/" #optional # A file name (in the root of the mod JAR) containing a logo for display -#logoFile="examplemod.png" #optional +logoFile="splash.png" #optional # A text field displayed in the mod UI #credits="" #optional # A text field displayed in the mod UI