Compare commits

..

7 Commits

Author SHA1 Message Date
ff755932f1 1.20.1适配 2025-09-20 10:26:09 +08:00
a290a5b839 再改一下readme 2025-08-28 16:50:30 +08:00
675c38d777 这么坏的小猫咪一定要能吃 2025-08-28 16:50:18 +08:00
11de654ec5 再改一下readme 2025-08-28 16:45:25 +08:00
9807ea6410 再改一下readme 2025-08-28 16:43:08 +08:00
132542a800 就这样吧,改一下版本号 2025-08-28 16:34:02 +08:00
e752d21807 把小猫咪变成月泗就好了,我真是天才 2025-08-28 16:22:14 +08:00
80 changed files with 1217 additions and 1082 deletions

View File

@@ -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 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 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 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 First, the people who originally created the Forge projects way back in Minecraft
alpha. Eloraam of RedPower, and SpaceToad of Buildcraft, without their acceptiance 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 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 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. 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 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. The code is authored by cpw.
It began by partially implementing an API defined by the client side ModLoader, authored by Risugami. 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. 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. 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 Additionally, it contains an implementation of topological sort based on that
published at http://keithschwarz.com/interesting/code/?dir=topological-sort published at http://keithschwarz.com/interesting/code/?dir=topological-sort

View File

@@ -40,7 +40,7 @@ https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md
Additional Resources: 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 LexManos' Install Video: https://youtu.be/8VEdtQLuLO0
Forge Forums: https://forums.minecraftforge.net/ Forge Forums: https://forums.minecraftforge.net/
Forge Discord: https://discord.minecraftforge.net/ Forge Discord: https://discord.minecraftforge.net/

Binary file not shown.

View File

