
可合成无限潜影盒
一个简单的模组,允许你在潜影盒内无限放置潜影盒
查看大图可合成的无限潜影盒
一个轻量级的 Minecraft Forge 模组,提供以下功能:
- 允许将每种原版潜影盒(未染色及全部 16 种颜色)放入另一个潜影盒中;
- 对漏斗等自动化设备使用的侧面物品输送同样适用此行为;
- 新增一个使用九个箱子合成一个未染色潜影盒的有序配方。
该实现刻意依赖原版的物品/NBT处理方式。它不添加任何自定义物品、方块、能力(Capability)、数据包或持久化数据格式。
支持的版本
每个受支持的 Minecraft 版本均发布独立的 JAR 文件。请使用与您的 Minecraft 版本匹配的 JAR;它们之间不可互换。
| Minecraft | Forge | Java | JAR |
|---|---|---|---|
| 1.18.2 | 40.3.12 | 17 | craftable_infinite_shulker_box-mc1.18.2-<version>.jar |
| 1.19.2 | 43.5.2 | 17 | craftable_infinite_shulker_box-mc1.19.2-<version>.jar |
| 1.19.4 | 45.4.3 | 17 | craftable_infinite_shulker_box-mc1.19.4-<version>.jar |
| 1.20.1 | 47.4.23 | 17 | craftable_infinite_shulker_box-mc1.20.1-<version>.jar |
| 1.21.1 | 52.1.16 | 21 | craftable_infinite_shulker_box-mc1.21.1-<version>.jar |
每个 JAR 接受其主版本线中的任何 Forge 版本(例如,1.20.1 对应 Forge 47),其 mods.toml 将自身限制在相应的 Minecraft 版本内,因此错误的 JAR 会快速失败并显示清晰的消息,而不会产生异常行为。
将 JAR 安装到客户端和服务端的 mods 目录中。建议同时在两端安装,因为 GUI 验证在两端都会执行,而自动化逻辑在服务端运行。
合成配方
用 minecraft:chest(共九个箱子)填满合成台的每个格子,即可合成一个 minecraft:shulker_box(潜影盒)。当玩家获得箱子时,该配方随之解锁。
构建
一次性构建所有支持的版本:
./gradlew build
将所有 JAR 收集到单个目录(build/libs)中:
./gradlew collectJars
仅构建一个版本:
./gradlew :versions:1.20.1:build
每个版本的 JAR 都会写入 versions/<mc_version>/build/libs/ 目录。
IDE 运行配置会按版本生成,例如 ./gradlew :versions:1.20.1:genIntellijRuns 或 :versions:1.20.1:genEclipseRuns。
在低内存机器上构建
ForgeGradle 会派生外部 JVM(Access Transformer、renamer、decompiler),这些 JVM 不会继承 org.gradle.jvmargs 设置。在内存较小的机器上,这些派生进程可能会因 OutOfMemoryError 而终止,这会在 ForgeGradle 缓存中留下截断的 JAR,并在下次运行时产生令人困惑的 "Could not find net.minecraftforge:forge:..." 错误。为这些派生的 JVM 分配独立的堆内存:
JAVA_TOOL_OPTIONS=-Xmx1600m ./gradlew build
如果构建已因上述原因失败,请在重试前删除受影响的缓存条目(~/.gradle/caches/forge_gradle/minecraft_user_repo/net/minecraftforge/forge/<version>_mapped_*)。
项目结构
common/ Java 源码 + 所有版本共享的 Mixin 配置
gradle/forge-mod.gradle 所有版本共享的 ForgeGradle 构建逻辑
versions/<mc_version>/ 各版本独立的 gradle.properties + 数据包资源
Java 代码是共享的:两个 Mixin 目标(ShulkerBoxSlot.mayPlace 和 ShulkerBoxBlockEntity.canPlaceItemThroughFace)在支持的所有 Minecraft 版本中具有相同的签名,因此只有构建设置和数据包资源有所不同。
实现说明
ShulkerBoxSlotMixin允许在潜影盒 GUI 中放入原版潜影盒物品。ShulkerBoxBlockEntityMixin允许通过侧面物品输送放入潜影盒。- 配方和配方解锁进度是普通的数据包 JSON 资源。
- Mixin 仅拦截原版潜影盒拒绝放入的情况;其他物品的行为不受影响。
不同版本间的差异
以下是按版本区分的资源需要处理的版本特定细节:
- 数据包格式:9(1.18.2)、10(1.19.2)、12(1.19.4)、15(1.20.1)、48(1.21.1)。
- 数据文件夹名称:1.21 将文件夹重命名为单数形式,因此 1.21.1 使用
data/<namespace>/recipe/和advancement/,而旧版本使用recipes/和advancements/。 - 配方结果:1.21.1 使用
"result": {"id": ..., "count": ...};较早版本使用"result": {"item": ..., "count": ...}。 - 配方元数据:
category和show_notification从 1.19.4 起才存在,因此 1.18.2 和 1.19.2 的配方省略了它们。唯一有效的合成类别是building、redstone、equipment和misc。 - 进度物品谓词:1.21.1 接受 ID/标签字符串(
"items": "minecraft:chest");较早版本接受列表。 - Java / Mixin:1.20.5+ 使用 Java 21,而 Mixin 0.8.5 没有
JAVA_21兼容级别,因此 1.21.1 使用 Forge 52 捆绑的 Mixin 0.8.7。 - 重新混淆(Reobfuscation):1.20.5 之前的版本在 Searge 名称上运行,因此这些 JAR 被重新混淆并附带 refmap。1.20.5+ 使用与编译时相同的官方映射,因此 1.21.1 既未重新混淆,也不附带 refmap。
手动验证
对您打算发布的每个版本重复以下步骤:
- 获得一个箱子并确认配方出现在配方书中。
- 用箱子填满 3x3 合成格,合成未染色的潜影盒。
- 通过潜影盒 GUI 放入未染色和染色的潜影盒。
- 创建至少三层的嵌套结构,然后放置、破坏并重新打开每个盒子,验证内容物是否持久保存。
- 使用漏斗将一个潜影盒放入已放置的潜影盒中。
利用規約・ライセンス
本Modには特定のオープンソースライセンス(MIT等)は設定しておりません。
- ゲームプレイ・動画・配信等での利用: 自由にご利用いただけます。
- 改変・二次配布・Modpack同梱・コード流用: 必ず事前に一言お声がけ・ご連絡(GitHub Issue等)をいただければ改変・利用可能です。
- 禁止事項: 無断での改変・無断再配布・転載・自作発言・販売は禁止いたします。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。