1.20.1适配

This commit is contained in:
2025-09-20 10:26:09 +08:00
parent a290a5b839
commit ff755932f1
104 changed files with 1252 additions and 1464 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
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

View File

@@ -1,155 +1,46 @@
为了防止我自己忘掉配方我让AI写了这个↓
# BlackSugar Mod
Source installation information for modders
-------------------------------------------
This code follows the Minecraft Forge installation methodology. It will apply
some small patches to the vanilla MCP source code, giving you and it access
to some of the data and functions you need to build a successful mod.
一个为Minecraft添加各种美味食物和可爱小猫咪的模组
Note also that the patches are built against "un-renamed" MCP source code (aka
SRG Names) - this means that you will not be able to read them directly against
normal code.
## 模组介绍
Setup Process:
==============================
BlackSugar Mod为游戏增加了丰富的食物系统和小猫咪互动机制。玩家可以通过不同的食物来改变小猫咪的状态体验有趣的合成系统。模组包含了从基础材料到终极物品的完整制作链。
Step 1: Open your command-line and browse to the folder where you extracted the zip file.
## 新增物品
Step 2: You're left with a choice.
If you prefer to use Eclipse:
1. Run the following command: `./gradlew genEclipseRuns`
2. Open Eclipse, Import > Existing Gradle Project > Select Folder
or run `gradlew eclipse` to generate the project.
### 基础材料
- **黑糖** (Black Sugar) - 模组的核心材料
- **面团** (Dough) - 用小麦和水制作的基础材料
- **食用油** (Cooking Oil) - 烹饪用油
- **葱花** (Scallion) - 调味料
If you prefer to use IntelliJ:
1. Open IDEA, and import project.
2. Select your build.gradle file and have it import.
3. Run the following command: `./gradlew genIntellijRuns`
4. Refresh the Gradle Project in IDEA if required.
### 海星系列
- **坚不可摧的海星** (Indestructible Starfish) - 坚硬的海星
- **海星串** (Starfish Skewer) - 串好的海星
- **香喷喷的串海星** (Fragrant Starfish Skewer) - 美味的烤海星串 ⭐可食用
### 甲鱼系列
- **萨卡班甲鱼** (Sakaban Turtle) - 原始甲鱼
- **腌好的萨卡班甲鱼** (Pickled Turtle) - 腌制后的甲鱼
- **炭烤萨卡班甲鱼** (Charcoal Grilled Turtle) - 烤制的美味甲鱼 ⭐可食用
### 棉花糖系列
- **棉花糖** (Marshmallow) - 基础棉花糖 ⭐可食用
- **烤棉花糖** (Roasted Marshmallow) - 烤制的棉花糖 ⭐可食用
- **致癌的棉花糖** (Carcinogenic Marshmallow) - 危险的棉花糖 ⭐可食用
### 蔬菜系列
- **一锅牢菜** (Pot of Prison Vegetables) - 蔬菜锅
- **闷牢菜** (Braised Prison Vegetables) - 炖煮的蔬菜 ⭐可食用
### 其他食物
- **黑糖团子** (Black Sugar Dumpling) - 甜美的团子 ⭐可食用
- **脆香bro** (Crispy Bro) - 酥脆美味的食物 ⭐可食用
### 小猫咪系列
- **一只觉得嘴里淡淡的小猫咪** (Bland Kitten) - 基础小猫咪
- **心满意足的小猫咪** (Satisfied Kitten) - 吃饱后的快乐小猫咪
- **发情的小猫咪** (Horny Kitten) - 吃了萝卜后的兴奋小猫咪
- **想吃肉的小猫咪** (Meat Craving Kitten) - 吃了素食后渴望肉类的小猫咪
- **一只心怀歹念的小猫咪** (Malicious Kitten) - 神秘的黑暗小猫咪
### 终极物品
- **Lover's Lover** - 需要多种珍贵材料合成的终极食物 ⭐可食用
## 合成配方
### 基础制作配方
#### 面团制作
- 小麦 + 水桶 + 小麦 = 面团 x2
### 小猫咪状态转换配方
#### 普通小猫咪 + 素食 → 想吃肉的小猫咪
- 一只觉得嘴里淡淡的小猫咪 + 闷牢菜 = 想吃肉的小猫咪
#### 普通小猫咪 + 肉类 → 心满意足的小猫咪
- 一只觉得嘴里淡淡的小猫咪 + 香喷喷的串海星 = 心满意足的小猫咪
- 一只觉得嘴里淡淡的小猫咪 + 炭烤萨卡班甲鱼 = 心满意足的小猫咪
- 一只觉得嘴里淡淡的小猫咪 + 脆香bro = 心满意足的小猫咪
#### 普通小猫咪 + 萝卜 → 发情的小猫咪
- 一只觉得嘴里淡淡的小猫咪 + 萝卜 = 发情的小猫咪
#### 想吃肉的小猫咪 + 肉类 → 心满意足的小猫咪
- 想吃肉的小猫咪 + 香喷喷的串海星 = 心满意足的小猫咪
- 想吃肉的小猫咪 + 炭烤萨卡班甲鱼 = 心满意足的小猫咪
- 想吃肉的小猫咪 + 脆香bro = 心满意足的小猫咪
### 终极合成配方
#### Lover's Lover 合成配方
需要以下9种材料无序合成
- 1x 一只心怀歹念的小猫咪
- 1x 脆香bro
- 1x 香喷喷的串海星
- 1x 闷牢菜
- 1x 烤棉花糖
- 1x 致癌的棉花糖
- 1x 棉花糖
- 1x 炭烤萨卡班甲鱼
- 1x 黑糖团子
## 游戏机制
### 小猫咪饮食系统
1. **普通小猫咪**可以吃任何可食用物品
2. **素食**会让小猫咪变成想吃肉的状态
3. **肉类**会让小猫咪变得心满意足
4. **萝卜**会让小猫咪进入发情状态
5. **想吃肉的小猫咪**吃到肉类后会变得心满意足
### 食物分类
- **素食**: 闷牢菜
- **肉类**: 香喷喷的串海星、炭烤萨卡班甲鱼、脆香bro
- **甜食**: 黑糖团子、棉花糖、烤棉花糖、致癌的棉花糖
- **终极食物**: Lover's Lover最高营养价值的终极美食
- **特殊**: 萝卜(触发发情状态)
### 营养价值
- **Lover's Lover**: 10点饥饿值20.0饱和度
- **炭烤萨卡班甲鱼**: 9点饥饿值14.0饱和度
- **香喷喷的串海星**: 7点饥饿值10.0饱和度
- **脆香bro**: 6点饥饿值8.0饱和度
- **闷牢菜**: 5点饥饿值7.0饱和度
- **黑糖团子**: 4点饥饿值9.6饱和度
- **烤棉花糖**: 3点饥饿值5.0饱和度
- **棉花糖**: 2点饥饿值2.0饱和度
- **致癌的棉花糖**: 0点饥饿值0.0饱和度(纯装饰)
## 制作链条
### 海星制作链
坚不可摧的海星 → 海星串 → 香喷喷的串海星
### 甲鱼制作链
萨卡班甲鱼 → 腌好的萨卡班甲鱼 → 炭烤萨卡班甲鱼
### 蔬菜制作链
一锅牢菜 → 闷牢菜
### 棉花糖制作链
棉花糖 → 烤棉花糖/致癌的棉花糖
## 安装说明
1. 确保已安装Minecraft Forge 1.21.4
2. 将mod文件放入mods文件夹
3. 启动游戏即可体验
4. 所有物品都会出现在创造模式的"食物和饮品"标签页中
## 版本信息
- Minecraft版本: 1.21.4
- Forge版本: 兼容最新版本
- 模组ID: blacksugarmod
## 特色功能
- 🐱 独特的小猫咪互动系统
- 🍖 丰富的食物制作链条
- 🎯 多样化的合成配方
- 🌟 终极物品"Lover's Lover"挑战
- 📊 详细的营养价值系统
享受与小猫咪们和美食的美好时光吧!🐱🍽️
If at any point you are missing libraries in your IDE, or you've run into problems you can
run `gradlew --refresh-dependencies` to refresh the local cache. `gradlew clean` to reset everything
(this does not affect your code) and then start the process again.
Mapping Names:
=============================
By default, the MDK is configured to use the official mapping names from Mojang for methods and fields
in the Minecraft codebase. These names are covered by a specific license. All modders should be aware of this
license, if you do not agree with it you can change your mapping names to other crowdsourced names in your
build.gradle. For the latest license text, refer to the mapping file itself, or the reference copy here:
https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md
Additional Resources:
=========================
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/