@@ -2,7 +2,7 @@ plugins {
id 'eclipse' id 'eclipse'
id 'idea' id 'idea'
id 'maven-publish' 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 version = mod_version
@@ -12,8 +12,8 @@ base {
archivesName = mod_id archivesName = mod_id
} }
// Mojang ships Java 21 to end users in 1.20.5+, so your mod should target Java 21. // Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17.
java.toolchain.languageVersion = JavaLanguageVersion.of(21) 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'}" println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}"
minecraft { minecraft {
@@ -22,15 +22,16 @@ minecraft {
// official MCVersion Official field/method names from Mojang mapping files // 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 // 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 // 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 // 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. // Simply re-run your setup task after changing the mappings to update your workspace.
mappings channel: mapping_channel, version: mapping_version 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. // 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. // In most cases, it is not necessary to enable.
// enableEclipsePrepareRuns = true // 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. // By default, the folder name of a run configuration is the name of the Gradle project containing it.
// generateRunFolders = true // 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. // 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. // 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. // 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 { configureEach {
workingDirectory project.file('run') 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. // "SCAN": For mods scan.
// "REGISTRIES": For firing of registry events. // "REGISTRIES": For firing of registry events.
// "REGISTRYDUMP": For getting the contents of all registries. // "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' property 'forge.logging.console.level', 'debug'
// arg "-mixin.config=${mod_id}.mixins.json" mods {
"${mod_id}" {
source sourceSets.main
}
}
} }
client { client {
@@ -103,26 +113,7 @@ sourceSets.main.resources { srcDir 'src/generated/resources' }
repositories { repositories {
// Put repositories for dependencies here // Put repositories for dependencies here
mavenCentral() // ForgeGradle automatically adds the Forge maven and Maven Central for you
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. // 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 // 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. // 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}" 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 // 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 fg.deobf("mezz.jei:jei-${mc_version}-common-api:${jei_version}")
// compileOnly "mezz.jei:jei-${mc_version}-forge-api:${jei_version}" // compileOnly fg.deobf("mezz.jei:jei-${mc_version}-forge-api:${jei_version}")
// runtimeOnly "mezz.jei:jei-${mc_version}-forge:${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 // Example mod dependency using a mod jar from ./libs with a flat dir repository
// This maps to ./libs/coolmod-${mc_version}-${coolmod_version}.jar // 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. // 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. // 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 // 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 = [ var replaceProperties = [
minecraft_version: minecraft_version, minecraft_version_range: minecraft_version_range, minecraft_version: minecraft_version, minecraft_version_range: minecraft_version_range,
forge_version: forge_version, forge_version_range: forge_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. // Example for how to get properties into the manifest for reading at runtime.
tasks.named('jar', Jar) { tasks.named('jar', Jar).configure {
manifest { manifest {
attributes([ attributes([
'Specification-Title' : mod_id, 'Specification-Title' : mod_id,
@@ -183,12 +174,20 @@ tasks.named('jar', Jar) {
'Specification-Version' : '1', // We are version 1 of ourselves 'Specification-Version' : '1', // We are version 1 of ourselves
'Implementation-Title' : project.name, 'Implementation-Title' : project.name,
'Implementation-Version' : project.jar.archiveVersion, '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 // Example configuration to allow publishing using the maven-publish plugin
publishing { publishing {
publications { publications {
@@ -206,22 +205,3 @@ publishing {
tasks.withType(JavaCompile).configureEach { tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation 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
}

File diff suppressed because it is too large Load Diff

View File

@@ -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. # This is required to provide enough memory for the Minecraft decompilation process.
org.gradle.jvmargs=-Xmx5G org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false 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 ## Environment Properties
# The Minecraft version must agree with the Forge version to get a valid artifact # 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. # 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 # Snapshots, pre-releases, and release candidates are not guaranteed to sort properly
# as they do not follow standard versioning conventions. # 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 # 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 # 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 # 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 mapping channel to use for mappings.
# The default set of supported mapping channels are ["official", "snapshot", "snapshot_nodoc", "stable", "stable_nodoc"]. # 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. # 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 mapping_channel=official
# The mapping version to query from the mapping channel. # The mapping version to query from the mapping channel.
# This must match the format required by 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 ## 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. # The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
mod_license=All Rights Reserved mod_license=All Rights Reserved
# The mod version. See https://semver.org/ # 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. # 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. # This should match the base package used for the mod sources.
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html # 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. # The authors of the mod. This is a simple text string that is used for display purposes in the mod list.
mod_authors=SPDIS 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. # 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.

Binary file not shown.

View File

@@ -1,7 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists 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 networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

22
gradlew vendored
View File

@@ -83,8 +83,7 @@ done
# This is normally unused # This is normally unused
# shellcheck disable=SC2034 # shellcheck disable=SC2034
APP_BASE_NAME=${0##*/} 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:-./}" && pwd -P ) || exit
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value. # Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum MAX_FD=maximum
@@ -131,13 +130,10 @@ location of your Java installation."
fi fi
else else
JAVACMD=java JAVACMD=java
if ! command -v java >/dev/null 2>&1 which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
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 Please set the JAVA_HOME variable in your environment to match the
location of your Java installation." location of your Java installation."
fi
fi fi
# Increase the maximum file descriptors if we can. # Increase the maximum file descriptors if we can.
@@ -145,7 +141,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #( case $MAX_FD in #(
max*) max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. # 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 ) || MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit" warn "Could not query maximum file descriptor limit"
esac esac
@@ -153,7 +149,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
'' | soft) :;; #( '' | soft) :;; #(
*) *)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. # 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" || ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD" warn "Could not set maximum file descriptor limit to $MAX_FD"
esac 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. # 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"' DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command: # Collect all arguments for the java command;
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# and any embedded shellness will be escaped. # shell script including quotes and variable substitutions, so put them in
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # double quotes to make sure that they get re-expanded; and
# treated as '${Hostname}' itself on the command line. # * put everything else in single quotes, so that it's not re-expanded.
set -- \ set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \ "-Dorg.gradle.appname=$APP_BASE_NAME" \

20
gradlew.bat vendored
View File

@@ -43,11 +43,11 @@ set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1 %JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute if %ERRORLEVEL% equ 0 goto execute
echo. 1>&2 echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo. 1>&2 echo.
echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation. 1>&2 echo location of your Java installation.
goto fail goto fail
@@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute if exist "%JAVA_EXE%" goto execute
echo. 1>&2 echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo. 1>&2 echo.
echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation. 1>&2 echo location of your Java installation.
goto fail goto fail

View File

@@ -9,5 +9,5 @@ pluginManagement {
} }
plugins { plugins {
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.10.0' id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0'
} }

View File

@@ -4,11 +4,14 @@ import com.mojang.logging.LogUtils;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.core.registries.Registries; import net.minecraft.core.registries.Registries;
import net.minecraft.world.food.FoodProperties; import net.minecraft.world.food.FoodProperties;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.CreativeModeTabs;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.material.MapColor;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; import net.minecraftforge.event.BuildCreativeModeTabContentsEvent;
@@ -27,7 +30,8 @@ import org.slf4j.Logger;
// 这里的值应该与 META-INF/mods.toml 文件中的条目匹配 // 这里的值应该与 META-INF/mods.toml 文件中的条目匹配
@Mod(BlackSugarModMain.MODID) @Mod(BlackSugarModMain.MODID)
public class BlackSugarModMain { public class BlackSugarModMain
{
// 在一个公共位置定义模组ID供所有地方引用 // 在一个公共位置定义模组ID供所有地方引用
public static final String MODID = "blacksugarmod"; public static final String MODID = "blacksugarmod";
// 直接引用slf4j日志记录器 // 直接引用slf4j日志记录器
@@ -39,192 +43,35 @@ public class BlackSugarModMain {
// 创建一个延迟注册器来保存创造模式标签页,所有标签页都将在"blacksugarmod"命名空间下注册 // 创建一个延迟注册器来保存创造模式标签页,所有标签页都将在"blacksugarmod"命名空间下注册
public static final DeferredRegister<CreativeModeTab> CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MODID); 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", public static final RegistryObject<Item> BLACK_SUGAR = ITEMS.register("black_sugar",
() -> new Item(new Item.Properties() () -> new Item(new Item.Properties())
.setId(ITEMS.key("black_sugar"))
)
); );
// 面团物品 // 面团物品
public static final RegistryObject<Item> DOUGH = ITEMS.register("dough", public static final RegistryObject<Item> DOUGH = ITEMS.register("dough",
() -> new Item(new Item.Properties() () -> new Item(new Item.Properties())
.setId(ITEMS.key("dough"))
)
); );
// 黑糖团子物品,可食用 // 黑糖团子物品,可食用
public static final RegistryObject<Item> BLACK_SUGAR_DUMPLING = ITEMS.register("black_sugar_dumpling", public static final RegistryObject<Item> BLACK_SUGAR_DUMPLING = ITEMS.register("black_sugar_dumpling",
() -> new Item(new Item.Properties() () -> new Item(new Item.Properties()
.setId(ITEMS.key("black_sugar_dumpling"))
.food(new FoodProperties.Builder() .food(new FoodProperties.Builder()
.alwaysEdible() .alwaysEat()
.nutrition(4) .nutrition(4)
.saturationModifier(9.6f) .saturationMod(9.6f)
.build() .build()
) )
) )
); );
// 脆香bro物品可食用 public BlackSugarModMain(FMLJavaModLoadingContext context)
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"))
.food(new FoodProperties.Builder()
.alwaysEdible()
.nutrition(2)
.saturationModifier(2.0f)
.build()
)
)
);
// 烤棉花糖物品,可食用
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(0)
.saturationModifier(0.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"))
)
);
// 一只心怀歹念的小猫咪物品本来是想吃完之后返回自己然后给玩家上一个超级debuff现在看来好像有点难
public static final RegistryObject<Item> MALICIOUS_KITTEN = ITEMS.register("malicious_kitten",
() -> new Item(new Item.Properties()
.setId(ITEMS.key("malicious_kitten"))
)
);
// 香喷喷的串海星物品,可食用
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) {
IEventBus modEventBus = context.getModEventBus(); IEventBus modEventBus = context.getModEventBus();
// 为模组加载注册commonSetup方法 // 为模组加载注册commonSetup方法
modEventBus.addListener(this::commonSetup); modEventBus.addListener(this::commonSetup);
// 将延迟注册器注册到模组事件总线,以便方块得到注册 // 将延迟注册器注册到模组事件总线,以便方块得到注册
BLOCKS.register(modEventBus); BLOCKS.register(modEventBus);
// 将延迟注册器注册到模组事件总线,以便物品得到注册 // 将延迟注册器注册到模组事件总线,以便物品得到注册
@@ -242,33 +89,8 @@ public class BlackSugarModMain {
context.registerConfig(ModConfig.Type.COMMON, Config.SPEC); context.registerConfig(ModConfig.Type.COMMON, Config.SPEC);
} }
// 将示例方块物品添加到建筑方块标签页 private void commonSetup(final FMLCommonSetupEvent event)
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) {
// 一些通用设置代码 // 一些通用设置代码
LOGGER.info("HELLO FROM COMMON SETUP"); LOGGER.info("HELLO FROM COMMON SETUP");
@@ -280,20 +102,31 @@ public class BlackSugarModMain {
Config.items.forEach((item) -> LOGGER.info("ITEM >> {}", item.toString())); 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并让事件总线发现要调用的方法
@SubscribeEvent @SubscribeEvent
public void onServerStarting(ServerStartingEvent event) { public void onServerStarting(ServerStartingEvent event)
{
// 当服务器启动时执行某些操作 // 当服务器启动时执行某些操作
LOGGER.info("HELLO from server starting"); LOGGER.info("HELLO from server starting");
} }
// 你可以使用EventBusSubscriber来自动注册类中所有带有@SubscribeEvent注解的静态方法 // 你可以使用EventBusSubscriber来自动注册类中所有带有@SubscribeEvent注解的静态方法
@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) @Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
public static class ClientModEvents { public static class ClientModEvents
{
@SubscribeEvent @SubscribeEvent
public static void onClientSetup(FMLClientSetupEvent event) { public static void onClientSetup(FMLClientSetupEvent event)
{
// 一些客户端设置代码 // 一些客户端设置代码
LOGGER.info("HELLO FROM CLIENT SETUP"); LOGGER.info("HELLO FROM CLIENT SETUP");
LOGGER.info("MINECRAFT NAME >> {}", Minecraft.getInstance().getUser().getName()); LOGGER.info("MINECRAFT NAME >> {}", Minecraft.getInstance().getUser().getName());

View File

@@ -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. // 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 // Demonstrates how to use Forge's config APIs
@Mod.EventBusSubscriber(modid = BlackSugarModMain.MODID, bus = Mod.EventBusSubscriber.Bus.MOD) @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.Builder BUILDER = new ForgeConfigSpec.Builder();
private static final ForgeConfigSpec.BooleanValue LOG_DIRT_BLOCK = 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 // a list of strings that are treated as resource locations for items
private static final ForgeConfigSpec.ConfigValue<List<? extends String>> ITEM_STRINGS = BUILDER private static final ForgeConfigSpec.ConfigValue<List<? extends String>> ITEM_STRINGS = BUILDER
.comment("A list of items to log on common setup.") .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(); static final ForgeConfigSpec SPEC = BUILDER.build();
@@ -42,19 +43,21 @@ public class Config {
public static String magicNumberIntroduction; public static String magicNumberIntroduction;
public static Set<Item> items; public static Set<Item> items;
private static boolean validateItemName(final Object obj) { private static boolean validateItemName(final Object obj)
return obj instanceof final String itemName && ForgeRegistries.ITEMS.containsKey(ResourceLocation.tryParse(itemName)); {
return obj instanceof final String itemName && ForgeRegistries.ITEMS.containsKey(ResourceLocation.parse(itemName));
} }
@SubscribeEvent @SubscribeEvent
static void onLoad(final ModConfigEvent event) { static void onLoad(final ModConfigEvent event)
{
logDirtBlock = LOG_DIRT_BLOCK.get(); logDirtBlock = LOG_DIRT_BLOCK.get();
magicNumber = MAGIC_NUMBER.get(); magicNumber = MAGIC_NUMBER.get();
magicNumberIntroduction = MAGIC_NUMBER_INTRODUCTION.get(); magicNumberIntroduction = MAGIC_NUMBER_INTRODUCTION.get();
// convert the list of strings into a set of items // convert the list of strings into a set of items
items = ITEM_STRINGS.get().stream() items = ITEM_STRINGS.get().stream()
.map(itemName -> ForgeRegistries.ITEMS.getValue(ResourceLocation.tryParse(itemName))) .map(itemName -> ForgeRegistries.ITEMS.getValue(ResourceLocation.parse(itemName)))
.collect(Collectors.toSet()); .collect(Collectors.toSet());
} }
} }

View File

@@ -19,18 +19,20 @@ license="${mod_license}"
[[mods]] #mandatory [[mods]] #mandatory
# The modid of the mod # The modid of the mod
modId="${mod_id}" #mandatory 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 version="${mod_version}" #mandatory
# A display name for the mod # A display name for the mod
displayName="${mod_name}" #mandatory 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/ # 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 #updateJSONURL="https://change.me.example.invalid/updates.json" #optional
# A URL for the "homepage" for this mod, displayed in the mod UI # 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://change.me.to.your.mods.homepage.example.invalid/" #optional
# A file name (in the root of the mod JAR) containing a logo for display # 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 # A text field displayed in the mod UI
#credits="" #optional credits="${mod_description}" #optional
# A text field displayed in the mod UI # A text field displayed in the mod UI
authors="${mod_authors}" #optional authors="${mod_authors}" #optional
# Display Test controls the display for your mod in the server connection screen # Display Test controls the display for your mod in the server connection screen

View File

@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "blacksugarmod:item/bland_kitten"
}
}

View File

@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "blacksugarmod:item/braised_prison_vegetables"
}
}

View File

@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "blacksugarmod:item/carcinogenic_marshmallow"
}
}

View File

@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "blacksugarmod:item/charcoal_grilled_turtle"
}
}

View File

@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "blacksugarmod:item/cooking_oil"
}
}

View File

@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "blacksugarmod:item/crispy_bro"
}
}

View File

@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "blacksugarmod:item/fragrant_starfish_skewer"
}
}

