Compare commits
	
		
			9 Commits
		
	
	
		
			a4600b2219
			...
			1.20.1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| ff755932f1 | |||
| a290a5b839 | |||
| 675c38d777 | |||
| 11de654ec5 | |||
| 9807ea6410 | |||
| 132542a800 | |||
| e752d21807 | |||
| d3f8a0f45e | |||
| e5a40b2d51 | 
@@ -3,7 +3,7 @@ Minecraft Forge: Credits/Thank You
 | 
			
		||||
Forge is a set of tools and modifications to the Minecraft base game code to assist 
 | 
			
		||||
mod developers in creating new and exciting content. It has been in development for 
 | 
			
		||||
several years now, but I would like to take this time thank a few people who have 
 | 
			
		||||
helped it along its way.
 | 
			
		||||
helped it along it's way.
 | 
			
		||||
 | 
			
		||||
First, the people who originally created the Forge projects way back in Minecraft 
 | 
			
		||||
alpha. Eloraam of RedPower, and SpaceToad of Buildcraft, without their acceptiance 
 | 
			
		||||
@@ -11,7 +11,7 @@ of me taking over the project, who knows what Minecraft modding would be today.
 | 
			
		||||
 | 
			
		||||
Secondly, someone who has worked with me, and developed some of the core features
 | 
			
		||||
that allow modding to be as functional, and as simple as it is, cpw. For developing
 | 
			
		||||
FML, which stabilized the client and server modding ecosystem. As well as the base
 | 
			
		||||
FML, which stabelized the client and server modding ecosystem. As well as the base
 | 
			
		||||
loading system that allows us to modify Minecraft's code as elegently as possible.
 | 
			
		||||
 | 
			
		||||
Mezz, who has stepped up as the issue and pull request manager. Helping to keep me
 | 
			
		||||
@@ -45,11 +45,11 @@ and minecraft clients.
 | 
			
		||||
The code is authored by cpw.
 | 
			
		||||
 | 
			
		||||
It began by partially implementing an API defined by the client side ModLoader, authored by Risugami.
 | 
			
		||||
https://www.minecraftforum.net/topic/75440-
 | 
			
		||||
http://www.minecraftforum.net/topic/75440-
 | 
			
		||||
This support has been dropped as of Minecraft release 1.7, as Risugami no longer maintains ModLoader.
 | 
			
		||||
 | 
			
		||||
It also contains suggestions and hints and generous helpings of code from LexManos, author of MinecraftForge.
 | 
			
		||||
https://minecraftforge.net/
 | 
			
		||||
http://www.minecraftforge.net/
 | 
			
		||||
 | 
			
		||||
Additionally, it contains an implementation of topological sort based on that 
 | 
			
		||||
published at http://keithschwarz.com/interesting/code/?dir=topological-sort
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,7 @@ https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md
 | 
			
		||||
 | 
			
		||||
Additional Resources: 
 | 
			
		||||
=========================
 | 
			
		||||
Community Documentation: https://docs.minecraftforge.net/en/latest/gettingstarted/
 | 
			
		||||
Community Documentation: https://docs.minecraftforge.net/en/1.20.1/gettingstarted/
 | 
			
		||||
LexManos' Install Video: https://youtu.be/8VEdtQLuLO0
 | 
			
		||||
Forge Forums: https://forums.minecraftforge.net/
 | 
			
		||||