Binary file not shown.

View File

@@ -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,20 +166,28 @@ 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,
'Specification-Vendor' : mod_authors,
'Specification-Version' : '1', // We are version 1 of ourselves
'Implementation-Title' : project.name,
'Implementation-Version' : project.jar.archiveVersion,
'Implementation-Vendor' : mod_authors
'Specification-Title' : mod_id,
'Specification-Vendor' : mod_authors,
'Specification-Version' : '1', // We are version 1 of ourselves
'Implementation-Title' : project.name,
'Implementation-Version' : project.jar.archiveVersion,
'Implementation-Vendor' : mod_authors,
'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
])
// 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
}

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.
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.5.20
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

Binary file not shown.

View File

@@ -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
View File

@@ -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
View File

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

View File

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

View File

@@ -4,11 +4,14 @@ import com.mojang.logging.LogUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.core.registries.Registries;
import net.minecraft.world.food.FoodProperties;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.CreativeModeTabs;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
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.common.MinecraftForge;
import net.minecraftforge.event.BuildCreativeModeTabContentsEvent;
@@ -27,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日志记录器
@@ -39,226 +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"))
.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> SATISFIED_KITTEN = ITEMS.register("satisfied_kitten",
() -> new Item(new Item.Properties()
.setId(ITEMS.key("satisfied_kitten"))
)
);
// 发情的小猫咪物品
public static final RegistryObject<Item> HORNY_KITTEN = ITEMS.register("horny_kitten",
() -> new Item(new Item.Properties()
.setId(ITEMS.key("horny_kitten"))
)
);
// 想吃肉的小猫咪物品
public static final RegistryObject<Item> MEAT_CRAVING_KITTEN = ITEMS.register("meat_craving_kitten",
() -> new Item(new Item.Properties()
.setId(ITEMS.key("meat_craving_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()
)
)
);
// Lover's Lover物品可食用
public static final RegistryObject<Item> LOVERS_LOVER = ITEMS.register("lovers_lover",
() -> new Item(new Item.Properties()
.setId(ITEMS.key("lovers_lover"))
.food(new FoodProperties.Builder()
.alwaysEdible()
.nutrition(10)
.saturationModifier(20.0f)
.build()
)
)
);
public BlackSugarModMain(FMLJavaModLoadingContext context) {
public BlackSugarModMain(FMLJavaModLoadingContext context)
{
IEventBus modEventBus = context.getModEventBus();
// 为模组加载注册commonSetup方法
modEventBus.addListener(this::commonSetup);
// 将延迟注册器注册到模组事件总线,以便方块得到注册
BLOCKS.register(modEventBus);
// 将延迟注册器注册到模组事件总线,以便物品得到注册
@@ -276,37 +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(SATISFIED_KITTEN);
event.accept(HORNY_KITTEN);
event.accept(MEAT_CRAVING_KITTEN);
event.accept(FRAGRANT_STARFISH_SKEWER);
event.accept(POT_OF_PRISON_VEGETABLES);
event.accept(BRAISED_PRISON_VEGETABLES);
event.accept(CHARCOAL_GRILLED_TURTLE);
event.accept(LOVERS_LOVER);
}
}
private void commonSetup(final FMLCommonSetupEvent event) {
private void commonSetup(final FMLCommonSetupEvent event)
{
// 一些通用设置代码
LOGGER.info("HELLO FROM COMMON SETUP");
@@ -318,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());

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.
// 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());
}
}