View File

@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "blacksugarmod:item/indestructible_starfish"
}
}

View File

@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "blacksugarmod:item/malicious_kitten"
}
}

View File

@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "blacksugarmod:item/marshmallow"
}
}

View File

@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "blacksugarmod:item/pickled_turtle"
}
}

View File

@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "blacksugarmod:item/pot_of_prison_vegetables"
}
}

View File

@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "blacksugarmod:item/roasted_marshmallow"
}
}

View File

@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "blacksugarmod:item/sakaban_turtle"
}
}

View File

@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "blacksugarmod:item/scallion"
}
}

View File

@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "blacksugarmod:item/starfish_skewer"
}
}

View File

@@ -1,21 +1,5 @@
{ {
"item.blacksugarmod.black_sugar": "黑糖", "item.blacksugarmod.black_sugar": "黑糖",
"item.blacksugarmod.dough": "面团", "item.blacksugarmod.dough": "面团",
"item.blacksugarmod.black_sugar_dumpling": "黑糖团子", "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": "炭烤萨卡班甲鱼"
} }

View File

@@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "blacksugarmod:item/bland_kitten"
}
}

View File

@@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "blacksugarmod:item/braised_prison_vegetables"
}
}

View File

@@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "blacksugarmod:item/carcinogenic_marshmallow"
}
}