Forge Discord: https://discord.minecraftforge.net/
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								black_sugar.png
									
									
									
									
									
								
							
							
						
						
							
								
								
									
										94
									
								
								build.gradle
									
									
									
									
									
								
							
							
						
						@@ -2,7 +2,7 @@ plugins {
 | 
			
		||||
    id 'eclipse'
 | 
			
		||||
    id 'idea'
 | 
			
		||||
    id 'maven-publish'
 | 
			
		||||
    id 'net.minecraftforge.gradle' version '[6.0.36,6.2)'
 | 
			
		||||
    id 'net.minecraftforge.gradle' version '[6.0,6.2)'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
version = mod_version
 | 
			
		||||
@@ -12,8 +12,8 @@ base {
 | 
			
		||||
    archivesName = mod_id
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Mojang ships Java 21 to end users in 1.20.5+, so your mod should target Java 21.
 | 
			
		||||
java.toolchain.languageVersion = JavaLanguageVersion.of(21)
 | 
			
		||||
// Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17.
 | 
			
		||||
java.toolchain.languageVersion = JavaLanguageVersion.of(17)
 | 
			
		||||
 | 
			
		||||
println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}"
 | 
			
		||||
minecraft {
 | 
			
		||||
@@ -22,15 +22,16 @@ 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
 | 
			
		||||
 | 
			
		||||
    // 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.
 | 
			
		||||
    // In most cases, it is not necessary to enable.
 | 
			
		||||
    // enableEclipsePrepareRuns = true
 | 
			
		||||
@@ -46,7 +47,8 @@ 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, applied to the Minecraft artifact.
 | 
			
		||||
    // This property enables access transformers for use in development.
 | 
			
		||||
    // They will be applied to the Minecraft artifact.
 | 
			
		||||
    // The access transformer file can be anywhere in the project.
 | 
			
		||||
    // However, it must be at "META-INF/accesstransformer.cfg" in the final mod jar to be loaded by Forge.
 | 
			
		||||
    // This default location is a best practice to automatically put the file in the right place in the final jar.
 | 
			
		||||
@@ -60,15 +62,23 @@ minecraft {
 | 
			
		||||
        configureEach {
 | 
			
		||||
            workingDirectory project.file('run')
 | 
			
		||||
 | 
			
		||||
            // Optional additional logging. The markers can be added/remove as needed, separated by commas.
 | 
			
		||||
            // Recommended logging data for a userdev environment
 | 
			
		||||
            // The markers can be added/remove as needed separated by commas.
 | 
			
		||||
            // "SCAN": For mods scan.
 | 
			
		||||
            // "REGISTRIES": For firing of registry events.
 | 
			
		||||
            // "REGISTRYDUMP": For getting the contents of all registries.
 | 
			
		||||
//            property 'forge.logging.markers', 'REGISTRIES'
 | 
			
		||||
            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'
 | 
			
		||||
 | 
			
		||||
//            arg "-mixin.config=${mod_id}.mixins.json"
 | 
			
		||||
            mods {
 | 
			
		||||
                "${mod_id}" {
 | 
			
		||||
                    source sourceSets.main
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        client {
 | 
			
		||||
@@ -103,26 +113,7 @@ sourceSets.main.resources { srcDir 'src/generated/resources' }
 | 
			
		||||
 | 
			
		||||
repositories {
 | 
			
		||||
    // Put repositories for dependencies here
 | 
			
		||||
    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')
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    // ForgeGradle automatically adds the Forge maven and Maven Central for you
 | 
			
		||||
 | 
			
		||||
    // If you have mod jar dependencies in ./libs, you can declare them as a repository like so.
 | 
			
		||||
    // See https://docs.gradle.org/current/userguide/declaring_repositories.html#sub:flat_dir_resolver
 | 
			
		||||
@@ -139,11 +130,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}"
 | 
			
		||||
 | 
			
		||||
    // Example mod dependency with JEI
 | 
			
		||||
    // Example mod dependency with JEI - using fg.deobf() ensures the dependency is remapped to your development mappings
 | 
			
		||||
    // The JEI API is declared for compile time use, while the full JEI artifact is used at runtime
 | 
			
		||||
    // compileOnly "mezz.jei:jei-${mc_version}-common-api:${jei_version}"
 | 
			
		||||
    // compileOnly "mezz.jei:jei-${mc_version}-forge-api:${jei_version}"
 | 
			
		||||
    // runtimeOnly "mezz.jei:jei-${mc_version}-forge:${jei_version}"
 | 
			
		||||
    // compileOnly fg.deobf("mezz.jei:jei-${mc_version}-common-api:${jei_version}")
 | 
			
		||||
    // compileOnly fg.deobf("mezz.jei:jei-${mc_version}-forge-api:${jei_version}")
 | 
			
		||||
    // runtimeOnly fg.deobf("mezz.jei:jei-${mc_version}-forge:${jei_version}")
 | 
			
		||||
 | 
			
		||||
    // Example mod dependency using a mod jar from ./libs with a flat dir repository
 | 
			
		||||
    // This maps to ./libs/coolmod-${mc_version}-${coolmod_version}.jar
 | 
			
		||||
@@ -159,7 +150,7 @@ dependencies {
 | 
			
		||||
// 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) {
 | 
			
		||||
tasks.named('processResources', ProcessResources).configure {
 | 
			
		||||
    var replaceProperties = [
 | 
			
		||||
            minecraft_version: minecraft_version, minecraft_version_range: minecraft_version_range,
 | 
			
		||||
            forge_version: forge_version, forge_version_range: forge_version_range,
 | 
			
		||||
@@ -175,7 +166,7 @@ tasks.named('processResources', ProcessResources) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Example for how to get properties into the manifest for reading at runtime.
 | 
			
		||||
tasks.named('jar', Jar) {
 | 
			
		||||
tasks.named('jar', Jar).configure {
 | 
			
		||||
    manifest {
 | 
			
		||||
        attributes([
 | 
			
		||||
                'Specification-Title'     : mod_id,
 | 
			
		||||
@@ -183,12 +174,20 @@ tasks.named('jar', Jar) {
 | 
			
		||||
                'Specification-Version'   : '1', // We are version 1 of ourselves
 | 
			
		||||
                'Implementation-Title'    : project.name,
 | 
			
		||||
                'Implementation-Version'  : project.jar.archiveVersion,
 | 
			
		||||
            'Implementation-Vendor'   : mod_authors
 | 
			
		||||
                'Implementation-Vendor'   : mod_authors,
 | 
			
		||||
                'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
 | 
			
		||||
        ])
 | 
			
		||||
//        attributes['MixinConfigs'] = "${mod_id}.mixins.json"
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // This is the preferred method to reobfuscate your jar file
 | 
			
		||||
    finalizedBy 'reobfJar'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing:
 | 
			
		||||
// tasks.named('publish').configure {
 | 
			
		||||
//     dependsOn 'reobfJar'
 | 
			
		||||
// }
 | 
			
		||||
 | 
			
		||||
// Example configuration to allow publishing using the maven-publish plugin
 | 
			
		||||
publishing {
 | 
			
		||||
    publications {
 | 
			
		||||
@@ -206,22 +205,3 @@ publishing {
 | 
			
		||||
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
 | 
			
		||||
    // Run when importing the project
 | 
			
		||||
    synchronizationTasks 'genEclipseRuns'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 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 {
 | 
			
		||||
    def dir = layout.buildDirectory.dir("sourcesSets/$it.name")
 | 
			
		||||
    it.output.resourcesDir = dir
 | 
			
		||||
    it.java.destinationDirectory = dir
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1442
									
								
								changelog.txt
									
									
									
									
									
								
							
							
						
						@@ -1,30 +1,23 @@
 | 
			
		||||
# 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=-Xmx5G
 | 
			
		||||
org.gradle.jvmargs=-Xmx3G
 | 
			
		||||
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.4
 | 
			
		||||
minecraft_version=1.20.1
 | 
			
		||||
# The Minecraft version range can use any release version of Minecraft as bounds.
 | 
			
		||||
# Snapshots, pre-releases, and release candidates are not guaranteed to sort properly
 | 
			
		||||
# as they do not follow standard versioning conventions.
 | 
			
		||||
minecraft_version_range=[1.21.4,1.22)
 | 
			
		||||
minecraft_version_range=[1.20.1,1.21)
 | 
			
		||||
# The Forge version must agree with the Minecraft version to get a valid artifact
 | 
			
		||||
forge_version=54.1.6
 | 
			
		||||
forge_version=47.4.8
 | 
			
		||||
# 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=[47,)
 | 
			
		||||
# The loader version range can only use the major version of Forge/FML as bounds
 | 
			
		||||
loader_version_range=[0,)
 | 
			
		||||
loader_version_range=[47,)
 | 
			
		||||
# The mapping channel to use for mappings.
 | 
			
		||||
# The default set of supported mapping channels are ["official", "snapshot", "snapshot_nodoc", "stable", "stable_nodoc"].
 | 
			
		||||
# Additional mapping channels can be registered through the "channelProviders" extension in a Gradle plugin.
 | 
			
		||||
@@ -42,7 +35,7 @@ loader_version_range=[0,)
 | 
			
		||||
mapping_channel=official
 | 
			
		||||
# The mapping version to query from the mapping channel.
 | 
			
		||||
# This must match the format required by the mapping channel.
 | 
			
		||||
mapping_version=1.21.4
 | 
			
		||||
mapping_version=1.20.1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Mod Properties
 | 
			
		||||
@@ -55,7 +48,7 @@ mod_name=BlackSugar Mod
 | 
			
		||||
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
 | 
			
		||||
mod_license=All Rights Reserved
 | 
			
		||||
# The mod version. See https://semver.org/
 | 
			
		||||
mod_version=0.0.1
 | 
			
		||||
mod_version=0.5.21
 | 
			
		||||
# 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
 | 
			
		||||
@@ -63,4 +56,4 @@ mod_group_id=com.spdis.blacksugarmod
 | 
			
		||||
# The authors of the mod. This is a simple text string that is used for display purposes in the mod list.
 | 
			
		||||
mod_authors=SPDIS
 | 
			
		||||
# The description of the mod. This is a simple multiline text string that is used for display purposes in the mod list.
 | 
			
		||||
mod_description=????????????????
 | 
			
		||||
mod_description=SPDIS LOVE BlackSugar0104 and anyone who shared happy times with me; Whatever happened in the past, keep going.
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
								
							
							
						
						
							
								
								
									
										3
									
								
								gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -1,7 +1,6 @@
 | 
			
		||||
distributionBase=GRADLE_USER_HOME
 | 
			
		||||
distributionPath=wrapper/dists
 | 
			
		||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
 | 
			
		||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
 | 
			
		||||
networkTimeout=10000
 | 
			
		||||
validateDistributionUrl=true
 | 
			
		||||
zipStoreBase=GRADLE_USER_HOME
 | 
			
		||||
zipStorePath=wrapper/dists
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										22
									
								
								gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -83,8 +83,7 @@ done
 | 
			
		||||
# This is normally unused
 | 
			
		||||
# shellcheck disable=SC2034
 | 
			
		||||
APP_BASE_NAME=${0##*/}
 | 
			
		||||
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
 | 
			
		||||
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
 | 
			
		||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
 | 
			
		||||
 | 
			
		||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
 | 
			
		||||
MAX_FD=maximum
 | 
			
		||||
@@ -131,13 +130,10 @@ location of your Java installation."
 | 
			
		||||
    fi
 | 
			
		||||
else
 | 
			
		||||
    JAVACMD=java
 | 
			
		||||
    if ! command -v java >/dev/null 2>&1
 | 
			
		||||
    then
 | 
			
		||||
        die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
			
		||||
    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
			
		||||
 | 
			
		||||
Please set the JAVA_HOME variable in your environment to match the
 | 
			
		||||
location of your Java installation."
 | 
			
		||||
    fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Increase the maximum file descriptors if we can.
 | 
			
		||||
@@ -145,7 +141,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=SC2039,SC3045
 | 
			
		||||
        # shellcheck disable=SC3045
 | 
			
		||||
        MAX_FD=$( ulimit -H -n ) ||
 | 
			
		||||
            warn "Could not query maximum file descriptor limit"
 | 
			
		||||
    esac
 | 
			
		||||
@@ -153,7 +149,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=SC2039,SC3045
 | 
			
		||||
        # shellcheck disable=SC3045
 | 
			
		||||
        ulimit -n "$MAX_FD" ||
 | 
			
		||||
            warn "Could not set maximum file descriptor limit to $MAX_FD"
 | 
			
		||||
    esac
 | 
			
		||||
@@ -202,11 +198,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, 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.
 | 
			
		||||
# 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.
 | 
			
		||||
 | 
			
		||||
set -- \
 | 
			
		||||
        "-Dorg.gradle.appname=$APP_BASE_NAME" \
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								gradlew.bat
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -43,11 +43,11 @@ set JAVA_EXE=java.exe
 | 
			
		||||
%JAVA_EXE% -version >NUL 2>&1
 | 
			
		||||
if %ERRORLEVEL% equ 0 goto execute
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
echo.
 | 
			
		||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
			
		||||
echo.
 | 
			
		||||
echo Please set the JAVA_HOME variable in your environment to match the
 | 
			
		||||
echo location of your Java installation.
 | 
			
		||||
 | 
			
		||||
goto fail
 | 
			
		||||
 | 
			
		||||
@@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
 | 
			
		||||
 | 
			
		||||
if exist "%JAVA_EXE%" goto execute
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
echo.
 | 
			
		||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
 | 
			
		||||
echo.
 | 
			
		||||
echo Please set the JAVA_HOME variable in your environment to match the
 | 
			
		||||
echo location of your Java installation.
 | 
			
		||||
 | 
			
		||||
goto fail
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,5 +9,5 @@ pluginManagement {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
plugins {
 | 
			
		||||
    id 'org.gradle.toolchains.foojay-resolver-convention' version '0.10.0'
 | 
			
		||||
    id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0'
 | 
			
		||||
}
 | 
			
		||||
@@ -3,8 +3,6 @@ package com.spdis.blacksugarmod;
 | 
			
		||||
import com.mojang.logging.LogUtils;
 | 
			
		||||
import net.minecraft.client.Minecraft;
 | 
			
		||||
import net.minecraft.core.registries.Registries;
 | 
			
		||||
import net.minecraft.world.effect.MobEffectInstance;
 | 
			
		||||
import net.minecraft.world.effect.MobEffects;
 | 
			
		||||
import net.minecraft.world.food.FoodProperties;
 | 
			
		||||
import net.minecraft.world.item.BlockItem;
 | 
			
		||||
import net.minecraft.world.item.CreativeModeTab;
 | 
			
		||||
@@ -32,7 +30,8 @@ import org.slf4j.Logger;
 | 
			
		||||
 | 
			
		||||
// 这里的值应该与 META-INF/mods.toml 文件中的条目匹配
 | 
			
		||||
@Mod(BlackSugarModMain.MODID)
 | 
			
		||||
public class BlackSugarModMain {
 | 
			
		||||
public class BlackSugarModMain
 | 
			
		||||
{
 | 
			
		||||
    // 在一个公共位置定义模组ID,供所有地方引用
 | 
			
		||||
    public static final String MODID = "blacksugarmod";
 | 
			
		||||
    // 直接引用slf4j日志记录器
 | 
			
		||||
@@ -44,192 +43,35 @@ public class BlackSugarModMain {
 | 
			
		||||
    // 创建一个延迟注册器来保存创造模式标签页,所有标签页都将在"blacksugarmod"命名空间下注册
 | 
			
		||||
    public static final DeferredRegister<CreativeModeTab> CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MODID);
 | 
			
		||||
 | 
			
		||||
    // 创建黑糖物品,ID为"blacksugarmod:black_sugar"// 黑糖物品
 | 
			
		||||
    // 创建黑糖物品,ID为"blacksugarmod:black_sugar"
 | 
			
		||||
    public static final RegistryObject<Item> BLACK_SUGAR = ITEMS.register("black_sugar",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("black_sugar"))
 | 
			
		||||
        )
 | 
			
		||||
        () -> new Item(new Item.Properties())
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 面团物品
 | 
			
		||||
    public static final RegistryObject<Item> DOUGH = ITEMS.register("dough",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("dough"))
 | 
			
		||||
        )
 | 
			
		||||
        () -> new Item(new Item.Properties())
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 黑糖团子物品,可食用
 | 
			
		||||
    public static final RegistryObject<Item> BLACK_SUGAR_DUMPLING = ITEMS.register("black_sugar_dumpling",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("black_sugar_dumpling"))
 | 
			
		||||
            .food(new FoodProperties.Builder()
 | 
			
		||||
                .alwaysEdible()
 | 
			
		||||
                .alwaysEat()
 | 
			
		||||
                .nutrition(4)
 | 
			
		||||
                .saturationModifier(9.6f)
 | 
			
		||||
                .saturationMod(9.6f)
 | 
			
		||||
                .build()
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 脆香bro物品,可食用
 | 
			
		||||
    public static final RegistryObject<Item> CRISPY_BRO = ITEMS.register("crispy_bro",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("crispy_bro"))
 | 
			
		||||
            .food(new FoodProperties.Builder()
 | 
			
		||||
                .alwaysEdible()
 | 
			
		||||
                .nutrition(6)
 | 
			
		||||
                .saturationModifier(8.0f)
 | 
			
		||||
                .build()
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 食用油物品
 | 
			
		||||
    public static final RegistryObject<Item> COOKING_OIL = ITEMS.register("cooking_oil",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("cooking_oil"))
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 坚不可摧的海星物品
 | 
			
		||||
    public static final RegistryObject<Item> INDESTRUCTIBLE_STARFISH = ITEMS.register("indestructible_starfish",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("indestructible_starfish"))
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 串海星物品
 | 
			
		||||
    public static final RegistryObject<Item> STARFISH_SKEWER = ITEMS.register("starfish_skewer",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("starfish_skewer"))
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 棉花糖物品
 | 
			
		||||
    public static final RegistryObject<Item> MARSHMALLOW = ITEMS.register("marshmallow",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("marshmallow"))
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 烤棉花糖物品,可食用
 | 
			
		||||
    public static final RegistryObject<Item> ROASTED_MARSHMALLOW = ITEMS.register("roasted_marshmallow",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("roasted_marshmallow"))
 | 
			
		||||
            .food(new FoodProperties.Builder()
 | 
			
		||||
                .alwaysEdible()
 | 
			
		||||
                .nutrition(3)
 | 
			
		||||
                .saturationModifier(5.0f)
 | 
			
		||||
                .build()
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 致癌的棉花糖物品,可食用
 | 
			
		||||
    public static final RegistryObject<Item> CARCINOGENIC_MARSHMALLOW = ITEMS.register("carcinogenic_marshmallow",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("carcinogenic_marshmallow"))
 | 
			
		||||
            .food(new FoodProperties.Builder()
 | 
			
		||||
                .alwaysEdible()
 | 
			
		||||
                .nutrition(2)
 | 
			
		||||
                .saturationModifier(3.0f)
 | 
			
		||||
                .build()
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 萨卡班甲鱼物品
 | 
			
		||||
    public static final RegistryObject<Item> SAKABAN_TURTLE = ITEMS.register("sakaban_turtle",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("sakaban_turtle"))
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 葱花物品
 | 
			
		||||
    public static final RegistryObject<Item> SCALLION = ITEMS.register("scallion",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("scallion"))
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 腌制的甲鱼物品
 | 
			
		||||
    public static final RegistryObject<Item> PICKLED_TURTLE = ITEMS.register("pickled_turtle",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("pickled_turtle"))
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 一只觉得嘴里淡淡的小猫咪物品
 | 
			
		||||
    public static final RegistryObject<Item> BLAND_KITTEN = ITEMS.register("bland_kitten",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("bland_kitten"))
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 一只心怀歹念的小猫咪物品,可食用
 | 
			
		||||
    public static final RegistryObject<Item> MALICIOUS_KITTEN = ITEMS.register("malicious_kitten",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("malicious_kitten"))
 | 
			
		||||
            .food(new FoodProperties.Builder()
 | 
			
		||||
                .alwaysEdible()
 | 
			
		||||
                .nutrition(8)
 | 
			
		||||
                .saturationModifier(12.0f)
 | 
			
		||||
                .build()
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 香喷喷的串海星物品,可食用
 | 
			
		||||
    public static final RegistryObject<Item> FRAGRANT_STARFISH_SKEWER = ITEMS.register("fragrant_starfish_skewer",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("fragrant_starfish_skewer"))
 | 
			
		||||
            .food(new FoodProperties.Builder()
 | 
			
		||||
                .alwaysEdible()
 | 
			
		||||
                .nutrition(7)
 | 
			
		||||
                .saturationModifier(10.0f)
 | 
			
		||||
                .build()
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 一锅牢菜物品
 | 
			
		||||
    public static final RegistryObject<Item> POT_OF_PRISON_VEGETABLES = ITEMS.register("pot_of_prison_vegetables",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("pot_of_prison_vegetables"))
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 闷牢菜物品,可食用
 | 
			
		||||
    public static final RegistryObject<Item> BRAISED_PRISON_VEGETABLES = ITEMS.register("braised_prison_vegetables",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("braised_prison_vegetables"))
 | 
			
		||||
            .food(new FoodProperties.Builder()
 | 
			
		||||
                .alwaysEdible()
 | 
			
		||||
                .nutrition(5)
 | 
			
		||||
                .saturationModifier(7.0f)
 | 
			
		||||
                .build()
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // 碳烤甲鱼物品,可食用
 | 
			
		||||
    public static final RegistryObject<Item> CHARCOAL_GRILLED_TURTLE = ITEMS.register("charcoal_grilled_turtle",
 | 
			
		||||
        () -> new Item(new Item.Properties()
 | 
			
		||||
            .setId(ITEMS.key("charcoal_grilled_turtle"))
 | 
			
		||||
            .food(new FoodProperties.Builder()
 | 
			
		||||
                .alwaysEdible()
 | 
			
		||||
                .nutrition(9)
 | 
			
		||||
                .saturationModifier(14.0f)
 | 
			
		||||
                .build()
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
    );
 | 
			
		||||
    
 | 
			
		||||
    public BlackSugarModMain(FMLJavaModLoadingContext context) {
 | 
			
		||||
    public BlackSugarModMain(FMLJavaModLoadingContext context)
 | 
			
		||||
    {
 | 
			
		||||
        IEventBus modEventBus = context.getModEventBus();
 | 
			
		||||
 | 
			
		||||
        // 为模组加载注册commonSetup方法
 | 
			
		||||
        modEventBus.addListener(this::commonSetup);
 | 
			
		||||
 | 
			
		||||
        // 将延迟注册器注册到模组事件总线,以便方块得到注册
 | 
			
		||||
        BLOCKS.register(modEventBus);
 | 
			
		||||
        // 将延迟注册器注册到模组事件总线,以便物品得到注册
 | 
			
		||||
@@ -247,33 +89,8 @@ public class BlackSugarModMain {
 | 
			
		||||
        context.registerConfig(ModConfig.Type.COMMON, Config.SPEC);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // 将示例方块物品添加到建筑方块标签页
 | 
			
		||||
    private void addCreative(BuildCreativeModeTabContentsEvent event) {
 | 
			
		||||
        // 将黑糖物品添加到食物和饮品标签页
 | 
			
		||||
        if (event.getTabKey() == CreativeModeTabs.FOOD_AND_DRINKS) {
 | 
			
		||||
            event.accept(BLACK_SUGAR);
 | 
			
		||||
            event.accept(DOUGH);
 | 
			
		||||
            event.accept(BLACK_SUGAR_DUMPLING);
 | 
			
		||||
            event.accept(CRISPY_BRO);
 | 
			
		||||
            event.accept(COOKING_OIL);
 | 
			
		||||
            event.accept(INDESTRUCTIBLE_STARFISH);
 | 
			
		||||
            event.accept(STARFISH_SKEWER);
 | 
			
		||||
            event.accept(MARSHMALLOW);
 | 
			
		||||
            event.accept(ROASTED_MARSHMALLOW);
 | 
			
		||||
            event.accept(CARCINOGENIC_MARSHMALLOW);
 | 
			
		||||
            event.accept(SAKABAN_TURTLE);
 | 
			
		||||
            event.accept(SCALLION);
 | 
			
		||||
            event.accept(PICKLED_TURTLE);
 | 
			
		||||
            event.accept(BLAND_KITTEN);
 | 
			
		||||
            event.accept(MALICIOUS_KITTEN);
 | 
			
		||||
            event.accept(FRAGRANT_STARFISH_SKEWER);
 | 
			
		||||
            event.accept(POT_OF_PRISON_VEGETABLES);
 | 
			
		||||
            event.accept(BRAISED_PRISON_VEGETABLES);
 | 
			
		||||
            event.accept(CHARCOAL_GRILLED_TURTLE);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void commonSetup(final FMLCommonSetupEvent event) {
 | 
			
		||||
    private void commonSetup(final FMLCommonSetupEvent event)
 | 
			
		||||
    {
 | 
			
		||||
        // 一些通用设置代码
 | 
			
		||||
        LOGGER.info("HELLO FROM COMMON SETUP");
 | 
			
		||||
 | 
			
		||||
@@ -285,20 +102,31 @@ public class BlackSugarModMain {
 | 
			
		||||
        Config.items.forEach((item) -> LOGGER.info("ITEM >> {}", item.toString()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // 将黑糖物品添加到食物和饮品标签页
 | 
			
		||||
    private void addCreative(BuildCreativeModeTabContentsEvent event)
 | 
			
		||||
    {
 | 
			
		||||
        if (event.getTabKey() == CreativeModeTabs.FOOD_AND_DRINKS) {
 | 
			
		||||
            event.accept(BLACK_SUGAR);
 | 
			
		||||
            event.accept(DOUGH);
 | 
			
		||||
            event.accept(BLACK_SUGAR_DUMPLING);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // 你可以使用SubscribeEvent并让事件总线发现要调用的方法
 | 
			
		||||
    @SubscribeEvent
 | 
			
		||||
    public void onServerStarting(ServerStartingEvent event) {
 | 
			
		||||
    public void onServerStarting(ServerStartingEvent event)
 | 
			
		||||
    {
 | 
			
		||||
        // 当服务器启动时执行某些操作
 | 
			
		||||
        LOGGER.info("HELLO from server starting");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // 你可以使用EventBusSubscriber来自动注册类中所有带有@SubscribeEvent注解的静态方法
 | 
			
		||||
    @Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
 | 
			
		||||
    public static class ClientModEvents {
 | 
			
		||||
    public static class ClientModEvents
 | 
			
		||||
    {
 | 
			
		||||
        @SubscribeEvent
 | 
			
		||||
        public static void onClientSetup(FMLClientSetupEvent event) {
 | 
			
		||||
        public static void onClientSetup(FMLClientSetupEvent event)
 | 
			
		||||
        {
 | 
			
		||||
            // 一些客户端设置代码
 | 
			
		||||
            LOGGER.info("HELLO FROM CLIENT SETUP");
 | 
			
		||||
            LOGGER.info("MINECRAFT NAME >> {}", Minecraft.getInstance().getUser().getName());
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,8 @@ 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 = BlackSugarModMain.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
 | 
			
		||||
public class Config {
 | 
			
		||||
public class Config
 | 
			
		||||
{
 | 
			
		||||
    private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder();
 | 
			
		||||
 | 
			
		||||
    private static final ForgeConfigSpec.BooleanValue LOG_DIRT_BLOCK = BUILDER
 | 
			
		||||
@@ -33,7 +34,7 @@ public class Config {
 | 
			
		||||
    // a list of strings that are treated as resource locations for items
 | 
			
		||||
    private static final ForgeConfigSpec.ConfigValue<List<? extends String>> ITEM_STRINGS = BUILDER
 | 
			
		||||
            .comment("A list of items to log on common setup.")
 | 
			
		||||
            .defineListAllowEmpty("assets/blacksugarmod/items", List.of("minecraft:iron_ingot"), Config::validateItemName);
 | 
			
		||||
            .defineListAllowEmpty("items", List.of("minecraft:iron_ingot"), Config::validateItemName);
 | 
			
		||||
 | 
			
		||||
    static final ForgeConfigSpec SPEC = BUILDER.build();
 | 
			
		||||
 | 
			
		||||
@@ -42,19 +43,21 @@ public class Config {
 | 
			
		||||
    public static String magicNumberIntroduction;
 | 
			
		||||
    public static Set<Item> items;
 | 
			
		||||
 | 
			
		||||
    private static boolean validateItemName(final Object obj) {
 | 
			
		||||
        return obj instanceof final String itemName && ForgeRegistries.ITEMS.containsKey(ResourceLocation.tryParse(itemName));
 | 
			
		||||
    private static boolean validateItemName(final Object obj)
 | 
			
		||||
    {
 | 
			
		||||
        return obj instanceof final String itemName && ForgeRegistries.ITEMS.containsKey(ResourceLocation.parse(itemName));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @SubscribeEvent
 | 
			
		||||
    static void onLoad(final ModConfigEvent event) {
 | 
			
		||||
    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)))
 | 
			
		||||
                .map(itemName -> ForgeRegistries.ITEMS.getValue(ResourceLocation.parse(itemName)))
 | 
			
		||||
                .collect(Collectors.toSet());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -19,18 +19,20 @@ license="${mod_license}"
 | 
			
		||||
[[mods]] #mandatory
 | 
			
		||||
# The modid of the mod
 | 
			
		||||
modId="${mod_id}" #mandatory
 | 
			
		||||
# The version number of the mod
 | 
			
		||||
# The version number of the mod - there's a few well known ${} variables useable here or just hardcode it
 | 
			
		||||
# ${mod_version} will substitute the value from gradle.properties
 | 
			
		||||
# see the associated build.gradle script for how to populate this completely automatically
 | 
			
		||||
version="${mod_version}" #mandatory
 | 
			
		||||
# A display name for the mod
 | 
			
		||||
 # A display name for the mod
 | 
			
		||||
displayName="${mod_name}" #mandatory
 | 
			
		||||
# A URL to query for updates for this mod. See the JSON update specification https://docs.minecraftforge.net/en/latest/misc/updatechecker/
 | 
			
		||||
#updateJSONURL="https://change.me.example.invalid/updates.json" #optional
 | 
			
		||||
# A URL for the "homepage" for this mod, displayed in the mod UI
 | 
			
		||||
#displayURL="https://change.me.to.your.mods.homepage.example.invalid/" #optional
 | 
			
		||||
# A file name (in the root of the mod JAR) containing a logo for display
 | 
			
		||||
#logoFile="examplemod.png" #optional
 | 
			
		||||
logoFile="examplemod.png" #optional
 | 
			
		||||
# A text field displayed in the mod UI
 | 
			
		||||
#credits="" #optional
 | 
			
		||||
credits="${mod_description}" #optional
 | 
			
		||||
# A text field displayed in the mod UI
 | 
			
		||||
authors="${mod_authors}" #optional
 | 
			
		||||
# Display Test controls the display for your mod in the server connection screen
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "model": {
 | 
			
		||||
    "type": "minecraft:model",
 | 
			
		||||
    "model": "blacksugarmod:item/bland_kitten"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "model": {
 | 
			
		||||
    "type": "minecraft:model",
 | 
			
		||||
    "model": "blacksugarmod:item/braised_prison_vegetables"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "model": {
 | 
			
		||||
    "type": "minecraft:model",
 | 
			
		||||
    "model": "blacksugarmod:item/carcinogenic_marshmallow"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "model": {
 | 
			
		||||
    "type": "minecraft:model",
 | 
			
		||||
    "model": "blacksugarmod:item/charcoal_grilled_turtle"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "model": {
 | 
			
		||||
    "type": "minecraft:model",
 | 
			
		||||
    "model": "blacksugarmod:item/cooking_oil"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "model": {
 | 
			
		||||
    "type": "minecraft:model",
 | 
			
		||||
    "model": "blacksugarmod:item/crispy_bro"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "model": {
 | 
			
		||||
    "type": "minecraft:model",
 | 
			
		||||
    "model": "blacksugarmod:item/fragrant_starfish_skewer"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "model": {
 | 
			
		||||
    "type": "minecraft:model",
 | 
			
		||||
    "model": "blacksugarmod:item/indestructible_starfish"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "model": {
 | 
			
		||||
    "type": "minecraft:model",
 | 
			
		||||
    "model": "blacksugarmod:item/malicious_kitten"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "model": {
 | 
			
		||||
    "type": "minecraft:model",
 | 
			
		||||
    "model": "blacksugarmod:item/marshmallow"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "model": {
 | 
			
		||||
    "type": "minecraft:model",
 | 
			
		||||
    "model": "blacksugarmod:item/pickled_turtle"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "model": {
 | 
			
		||||
    "type": "minecraft:model",
 | 
			
		||||
    "model": "blacksugarmod:item/pot_of_prison_vegetables"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "model": {
 | 
			
		||||
    "type": "minecraft:model",
 | 
			
		||||
    "model": "blacksugarmod:item/roasted_marshmallow"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "model": {
 | 
			
		||||
    "type": "minecraft:model",
 | 
			
		||||
    "model": "blacksugarmod:item/sakaban_turtle"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "model": {
 | 
			
		||||
    "type": "minecraft:model",
 | 
			
		||||
    "model": "blacksugarmod:item/scallion"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "model": {
 | 
			
		||||
    "type": "minecraft:model",
 | 
			
		||||
    "model": "blacksugarmod:item/starfish_skewer"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,21 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "item.blacksugarmod.black_sugar": "黑糖",
 | 
			
		||||
  "item.blacksugarmod.dough": "面团",
 | 
			
		||||
  "item.blacksugarmod.black_sugar_dumpling": "黑糖团子",
 | 
			
		||||
  "item.blacksugarmod.crispy_bro": "脆香bro",
 | 
			
		||||
  "item.blacksugarmod.cooking_oil": "食用油",
 | 
			
		||||
  "item.blacksugarmod.indestructible_starfish": "坚不可摧的海星",
 | 
			
		||||
  "item.blacksugarmod.starfish_skewer": "海星串",
 | 
			
		||||
  "item.blacksugarmod.marshmallow": "棉花糖",
 | 
			
		||||
  "item.blacksugarmod.roasted_marshmallow": "烤棉花糖",
 | 
			
		||||
  "item.blacksugarmod.carcinogenic_marshmallow": "致癌的棉花糖",
 | 
			
		||||
  "item.blacksugarmod.sakaban_turtle": "萨卡班甲鱼",
 | 
			
		||||
  "item.blacksugarmod.scallion": "葱花",
 | 
			
		||||
  "item.blacksugarmod.pickled_turtle": "腌好的萨卡班甲鱼",
 | 
			
		||||
  "item.blacksugarmod.bland_kitten": "一只觉得嘴里淡淡的小猫咪",
 | 
			
		||||
  "item.blacksugarmod.malicious_kitten": "一只心怀歹念的小猫咪",
 | 
			
		||||
  "item.blacksugarmod.fragrant_starfish_skewer": "香喷喷的串海星",
 | 
			
		||||
  "item.blacksugarmod.pot_of_prison_vegetables": "一锅牢菜",
 | 
			
		||||
  "item.blacksugarmod.braised_prison_vegetables": "闷牢菜",
 | 
			
		||||
  "item.blacksugarmod.charcoal_grilled_turtle": "炭烤萨卡班甲鱼"
 | 
			
		||||
  "item.blacksugarmod.black_sugar_dumpling": "黑糖团子"
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "parent": "minecraft:item/generated",
 | 
			
		||||
  "textures": {
 | 
			
		||||
    "layer0": "blacksugarmod:item/bland_kitten"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "parent": "minecraft:item/generated",
 | 
			
		||||
  "textures": {
 | 
			
		||||
    "layer0": "blacksugarmod:item/braised_prison_vegetables"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "parent": "minecraft:item/generated",
 | 
			
		||||
  "textures": {
 | 
			
		||||
    "layer0": "blacksugarmod:item/carcinogenic_marshmallow"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "parent": "minecraft:item/generated",
 | 
			
		||||
  "textures": {
 | 
			
		||||
    "layer0": "blacksugarmod:item/charcoal_grilled_turtle"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "parent": "minecraft:item/generated",
 | 
			
		||||
  "textures": {
 | 
			
		||||
    "layer0": "blacksugarmod:item/cooking_oil"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "parent": "minecraft:item/generated",
 | 
			
		||||
  "textures": {
 | 
			
		||||
    "layer0": "blacksugarmod:item/crispy_bro"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "parent": "minecraft:item/generated",
 | 
			
		||||
  "textures": {
 | 
			
		||||
    "layer0": "blacksugarmod:item/fragrant_starfish_skewer"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "parent": "minecraft:item/generated",
 | 
			
		||||
  "textures": {
 | 
			
		||||
    "layer0": "blacksugarmod:item/indestructible_starfish"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "parent": "minecraft:item/generated",
 | 
			
		||||
  "textures": {
 | 
			
		||||
    "layer0": "blacksugarmod:item/malicious_kitten"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "parent": "minecraft:item/generated",
 | 
			
		||||
  "textures": {
 | 
			
		||||
    "layer0": "blacksugarmod:item/marshmallow"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "parent": "minecraft:item/generated",
 | 
			
		||||
  "textures": {
 | 
			
		||||
    "layer0": "blacksugarmod:item/pickled_turtle"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "parent": "minecraft:item/generated",
 | 
			
		||||
  "textures": {
 | 
			
		||||
    "layer0": "blacksugarmod:item/pot_of_prison_vegetables"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "parent": "minecraft:item/generated",
 | 
			
		||||
  "textures": {
 | 
			
		||||
    "layer0": "blacksugarmod:item/roasted_marshmallow"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "parent": "minecraft:item/generated",
 | 
			
		||||
  "textures": {
 | 
			
		||||
    "layer0": "blacksugarmod:item/sakaban_turtle"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "parent": "minecraft:item/generated",
 | 
			
		||||
  "textures": {
 | 
			
		||||
    "layer0": "blacksugarmod:item/scallion"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "parent": "minecraft:item/generated",
 | 
			
		||||
  "textures": {
 | 
			
		||||
    "layer0": "blacksugarmod:item/starfish_skewer"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 2.0 KiB  | 
| 
		 Before Width: | Height: | Size: 2.8 KiB  | 
| 
		 Before Width: | Height: | Size: 1.7 KiB  | 
| 
		 Before Width: | Height: | Size: 1.9 KiB  | 
| 
		 Before Width: | Height: | Size: 2.1 KiB  | 
| 
		 Before Width: | Height: | Size: 1.6 KiB  | 
| 
		 Before Width: | Height: | Size: 1.6 KiB  | 
| 
		 Before Width: | Height: | Size: 2.0 KiB  | 
| 
		 Before Width: | Height: | Size: 2.2 KiB  | 
| 
		 Before Width: | Height: | Size: 1.6 KiB  | 
| 
		 Before Width: | Height: | Size: 1.3 KiB  | 
| 
		 Before Width: | Height: | Size: 2.7 KiB  | 
| 
		 Before Width: | Height: | Size: 2.2 KiB  | 
| 
		 Before Width: | Height: | Size: 1.3 KiB  | 
| 
		 Before Width: | Height: | Size: 1.9 KiB  | 
| 
		 Before Width: | Height: | Size: 1.9 KiB  | 
@@ -1,10 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "type": "minecraft:smelting",
 | 
			
		||||
  "experience": 0.1,
 | 
			
		||||
  "cookingtime": 100,
 | 
			
		||||
  "ingredient": "minecraft:sugar_cane",
 | 
			
		||||
  "result":{
 | 
			
		||||
    "id":"blacksugarmod:black_sugar",
 | 
			
		||||
    "count": 1
 | 
			
		||||
  } 
 | 
			
		||||
}
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "type": "minecraft:crafting_shaped",
 | 
			
		||||
  "key": {
 | 
			
		||||
    "B":"blacksugarmod:black_sugar",
 | 
			
		||||
    "D":"blacksugarmod:dough"
 | 
			
		||||
  },
 | 
			
		||||
  "pattern": [
 | 
			
		||||
    "BBB",
 | 
			
		||||
    "BDB",
 | 
			
		||||
    "BBB"
 | 
			
		||||
  ],
 | 
			
		||||
  "result": {
 | 
			
		||||
    "id": "blacksugarmod:black_sugar_dumpling",
 | 
			
		||||
    "count": 2
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,10 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "type": "minecraft:smelting",
 | 
			
		||||
  "experience": 0.35,
 | 
			
		||||
  "cookingtime": 400,
 | 
			
		||||
  "ingredient": "blacksugarmod:pot_of_prison_vegetables",
 | 
			
		||||
  "result": {
 | 
			
		||||
    "id": "blacksugarmod:braised_prison_vegetables",
 | 
			
		||||
    "count": 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,10 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "type": "minecraft:campfire_cooking",
 | 
			
		||||
  "experience": 0.35,
 | 
			
		||||
  "cookingtime": 100,
 | 
			
		||||
  "ingredient": "blacksugarmod:marshmallow",
 | 
			
		||||
  "result": {
 | 
			
		||||
    "id": "blacksugarmod:carcinogenic_marshmallow",
 | 
			
		||||
    "count": 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,10 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "type": "minecraft:campfire_cooking",
 | 
			
		||||
  "experience": 0.35,
 | 
			
		||||
  "cookingtime": 200,
 | 
			
		||||
  "ingredient": "blacksugarmod:pickled_turtle",
 | 
			
		||||
  "result": {
 | 
			
		||||
    "id": "blacksugarmod:charcoal_grilled_turtle",
 | 
			
		||||
    "count": 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,12 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "type": "minecraft:crafting_shapeless",
 | 
			
		||||
  "ingredients": [
 | 
			
		||||
    "minecraft:bone",
 | 
			
		||||
    "blacksugarmod:cooking_oil",
 | 
			
		||||
    "blacksugarmod:scallion"
 | 
			
		||||
  ],
 | 
			
		||||
  "result": {
 | 
			
		||||
    "id": "blacksugarmod:crispy_bro",
 | 
			
		||||
    "count": 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,12 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "type": "minecraft:crafting_shapeless",
 | 
			
		||||
  "ingredients": [
 | 
			
		||||
    "minecraft:wheat",
 | 
			
		||||
    "minecraft:water_bucket",
 | 
			
		||||
    "minecraft:wheat"
 | 
			
		||||
  ],
 | 
			
		||||
  "result": {
 | 
			
		||||
    "id": "blacksugarmod:dough",
 | 
			
		||||
    "count": 2
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,10 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "type": "minecraft:campfire_cooking",
 | 
			
		||||
  "experience": 0.35,
 | 
			
		||||
  "cookingtime": 200,
 | 
			
		||||
  "ingredient": "blacksugarmod:starfish_skewer",
 | 
			
		||||
  "result": {
 | 
			
		||||
    "id": "blacksugarmod:fragrant_starfish_skewer",
 | 
			
		||||
    "count": 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,13 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "type": "minecraft:crafting_shapeless",
 | 
			
		||||
  "ingredients": [
 | 
			
		||||
    "blacksugarmod:bland_kitten",
 | 
			
		||||
    "blacksugarmod:cooking_oil",
 | 
			
		||||
    "blacksugarmod:scallion",
 | 
			
		||||
    "minecraft:nether_wart"
 | 
			
		||||
  ],
 | 
			
		||||
  "result": {
 | 
			
		||||
    "id": "blacksugarmod:malicious_kitten",
 | 
			
		||||
    "count": 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,12 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "type": "minecraft:crafting_shapeless",
 | 
			
		||||
  "ingredients": [
 | 
			
		||||
    "blacksugarmod:sakaban_turtle",
 | 
			
		||||
    "blacksugarmod:scallion",
 | 
			
		||||
    "blacksugarmod:cooking_oil"
 | 
			
		||||
  ],
 | 
			
		||||
  "result": {
 | 
			
		||||
    "id": "blacksugarmod:pickled_turtle",
 | 
			
		||||
    "count": 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,12 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "type": "minecraft:crafting_shapeless",
 | 
			
		||||
  "ingredients": [
 | 
			
		||||
    "minecraft:poppy",
 | 
			
		||||
    "minecraft:carrot",
 | 
			
		||||
    "minecraft:water_bucket"
 | 
			
		||||
  ],
 | 
			
		||||
  "result": {
 | 
			
		||||
    "id": "blacksugarmod:pot_of_prison_vegetables",
 | 
			
		||||
    "count": 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,10 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "type": "minecraft:smelting",
 | 
			
		||||
  "experience": 0.35,
 | 
			
		||||
  "cookingtime": 100,
 | 
			
		||||
  "ingredient": "blacksugarmod:marshmallow",
 | 
			
		||||
  "result": {
 | 
			
		||||
    "id": "blacksugarmod:roasted_marshmallow",
 | 
			
		||||
    "count": 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "type": "minecraft:crafting_shapeless",
 | 
			
		||||
  "ingredients": [
 | 
			
		||||
    "blacksugarmod:indestructible_starfish",
 | 
			
		||||
    "blacksugarmod:indestructible_starfish",
 | 
			
		||||
    "blacksugarmod:indestructible_starfish",
 | 
			
		||||
    "minecraft:nether_wart",
 | 
			
		||||
    "blacksugarmod:cooking_oil",
 | 
			
		||||
    "blacksugarmod:scallion",
 | 
			
		||||
    "minecraft:stick"
 | 
			
		||||
  ],
 | 
			
		||||
  "result": {
 | 
			
		||||
    "id": "blacksugarmod:starfish_skewer",
 | 
			
		||||
    "count": 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,12 @@
 | 
			
		||||
{
 | 
			
		||||
  "type": "minecraft:smelting",
 | 
			
		||||
  "ingredient": {
 | 
			
		||||
    "item": "minecraft:sugar_cane"
 | 
			
		||||
  },
 | 
			
		||||
  "result": {
 | 
			
		||||
    "item": "blacksugarmod:black_sugar",
 | 
			
		||||
    "count": 1
 | 
			
		||||
  },
 | 
			
		||||
  "experience": 0.1,
 | 
			
		||||
  "cookingtime": 100
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,20 @@
 | 
			
		||||
{
 | 
			
		||||
  "type": "minecraft:crafting_shaped",
 | 
			
		||||
  "pattern": [
 | 
			
		||||
    "BBB",
 | 
			
		||||
    "BDB",
 | 
			
		||||
    "BBB"
 | 
			
		||||
  ],
 | 
			
		||||
  "key": {
 | 
			
		||||
    "B": {
 | 
			
		||||
      "item": "blacksugarmod:black_sugar"
 | 
			
		||||
    },
 | 
			
		||||
    "D": {
 | 
			
		||||
      "item": "blacksugarmod:dough"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "result": {
 | 
			
		||||
    "item": "blacksugarmod:black_sugar_dumpling",
 | 
			
		||||
    "count": 2
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,18 @@
 | 
			
		||||
{
 | 
			
		||||
  "type": "minecraft:crafting_shapeless",
 | 
			
		||||
  "ingredients": [
 | 
			
		||||
    {
 | 
			
		||||
      "item": "minecraft:wheat"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "item": "minecraft:water_bucket"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "item": "minecraft:wheat"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "result": {
 | 
			
		||||
    "item": "blacksugarmod:dough",
 | 
			
		||||
    "count": 2
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,8 @@
 | 
			
		||||
{
 | 
			
		||||
  "pack": {
 | 
			
		||||
    "description": "${mod_id} resources",
 | 
			
		||||
    "pack_format": 46
 | 
			
		||||
    "description": {
 | 
			
		||||
      "text": "${mod_id} resources"
 | 
			
		||||
    },
 | 
			
		||||
    "pack_format": 15
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||