View File

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

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/horny_kitten"
}
}

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/lovers_lover"
}
}

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/meat_craving_kitten"
}
}

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/satisfied_kitten"
}
}

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,25 +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.satisfied_kitten": "心满意足的小猫咪",
"item.blacksugarmod.horny_kitten": "发情的小猫咪",
"item.blacksugarmod.meat_craving_kitten": "想吃肉的小猫咪",
"item.blacksugarmod.lovers_lover": "Lover's Lover"
"item.blacksugarmod.black_sugar_dumpling": "黑糖团子"
}

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/horny_kitten"
}
}

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/lovers_lover"
}
}

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/bland_kitten"
}
}

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/satisfied_kitten"
}
}

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.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.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: 2.0 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,11 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"blacksugarmod:bland_kitten",
"minecraft:carrot"
],
"result": {
"id": "blacksugarmod:horny_kitten",
"count": 1
}
}

View File

@@ -1,18 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"blacksugarmod:malicious_kitten",
"blacksugarmod:crispy_bro",
"blacksugarmod:fragrant_starfish_skewer",
"blacksugarmod:braised_prison_vegetables",
"blacksugarmod:roasted_marshmallow",
"blacksugarmod:carcinogenic_marshmallow",
"blacksugarmod:marshmallow",
"blacksugarmod:charcoal_grilled_turtle",
"blacksugarmod:black_sugar_dumpling"
],
"result": {
"id": "blacksugarmod:lovers_lover",
"count": 1
}
}