View File

@@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "blacksugarmod:item/charcoal_grilled_turtle"
}
}

View File

@@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "blacksugarmod:item/cooking_oil"
}
}

View File

@@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "blacksugarmod:item/crispy_bro"
}
}

View File

@@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "blacksugarmod:item/fragrant_starfish_skewer"
}
}

View File

@@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "blacksugarmod:item/indestructible_starfish"
}
}

View File

@@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "blacksugarmod:item/malicious_kitten"
}
}

View File

@@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "blacksugarmod:item/marshmallow"
}
}

View File

@@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "blacksugarmod:item/pickled_turtle"
}
}

View File

@@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "blacksugarmod:item/pot_of_prison_vegetables"
}
}

View File

@@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "blacksugarmod:item/roasted_marshmallow"
}
}

View File

@@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "blacksugarmod:item/sakaban_turtle"
}
}

View File

@@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "blacksugarmod:item/scallion"
}
}

View File

@@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "blacksugarmod:item/starfish_skewer"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -1,10 +0,0 @@
{
"type": "minecraft:smelting",
"experience": 0.1,
"cookingtime": 100,
"ingredient": "minecraft:sugar_cane",
"result":{
"id":"blacksugarmod:black_sugar",
"count": 1
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -1,10 +0,0 @@
{
"type": "minecraft:campfire_cooking",
"experience": 0.35,
"cookingtime": 100,
"ingredient": "blacksugarmod:marshmallow",
"result": {
"id": "blacksugarmod:carcinogenic_marshmallow",
"count": 1
}
}

View File

@@ -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
}
}

View File

@@ -1,12 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"minecraft:bone",
"blacksugarmod:cooking_oil",
"blacksugarmod:scallion"
],
"result": {
"id": "blacksugarmod:crispy_bro",
"count": 1
}
}

View File

@@ -1,12 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"minecraft:wheat",
"minecraft:water_bucket",
"minecraft:wheat"
],
"result": {
"id": "blacksugarmod:dough",
"count": 2
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -1,12 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"blacksugarmod:sakaban_turtle",
"blacksugarmod:scallion",
"blacksugarmod:cooking_oil"
],
"result": {
"id": "blacksugarmod:pickled_turtle",
"count": 1
}
}

View File

@@ -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
}
}

View File

@@ -1,10 +0,0 @@
{
"type": "minecraft:smelting",
"experience": 0.35,
"cookingtime": 100,
"ingredient": "blacksugarmod:marshmallow",
"result": {
"id": "blacksugarmod:roasted_marshmallow",
"count": 1
}
}

View File

@@ -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
}
}

View File

@@ -0,0 +1,12 @@
{
"type": "minecraft:smelting",
"ingredient": {
"item": "minecraft:sugar_cane"
},
"result": {
"item": "blacksugarmod:black_sugar",
"count": 1
},
"experience": 0.1,
"cookingtime": 100
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -1,6 +1,8 @@
{ {
"pack": { "pack": {
"description": "${mod_id} resources", "description": {
"pack_format": 46 "text": "${mod_id} resources"
},
"pack_format": 15
} }
} }