View File

@@ -1,11 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"blacksugarmod:bland_kitten",
"minecraft:nether_wart"
],
"result": {
"id": "blacksugarmod:malicious_kitten",
"count": 1
}
}

View File

@@ -1,11 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"blacksugarmod:bland_kitten",
"blacksugarmod:carcinogenic_marshmallow"
],
"result": {
"id": "blacksugarmod:meat_craving_kitten",
"count": 1
}
}

View File

@@ -1,11 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"blacksugarmod:bland_kitten",
"blacksugarmod:black_sugar_dumpling"
],
"result": {
"id": "blacksugarmod:meat_craving_kitten",
"count": 1
}
}

View File

@@ -1,11 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"blacksugarmod:bland_kitten",
"blacksugarmod:marshmallow"
],
"result": {
"id": "blacksugarmod:meat_craving_kitten",
"count": 1
}
}

View File

@@ -1,11 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"blacksugarmod:bland_kitten",
"blacksugarmod:roasted_marshmallow"
],
"result": {
"id": "blacksugarmod:meat_craving_kitten",
"count": 1
}
}

View File

@@ -1,11 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"blacksugarmod:bland_kitten",
"blacksugarmod:braised_prison_vegetables"
],
"result": {
"id": "blacksugarmod:meat_craving_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,11 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"blacksugarmod:bland_kitten",
"blacksugarmod:crispy_bro"
],
"result": {
"id": "blacksugarmod:satisfied_kitten",
"count": 1
}
}

View File

@@ -1,11 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"blacksugarmod:meat_craving_kitten",
"blacksugarmod:crispy_bro"
],
"result": {
"id": "blacksugarmod:satisfied_kitten",
"count": 1
}
}

View File

@@ -1,11 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"blacksugarmod:meat_craving_kitten",
"blacksugarmod:fragrant_starfish_skewer"
],
"result": {
"id": "blacksugarmod:satisfied_kitten",
"count": 1
}
}

View File

@@ -1,11 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"blacksugarmod:meat_craving_kitten",
"blacksugarmod:charcoal_grilled_turtle"
],
"result": {
"id": "blacksugarmod:satisfied_kitten",
"count": 1
}
}

View File

@@ -1,11 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"blacksugarmod:bland_kitten",
"blacksugarmod:fragrant_starfish_skewer"
],
"result": {
"id": "blacksugarmod:satisfied_kitten",
"count": 1
}
}

View File

@@ -1,11 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
"blacksugarmod:bland_kitten",
"blacksugarmod:charcoal_grilled_turtle"
],
"result": {
"id": "blacksugarmod:satisfied_kitten",
"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
}
}

Some files were not shown because too many files have changed in this diff Show More