Merge branch 'develop/fix' into develop/gtl_support
# Conflicts: # build.gradle
This commit is contained in:
commit
54e0d8459d
9
.gitignore
vendored
9
.gitignore
vendored
|
|
@ -87,9 +87,6 @@ classes/
|
||||||
*.zip
|
*.zip
|
||||||
|
|
||||||
# Reference source code (should not be tracked)
|
# Reference source code (should not be tracked)
|
||||||
ExtendedAE-1.20-1.4.2-forge/
|
|
||||||
GTLCore/
|
|
||||||
|
|
||||||
# Gradle wrapper (optional - some prefer to commit this)
|
# Gradle wrapper (optional - some prefer to commit this)
|
||||||
# gradle/wrapper/gradle-wrapper.jar
|
# gradle/wrapper/gradle-wrapper.jar
|
||||||
# gradle/wrapper/gradle-wrapper.properties
|
# gradle/wrapper/gradle-wrapper.properties
|
||||||
|
|
@ -118,6 +115,6 @@ temp/
|
||||||
tmp/
|
tmp/
|
||||||
|
|
||||||
# Allow dependencies in libs
|
# Allow dependencies in libs
|
||||||
!libs/
|
libs/*
|
||||||
!libs/*.jar
|
!libs/ExtendedAE-1.20-1.4.2-forge.jar
|
||||||
!libs/**/*.jar
|
/src/generated/resources/.cache
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,8 @@
|
||||||
- Added natural sorting functionality for the upload pattern list
|
- Added natural sorting functionality for the upload pattern list
|
||||||
- 添加合成计划字节数显示的格式化功能
|
- 添加合成计划字节数显示的格式化功能
|
||||||
- Added formatted display for crafting plan byte count
|
- Added formatted display for crafting plan byte count
|
||||||
|
- 添加部分物品用于磁盘合成(与AAE、APPFLUX、MEGA均有联动)
|
||||||
|
- Add some items for disk synthesis (linked with AAE, APPFLUX, MEGA)
|
||||||
|
|
||||||
### Changed / 变更
|
### Changed / 变更
|
||||||
- 调整实体加速器模型
|
- 调整实体加速器模型
|
||||||
|
|
@ -31,6 +33,12 @@
|
||||||
- Added version restrictions for MAE2
|
- Added version restrictions for MAE2
|
||||||
- 为部分文本添加翻译键支持,改善国际化体验
|
- 为部分文本添加翻译键支持,改善国际化体验
|
||||||
- Added translation key support for some previously hardcoded text, improving internationalization experience
|
- Added translation key support for some previously hardcoded text, improving internationalization experience
|
||||||
|
- 略微提升无线收发器基础硬度,锁定状态下挖掘速度降至10%
|
||||||
|
- Slightly increased wireless transceiver base hardness, mining speed reduced to 10% when locked
|
||||||
|
- 调整部分物品合成配方
|
||||||
|
- Adjust the synthesis formula of some items
|
||||||
|
- 优化本mod磁盘性能
|
||||||
|
- Optimize the disk performance of this mod
|
||||||
|
|
||||||
### Fixed / 修复
|
### Fixed / 修复
|
||||||
- 修复供应器高亮在服务器中不显示的问题
|
- 修复供应器高亮在服务器中不显示的问题
|
||||||
|
|
|
||||||
48
build.gradle
48
build.gradle
|
|
@ -11,6 +11,14 @@ base {
|
||||||
archivesName = project.archives_name
|
archivesName = project.archives_name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
main {
|
||||||
|
resources {
|
||||||
|
srcDir 'src/generated/resources'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
loom {
|
loom {
|
||||||
silentMojangMappingsLicense()
|
silentMojangMappingsLicense()
|
||||||
|
|
||||||
|
|
@ -19,11 +27,13 @@ loom {
|
||||||
}
|
}
|
||||||
|
|
||||||
runs {
|
runs {
|
||||||
client1 {
|
data {
|
||||||
client()
|
data()
|
||||||
name "Client 1"
|
name "Data Generation"
|
||||||
runDir "run/client1"
|
// IDE 启动时传入参数
|
||||||
programArgs "--username", "Player1"
|
programArgs.addAll(
|
||||||
|
'--mod', project.name, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -75,6 +85,7 @@ dependencies {
|
||||||
minecraft "net.minecraft:minecraft:${minecraft_version}"
|
minecraft "net.minecraft:minecraft:${minecraft_version}"
|
||||||
mappings loom.officialMojangMappings()
|
mappings loom.officialMojangMappings()
|
||||||
forge "net.minecraftforge:forge:${forge_version}"
|
forge "net.minecraftforge:forge:${forge_version}"
|
||||||
|
annotationProcessor "org.spongepowered:mixin:${mixin_version}:processor"
|
||||||
|
|
||||||
//exendedae前置
|
//exendedae前置
|
||||||
modImplementation "curse.maven:glodium-957920:${glodium_version}"
|
modImplementation "curse.maven:glodium-957920:${glodium_version}"
|
||||||
|
|
@ -85,15 +96,22 @@ dependencies {
|
||||||
//ae2
|
//ae2
|
||||||
modImplementation "appeng:appliedenergistics2-forge:${ae2_version}"
|
modImplementation "appeng:appliedenergistics2-forge:${ae2_version}"
|
||||||
modImplementation "org.appliedenergistics:guideme:${guideme_version}"
|
modImplementation "org.appliedenergistics:guideme:${guideme_version}"
|
||||||
modCompileOnly "curse.maven:applied-energistics-2-wireless-terminals-459929:${wireless_terminals_version}"
|
modImplementation "curse.maven:applied-energistics-2-wireless-terminals-459929:${wireless_terminals_version}"
|
||||||
|
modImplementation "curse.maven:applied-flux-965012:6755986"
|
||||||
|
modImplementation "curse.maven:mega-cells-622112:${mega_cells_version}"
|
||||||
|
|
||||||
|
//mae2
|
||||||
|
modRuntimeOnly "curse.maven:modern-ae2-additions-1028068:6827727"
|
||||||
|
modCompileOnly "curse.maven:modern-ae2-additions-1028068:6827727"
|
||||||
|
|
||||||
|
//aea
|
||||||
|
modCompileOnly "curse.maven:advancedae-1084104:6939473"
|
||||||
|
modRuntimeOnly "curse.maven:advancedae-1084104:6939473"
|
||||||
|
|
||||||
modCompileOnly "mezz.jei:jei-${minecraft_version}-forge:${jei_version}"
|
modCompileOnly "mezz.jei:jei-${minecraft_version}-forge:${jei_version}"
|
||||||
|
modRuntimeOnly "mezz.jei:jei-${minecraft_version}-forge:15.20.0.112"
|
||||||
annotationProcessor "org.spongepowered:mixin:${mixin_version}:processor"
|
modImplementation "mezz.jei:jei-${minecraft_version}-forge:${jei_version}"
|
||||||
|
modImplementation "curse.maven:jade-324717:${jade_version}"
|
||||||
modImplementation "curse.maven:applied-flux-965012:6755986"
|
|
||||||
modCompileOnly "curse.maven:mega-cells-622112:${mega_cells_version}"
|
|
||||||
modCompileOnly "curse.maven:jade-324717:${jade_version}"
|
|
||||||
|
|
||||||
// GregTech
|
// GregTech
|
||||||
modImplementation "curse.maven:gregtechceu-modern-890405:${gregtech_version}"
|
modImplementation "curse.maven:gregtechceu-modern-890405:${gregtech_version}"
|
||||||
|
|
@ -111,18 +129,16 @@ dependencies {
|
||||||
modImplementation("curse.maven:rhino-416294:6186971")
|
modImplementation("curse.maven:rhino-416294:6186971")
|
||||||
|
|
||||||
//curios
|
//curios
|
||||||
modRuntimeOnly "curse.maven:curios-309927:${curios_version}"
|
modImplementation "curse.maven:curios-309927:${curios_version}"
|
||||||
modCompileOnly "curse.maven:curios-309927:${curios_version}"
|
|
||||||
|
|
||||||
// Runtime test
|
// Runtime test
|
||||||
modRuntimeOnly "curse.maven:curios-309927:${curios_version}"
|
modRuntimeOnly "curse.maven:curios-309927:${curios_version}"
|
||||||
modImplementation "curse.maven:jade-324717:5339264"
|
modImplementation "curse.maven:jade-324717:5339264"
|
||||||
modRuntimeOnly "dev.architectury:architectury-forge:9.2.14"
|
modRuntimeOnly "dev.architectury:architectury-forge:9.2.14"
|
||||||
modRuntimeOnly "curse.maven:applied-energistics-2-wireless-terminals-459929:${wireless_terminals_version}"
|
|
||||||
modRuntimeOnly "mezz.jei:jei-${minecraft_version}-forge:${jei_version}"
|
|
||||||
modRuntimeOnly "curse.maven:cloth-config-348521:5729105"
|
modRuntimeOnly "curse.maven:cloth-config-348521:5729105"
|
||||||
|
|
||||||
//jec
|
//jec
|
||||||
|
modImplementation "curse.maven:just-enough-characters-250702:6680042"
|
||||||
modCompileOnly "curse.maven:just-enough-characters-250702:6680042"
|
modCompileOnly "curse.maven:just-enough-characters-250702:6680042"
|
||||||
|
|
||||||
//拼音搜索
|
//拼音搜索
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"type": "advanced_ae:reaction",
|
||||||
|
"energy": 100000,
|
||||||
|
"fluid": {
|
||||||
|
"fluidStack": {
|
||||||
|
"Amount": 2000,
|
||||||
|
"FluidName": "advanced_ae:quantum_infusion_source"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"input_items": [
|
||||||
|
{
|
||||||
|
"amount": 2,
|
||||||
|
"ingredient": {
|
||||||
|
"item": "ae2:singularity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"amount": 1,
|
||||||
|
"ingredient": {
|
||||||
|
"item": "minecraft:nether_star"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"amount": 4,
|
||||||
|
"ingredient": {
|
||||||
|
"item": "advanced_ae:quantum_alloy_plate"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"output": {
|
||||||
|
"#": 1,
|
||||||
|
"#c": "ae2:i",
|
||||||
|
"id": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
{
|
||||||
|
"advancements": [
|
||||||
|
{
|
||||||
|
"advancement": {
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_energy_stage_3": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/compat/energy_storage_core"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_energy_stage_3",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/compat/energy_storage_core"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "megacells"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
{
|
||||||
|
"advancements": [
|
||||||
|
{
|
||||||
|
"advancement": {
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_basic_core": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/compat/infinity_core_1"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_basic_core",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/compat/infinity_core_1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "forge:not",
|
||||||
|
"value": {
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "advanced_ae"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
{
|
||||||
|
"advancements": [
|
||||||
|
{
|
||||||
|
"advancement": {
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_basic_core": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/compat/infinity_core_2"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_basic_core",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/compat/infinity_core_2"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "advanced_ae"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "forge:not",
|
||||||
|
"value": {
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
{
|
||||||
|
"advancements": [
|
||||||
|
{
|
||||||
|
"advancement": {
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_basic_core": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/compat/infinity_core_3"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_basic_core",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/compat/infinity_core_3"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "advanced_ae"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
{
|
||||||
|
"advancements": [
|
||||||
|
{
|
||||||
|
"advancement": {
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_storage_stage_3": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/compat/storage_core"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_storage_stage_3",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/compat/storage_core"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "megacells"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
{
|
||||||
|
"advancements": [
|
||||||
|
{
|
||||||
|
"advancement": {
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_energy_stage_3": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/energy_storage_core"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_energy_stage_3",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/energy_storage_core"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "forge:not",
|
||||||
|
"value": {
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "megacells"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
{
|
||||||
|
"advancements": [
|
||||||
|
{
|
||||||
|
"advancement": {
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_basic_core": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/energy_storage_core_1"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_basic_core",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/energy_storage_core_1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
{
|
||||||
|
"advancements": [
|
||||||
|
{
|
||||||
|
"advancement": {
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_energy_stage_1": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/energy_storage_core_2"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_energy_stage_1",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/energy_storage_core_2"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
{
|
||||||
|
"advancements": [
|
||||||
|
{
|
||||||
|
"advancement": {
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_energy_stage_2": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/energy_storage_core_3"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_energy_stage_2",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/energy_storage_core_3"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
{
|
||||||
|
"advancements": [
|
||||||
|
{
|
||||||
|
"advancement": {
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_basic_core": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/infinity_core"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_basic_core",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/infinity_core"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:not",
|
||||||
|
"value": {
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "forge:not",
|
||||||
|
"value": {
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "advanced_ae"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
{
|
||||||
|
"advancements": [
|
||||||
|
{
|
||||||
|
"advancement": {
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_quantum_stage_3": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/quantum_storage_core"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_quantum_stage_3",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/quantum_storage_core"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "advanced_ae"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
{
|
||||||
|
"advancements": [
|
||||||
|
{
|
||||||
|
"advancement": {
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_basic_core": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/quantum_storage_core_1"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_basic_core",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/quantum_storage_core_1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "advanced_ae"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
{
|
||||||
|
"advancements": [
|
||||||
|
{
|
||||||
|
"advancement": {
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_quantum_stage_1": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/quantum_storage_core_2"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_quantum_stage_1",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/quantum_storage_core_2"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "advanced_ae"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
{
|
||||||
|
"advancements": [
|
||||||
|
{
|
||||||
|
"advancement": {
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_quantum_stage_2": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/quantum_storage_core_3"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_quantum_stage_2",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/quantum_storage_core_3"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "advanced_ae"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
"advancements": [
|
||||||
|
{
|
||||||
|
"advancement": {
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_storage_stage_3": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/storage_core"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_storage_stage_3",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/storage_core"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:not",
|
||||||
|
"value": {
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "megacells"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_assembler_matrix_wall": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"expatternprovider:assembler_matrix_wall"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:assembler_matrix_upload_core"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_assembler_matrix_wall",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:assembler_matrix_upload_core"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_advanced_card": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"ae2:advanced_card"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:channel_card"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_advanced_card",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:channel_card"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_nether_star": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"minecraft:nether_star"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/basic_core"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_nether_star",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/basic_core"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_spatial_stage_3": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/spatial_core"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_spatial_stage_3",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/spatial_core"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_basic_core": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/spatial_core_1"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_basic_core",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/spatial_core_1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_spatial_stage_1": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/spatial_core_2"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_spatial_stage_1",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/spatial_core_2"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_spatial_stage_2": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/spatial_core_3"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_spatial_stage_2",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/spatial_core_3"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_basic_core": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/storage_core_1"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_basic_core",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/storage_core_1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_storage_stage_1": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/storage_core_2"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_storage_stage_1",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/storage_core_2"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_storage_stage_2": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:basic_core"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:core/storage_core_3"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_storage_stage_2",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:core/storage_core_3"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_entity_speed_card_8x": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:entity_speed_card"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:entity_speed_card_16x"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_entity_speed_card_8x",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:entity_speed_card_16x"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_64x_accelerator": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:64x_crafting_accelerator"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_speed_card": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"ae2:speed_card"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:entity_speed_card_2x"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_speed_card",
|
||||||
|
"has_64x_accelerator",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:entity_speed_card_2x"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_entity_speed_card_2x": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:entity_speed_card"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:entity_speed_card_4x"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_entity_speed_card_2x",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:entity_speed_card_4x"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_entity_speed_card_4x": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:entity_speed_card"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:entity_speed_card_8x"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_entity_speed_card_4x",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:entity_speed_card_8x"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_entity_speed_card_x2": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:entity_speed_card"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_singularity": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"ae2:singularity"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:entity_speed_ticker"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_entity_speed_card_x2",
|
||||||
|
"has_singularity",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:entity_speed_ticker"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_oblivion_singularity": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:oblivion_singularity"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:infinity_biginteger_cell"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_oblivion_singularity",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:infinity_biginteger_cell"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_256x": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"extendedae_plus:256x_crafting_accelerator"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:network/crafting/1024x_crafting_accelerator"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_256x",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:network/crafting/1024x_crafting_accelerator"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_accelerator": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"ae2:crafting_accelerator"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:network/crafting/16x_crafting_accelerator"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_accelerator",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:network/crafting/16x_crafting_accelerator"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_accelerator": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"ae2:crafting_accelerator"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:network/crafting/256x_crafting_accelerator"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_accelerator",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:network/crafting/256x_crafting_accelerator"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_accelerator": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"ae2:crafting_accelerator"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:network/crafting/4x_crafting_accelerator"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_accelerator",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:network/crafting/4x_crafting_accelerator"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_accelerator": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"ae2:crafting_accelerator"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:network/crafting/64x_crafting_accelerator"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_accelerator",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:network/crafting/64x_crafting_accelerator"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_network_tool": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"ae2:network_tool"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_pattern_provider": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"tag": "ae2:pattern_provider"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:network_pattern_controller"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_network_tool",
|
||||||
|
"has_pattern_provider",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:network_pattern_controller"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"criteria": {
|
||||||
|
"has_quantum_ring": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": [
|
||||||
|
"ae2:quantum_ring"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "extendedae_plus:wireless_transceiver"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"has_quantum_ring",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"extendedae_plus:wireless_transceiver"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sends_telemetry_event": false
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"category": "misc",
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"item": "expatternprovider:assembler_matrix_wall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:lever"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "extendedae_plus:assembler_matrix_upload_core"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"category": "misc",
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"item": "ae2:advanced_card"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "extendedae_plus:wireless_transceiver"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "extendedae_plus:channel_card"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"category": "misc",
|
||||||
|
"key": {
|
||||||
|
"A": {
|
||||||
|
"item": "minecraft:netherite_block"
|
||||||
|
},
|
||||||
|
"B": {
|
||||||
|
"item": "minecraft:nether_star"
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "ae2:logic_processor"
|
||||||
|
},
|
||||||
|
"D": {
|
||||||
|
"item": "ae2:fluix_pearl"
|
||||||
|
},
|
||||||
|
"E": {
|
||||||
|
"item": "ae2:engineering_processor"
|
||||||
|
},
|
||||||
|
"F": {
|
||||||
|
"item": "ae2:calculation_processor"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"ABA",
|
||||||
|
"CDE",
|
||||||
|
"AFA"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "extendedae_plus:basic_core"
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
{
|
||||||
|
"type": "forge:conditional",
|
||||||
|
"recipes": [
|
||||||
|
{
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "megacells"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recipe": {
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 3,
|
||||||
|
"core_stage": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "appflux:core_256m"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"item": "minecraft:netherite_block"
|
||||||
|
},
|
||||||
|
"N": {
|
||||||
|
"item": "minecraft:nether_star"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MOM",
|
||||||
|
"NBN",
|
||||||
|
"MCM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:energy_storage_core"
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
{
|
||||||
|
"type": "forge:conditional",
|
||||||
|
"recipes": [
|
||||||
|
{
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "forge:not",
|
||||||
|
"value": {
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "advanced_ae"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recipe": {
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"C": {
|
||||||
|
"item": "extendedae_plus:spatial_core"
|
||||||
|
},
|
||||||
|
"E": {
|
||||||
|
"item": "extendedae_plus:energy_storage_core"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"item": "minecraft:netherite_block"
|
||||||
|
},
|
||||||
|
"N": {
|
||||||
|
"item": "minecraft:nether_star"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
},
|
||||||
|
"S": {
|
||||||
|
"item": "extendedae_plus:storage_core"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MNM",
|
||||||
|
"SOE",
|
||||||
|
"MCM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:infinity_core"
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
{
|
||||||
|
"type": "forge:conditional",
|
||||||
|
"recipes": [
|
||||||
|
{
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "advanced_ae"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "forge:not",
|
||||||
|
"value": {
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recipe": {
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"C": {
|
||||||
|
"item": "extendedae_plus:spatial_core"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"item": "minecraft:netherite_block"
|
||||||
|
},
|
||||||
|
"N": {
|
||||||
|
"item": "minecraft:nether_star"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
},
|
||||||
|
"Q": {
|
||||||
|
"item": "extendedae_plus:quantum_storage_core"
|
||||||
|
},
|
||||||
|
"S": {
|
||||||
|
"item": "extendedae_plus:storage_core"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MNM",
|
||||||
|
"SOQ",
|
||||||
|
"MCM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:infinity_core"
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
"type": "forge:conditional",
|
||||||
|
"recipes": [
|
||||||
|
{
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "advanced_ae"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recipe": {
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"C": {
|
||||||
|
"item": "extendedae_plus:spatial_core"
|
||||||
|
},
|
||||||
|
"E": {
|
||||||
|
"item": "extendedae_plus:energy_storage_core"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"item": "minecraft:netherite_block"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
},
|
||||||
|
"Q": {
|
||||||
|
"item": "extendedae_plus:quantum_storage_core"
|
||||||
|
},
|
||||||
|
"S": {
|
||||||
|
"item": "extendedae_plus:storage_core"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MQM",
|
||||||
|
"SOE",
|
||||||
|
"MCM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:infinity_core"
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
"type": "forge:conditional",
|
||||||
|
"recipes": [
|
||||||
|
{
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "megacells"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recipe": {
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 1,
|
||||||
|
"core_stage": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "megacells:cell_component_256m"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"item": "minecraft:netherite_block"
|
||||||
|
},
|
||||||
|
"N": {
|
||||||
|
"item": "minecraft:nether_star"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MOM",
|
||||||
|
"NBN",
|
||||||
|
"MCM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:storage_core"
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
{
|
||||||
|
"type": "forge:conditional",
|
||||||
|
"recipes": [
|
||||||
|
{
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "forge:not",
|
||||||
|
"value": {
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "megacells"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recipe": {
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 3,
|
||||||
|
"core_stage": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "appflux:core_256k"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"item": "minecraft:netherite_block"
|
||||||
|
},
|
||||||
|
"N": {
|
||||||
|
"item": "minecraft:nether_star"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MOM",
|
||||||
|
"NBN",
|
||||||
|
"MCM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:energy_storage_core"
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
{
|
||||||
|
"type": "forge:conditional",
|
||||||
|
"recipes": [
|
||||||
|
{
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recipe": {
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core"
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "appflux:core_16k"
|
||||||
|
},
|
||||||
|
"E": {
|
||||||
|
"item": "appflux:energy_processor"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"tag": "forge:gems/redstone"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MCM",
|
||||||
|
"EBE",
|
||||||
|
"MEM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 3,
|
||||||
|
"core_stage": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
{
|
||||||
|
"type": "forge:conditional",
|
||||||
|
"recipes": [
|
||||||
|
{
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recipe": {
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 3,
|
||||||
|
"core_stage": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "appflux:core_64k"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"item": "appflux:charged_redstone"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MOM",
|
||||||
|
"CBC",
|
||||||
|
"MOM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 3,
|
||||||
|
"core_stage": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
{
|
||||||
|
"type": "forge:conditional",
|
||||||
|
"recipes": [
|
||||||
|
{
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recipe": {
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 3,
|
||||||
|
"core_stage": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "appflux:core_256k"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"tag": "forge:ingots/sky_insulating_resin"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MOM",
|
||||||
|
"CBC",
|
||||||
|
"MCM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 3,
|
||||||
|
"core_stage": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
{
|
||||||
|
"type": "forge:conditional",
|
||||||
|
"recipes": [
|
||||||
|
{
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:not",
|
||||||
|
"value": {
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "appflux"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "forge:not",
|
||||||
|
"value": {
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "advanced_ae"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recipe": {
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"C": {
|
||||||
|
"item": "extendedae_plus:spatial_core"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"item": "minecraft:netherite_block"
|
||||||
|
},
|
||||||
|
"N": {
|
||||||
|
"item": "minecraft:nether_star"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
},
|
||||||
|
"S": {
|
||||||
|
"item": "extendedae_plus:storage_core"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MNM",
|
||||||
|
"SOS",
|
||||||
|
"MCM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:infinity_core"
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
"type": "forge:conditional",
|
||||||
|
"recipes": [
|
||||||
|
{
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "advanced_ae"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recipe": {
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 4,
|
||||||
|
"core_stage": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "advanced_ae:quantum_storage_256"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"item": "minecraft:netherite_block"
|
||||||
|
},
|
||||||
|
"N": {
|
||||||
|
"item": "minecraft:nether_star"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MOM",
|
||||||
|
"NBN",
|
||||||
|
"MCM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:quantum_storage_core"
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
{
|
||||||
|
"type": "forge:conditional",
|
||||||
|
"recipes": [
|
||||||
|
{
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "advanced_ae"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recipe": {
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core"
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "advanced_ae:quantum_storage_component"
|
||||||
|
},
|
||||||
|
"E": {
|
||||||
|
"item": "advanced_ae:quantum_processor"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"item": "advanced_ae:quantum_alloy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MCM",
|
||||||
|
"EBE",
|
||||||
|
"MEM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 4,
|
||||||
|
"core_stage": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
{
|
||||||
|
"type": "forge:conditional",
|
||||||
|
"recipes": [
|
||||||
|
{
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "advanced_ae"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recipe": {
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 4,
|
||||||
|
"core_stage": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "advanced_ae:quantum_storage_component"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"item": "advanced_ae:quantum_alloy_block"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MOM",
|
||||||
|
"CBC",
|
||||||
|
"MOM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 4,
|
||||||
|
"core_stage": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
{
|
||||||
|
"type": "forge:conditional",
|
||||||
|
"recipes": [
|
||||||
|
{
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "advanced_ae"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recipe": {
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 4,
|
||||||
|
"core_stage": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "advanced_ae:quantum_storage_128"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"item": "advanced_ae:quantum_alloy_plate"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MOM",
|
||||||
|
"CBC",
|
||||||
|
"MCM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 4,
|
||||||
|
"core_stage": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 2,
|
||||||
|
"core_stage": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "ae2:spatial_cell_component_128"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"item": "minecraft:netherite_block"
|
||||||
|
},
|
||||||
|
"N": {
|
||||||
|
"item": "minecraft:nether_star"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MOM",
|
||||||
|
"NBN",
|
||||||
|
"MCM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:spatial_core"
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core"
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "ae2:spatial_cell_component_2"
|
||||||
|
},
|
||||||
|
"E": {
|
||||||
|
"item": "ae2:engineering_processor"
|
||||||
|
},
|
||||||
|
"L": {
|
||||||
|
"item": "ae2:logic_processor"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"tag": "forge:dusts/fluix"
|
||||||
|
},
|
||||||
|
"P": {
|
||||||
|
"item": "ae2:calculation_processor"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MCM",
|
||||||
|
"LBP",
|
||||||
|
"MEM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 2,
|
||||||
|
"core_stage": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 2,
|
||||||
|
"core_stage": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "ae2:spatial_cell_component_16"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"tag": "forge:gems/fluix"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MOM",
|
||||||
|
"CBC",
|
||||||
|
"MOM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 2,
|
||||||
|
"core_stage": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 2,
|
||||||
|
"core_stage": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "ae2:spatial_cell_component_128"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"item": "ae2:fluix_block"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MOM",
|
||||||
|
"CBC",
|
||||||
|
"MCM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 2,
|
||||||
|
"core_stage": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
{
|
||||||
|
"type": "forge:conditional",
|
||||||
|
"recipes": [
|
||||||
|
{
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "forge:not",
|
||||||
|
"value": {
|
||||||
|
"type": "forge:mod_loaded",
|
||||||
|
"modid": "megacells"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recipe": {
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 1,
|
||||||
|
"core_stage": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "ae2:cell_component_256k"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"item": "minecraft:netherite_block"
|
||||||
|
},
|
||||||
|
"N": {
|
||||||
|
"item": "minecraft:nether_star"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MOM",
|
||||||
|
"NBN",
|
||||||
|
"MCM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:storage_core"
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core"
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "ae2:cell_component_16k"
|
||||||
|
},
|
||||||
|
"E": {
|
||||||
|
"item": "ae2:engineering_processor"
|
||||||
|
},
|
||||||
|
"L": {
|
||||||
|
"item": "ae2:logic_processor"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"tag": "forge:dusts/certus_quartz"
|
||||||
|
},
|
||||||
|
"P": {
|
||||||
|
"item": "ae2:calculation_processor"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MCM",
|
||||||
|
"LBP",
|
||||||
|
"MEM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 1,
|
||||||
|
"core_stage": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 1,
|
||||||
|
"core_stage": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "ae2:cell_component_64k"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"tag": "ae2:all_certus_quartz"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MOM",
|
||||||
|
"CBC",
|
||||||
|
"MOM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 1,
|
||||||
|
"core_stage": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 1,
|
||||||
|
"core_stage": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "ae2:cell_component_256k"
|
||||||
|
},
|
||||||
|
"M": {
|
||||||
|
"item": "ae2:quartz_block"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"MOM",
|
||||||
|
"CBC",
|
||||||
|
"MCM"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"type": "forge:partial_nbt",
|
||||||
|
"item": "extendedae_plus:basic_core",
|
||||||
|
"nbt": {
|
||||||
|
"CustomModelData": 1,
|
||||||
|
"core_stage": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
|
@ -1,18 +1,6 @@
|
||||||
{
|
{
|
||||||
"type": "minecraft:crafting_shaped",
|
"type": "minecraft:crafting_shaped",
|
||||||
"pattern": [
|
|
||||||
"SAS",
|
|
||||||
"QXQ",
|
|
||||||
"SBS"
|
|
||||||
],
|
|
||||||
"key": {
|
"key": {
|
||||||
"S": {
|
|
||||||
"type": "forge:partial_nbt",
|
|
||||||
"item": "extendedae_plus:entity_speed_card",
|
|
||||||
"nbt": {
|
|
||||||
"EAS:mult": 8
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"A": {
|
"A": {
|
||||||
"item": "minecraft:nether_star"
|
"item": "minecraft:nether_star"
|
||||||
},
|
},
|
||||||
|
|
@ -22,16 +10,28 @@
|
||||||
"Q": {
|
"Q": {
|
||||||
"item": "ae2:spatial_cell_component_128"
|
"item": "ae2:spatial_cell_component_128"
|
||||||
},
|
},
|
||||||
|
"S": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:entity_speed_card",
|
||||||
|
"nbt": {
|
||||||
|
"EAS:mult": 8
|
||||||
|
}
|
||||||
|
},
|
||||||
"X": {
|
"X": {
|
||||||
"item": "minecraft:dragon_egg"
|
"item": "minecraft:dragon_egg"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pattern": [
|
||||||
|
"SAS",
|
||||||
|
"QXQ",
|
||||||
|
"SBS"
|
||||||
|
],
|
||||||
"result": {
|
"result": {
|
||||||
"type": "forge:partial_nbt",
|
"type": "forge:partial_nbt",
|
||||||
"item": "extendedae_plus:entity_speed_card",
|
"item": "extendedae_plus:entity_speed_card",
|
||||||
"count": 1,
|
|
||||||
"nbt": {
|
"nbt": {
|
||||||
"EAS:mult": 16
|
"EAS:mult": 16
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"show_notification": true
|
||||||
}
|
}
|
||||||
|
|
@ -1,30 +1,30 @@
|
||||||
{
|
{
|
||||||
"type": "minecraft:crafting_shaped",
|
"type": "minecraft:crafting_shaped",
|
||||||
"pattern": [
|
|
||||||
"SBS",
|
|
||||||
"QXQ",
|
|
||||||
"SBS"
|
|
||||||
],
|
|
||||||
"key": {
|
"key": {
|
||||||
"S": {
|
|
||||||
"item": "ae2:speed_card"
|
|
||||||
},
|
|
||||||
"B": {
|
"B": {
|
||||||
"item": "extendedae_plus:64x_crafting_accelerator"
|
"item": "extendedae_plus:64x_crafting_accelerator"
|
||||||
},
|
},
|
||||||
"Q": {
|
"Q": {
|
||||||
"item": "ae2:spatial_cell_component_2"
|
"item": "ae2:spatial_cell_component_2"
|
||||||
},
|
},
|
||||||
|
"S": {
|
||||||
|
"item": "ae2:speed_card"
|
||||||
|
},
|
||||||
"X": {
|
"X": {
|
||||||
"item": "ae2:cell_component_256k"
|
"item": "ae2:cell_component_256k"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pattern": [
|
||||||
|
"SBS",
|
||||||
|
"QXQ",
|
||||||
|
"SBS"
|
||||||
|
],
|
||||||
"result": {
|
"result": {
|
||||||
"type": "forge:partial_nbt",
|
"type": "forge:partial_nbt",
|
||||||
"item": "extendedae_plus:entity_speed_card",
|
"item": "extendedae_plus:entity_speed_card",
|
||||||
"count": 1,
|
|
||||||
"nbt": {
|
"nbt": {
|
||||||
"EAS:mult": 2
|
"EAS:mult": 2
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"show_notification": true
|
||||||
}
|
}
|
||||||
|
|
@ -1,34 +1,34 @@
|
||||||
{
|
{
|
||||||
"type": "minecraft:crafting_shaped",
|
"type": "minecraft:crafting_shaped",
|
||||||
"pattern": [
|
|
||||||
"SBS",
|
|
||||||
"QXQ",
|
|
||||||
"SBS"
|
|
||||||
],
|
|
||||||
"key": {
|
"key": {
|
||||||
"S": {
|
|
||||||
"type": "forge:partial_nbt",
|
|
||||||
"item": "extendedae_plus:entity_speed_card",
|
|
||||||
"nbt": {
|
|
||||||
"EAS:mult": 2
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"B": {
|
"B": {
|
||||||
"item": "extendedae_plus:256x_crafting_accelerator"
|
"item": "extendedae_plus:256x_crafting_accelerator"
|
||||||
},
|
},
|
||||||
"Q": {
|
"Q": {
|
||||||
"item": "ae2:spatial_cell_component_16"
|
"item": "ae2:spatial_cell_component_16"
|
||||||
},
|
},
|
||||||
|
"S": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:entity_speed_card",
|
||||||
|
"nbt": {
|
||||||
|
"EAS:mult": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
"X": {
|
"X": {
|
||||||
"item": "ae2:dense_energy_cell"
|
"item": "ae2:dense_energy_cell"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pattern": [
|
||||||
|
"SBS",
|
||||||
|
"QXQ",
|
||||||
|
"SBS"
|
||||||
|
],
|
||||||
"result": {
|
"result": {
|
||||||
"type": "forge:partial_nbt",
|
"type": "forge:partial_nbt",
|
||||||
"item": "extendedae_plus:entity_speed_card",
|
"item": "extendedae_plus:entity_speed_card",
|
||||||
"count": 1,
|
|
||||||
"nbt": {
|
"nbt": {
|
||||||
"EAS:mult": 4
|
"EAS:mult": 4
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"show_notification": true
|
||||||
}
|
}
|
||||||
|
|
@ -1,34 +1,34 @@
|
||||||
{
|
{
|
||||||
"type": "minecraft:crafting_shaped",
|
"type": "minecraft:crafting_shaped",
|
||||||
"pattern": [
|
|
||||||
"SBS",
|
|
||||||
"QXQ",
|
|
||||||
"SBS"
|
|
||||||
],
|
|
||||||
"key": {
|
"key": {
|
||||||
"S": {
|
|
||||||
"type": "forge:partial_nbt",
|
|
||||||
"item": "extendedae_plus:entity_speed_card",
|
|
||||||
"nbt": {
|
|
||||||
"EAS:mult": 4
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"B": {
|
"B": {
|
||||||
"item": "extendedae_plus:1024x_crafting_accelerator"
|
"item": "extendedae_plus:1024x_crafting_accelerator"
|
||||||
},
|
},
|
||||||
"Q": {
|
"Q": {
|
||||||
"item": "ae2:spatial_cell_component_128"
|
"item": "ae2:spatial_cell_component_128"
|
||||||
},
|
},
|
||||||
|
"S": {
|
||||||
|
"type": "forge:nbt",
|
||||||
|
"item": "extendedae_plus:entity_speed_card",
|
||||||
|
"nbt": {
|
||||||
|
"EAS:mult": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
"X": {
|
"X": {
|
||||||
"item": "minecraft:nether_star"
|
"item": "minecraft:nether_star"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pattern": [
|
||||||
|
"SBS",
|
||||||
|
"QXQ",
|
||||||
|
"SBS"
|
||||||
|
],
|
||||||
"result": {
|
"result": {
|
||||||
"type": "forge:partial_nbt",
|
"type": "forge:partial_nbt",
|
||||||
"item": "extendedae_plus:entity_speed_card",
|
"item": "extendedae_plus:entity_speed_card",
|
||||||
"count": 1,
|
|
||||||
"nbt": {
|
"nbt": {
|
||||||
"EAS:mult": 8
|
"EAS:mult": 8
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"show_notification": true
|
||||||
}
|
}
|
||||||
|
|
@ -1,33 +1,34 @@
|
||||||
{
|
{
|
||||||
"type": "minecraft:crafting_shaped",
|
"type": "minecraft:crafting_shaped",
|
||||||
"pattern": [
|
|
||||||
"SZS",
|
|
||||||
"QXQ",
|
|
||||||
"SIS"
|
|
||||||
],
|
|
||||||
"key": {
|
"key": {
|
||||||
|
"I": {
|
||||||
|
"item": "expatternprovider:ex_io_port"
|
||||||
|
},
|
||||||
|
"Q": {
|
||||||
|
"item": "ae2:singularity"
|
||||||
|
},
|
||||||
"S": {
|
"S": {
|
||||||
"type": "forge:partial_nbt",
|
"type": "forge:nbt",
|
||||||
"item": "extendedae_plus:entity_speed_card",
|
"item": "extendedae_plus:entity_speed_card",
|
||||||
"nbt": {
|
"nbt": {
|
||||||
"EAS:mult": 2
|
"EAS:mult": 2
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Z": {
|
|
||||||
"item": "ae2:dense_energy_cell"
|
|
||||||
},
|
|
||||||
"Q": {
|
|
||||||
"item": "ae2:singularity"
|
|
||||||
},
|
|
||||||
"X": {
|
"X": {
|
||||||
"item": "minecraft:nether_star"
|
"item": "minecraft:nether_star"
|
||||||
},
|
},
|
||||||
"I": {
|
"Z": {
|
||||||
"item": "expatternprovider:ex_io_port"
|
"item": "ae2:dense_energy_cell"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pattern": [
|
||||||
|
"SZS",
|
||||||
|
"QXQ",
|
||||||
|
"SIS"
|
||||||
|
],
|
||||||
"result": {
|
"result": {
|
||||||
"item": "extendedae_plus:entity_speed_ticker",
|
"type": "forge:partial_nbt",
|
||||||
"count": 1
|
"item": "extendedae_plus:entity_speed_ticker"
|
||||||
}
|
},
|
||||||
|
"show_notification": true
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"category": "misc",
|
||||||
|
"key": {
|
||||||
|
"B": {
|
||||||
|
"item": "minecraft:netherite_block"
|
||||||
|
},
|
||||||
|
"G": {
|
||||||
|
"item": "ae2:quartz_vibrant_glass"
|
||||||
|
},
|
||||||
|
"I": {
|
||||||
|
"item": "extendedae_plus:infinity_core"
|
||||||
|
},
|
||||||
|
"N": {
|
||||||
|
"item": "minecraft:nether_star"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"GOG",
|
||||||
|
"NIN",
|
||||||
|
"BBB"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "extendedae_plus:infinity_biginteger_cell"
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"category": "misc",
|
||||||
|
"key": {
|
||||||
|
"A": {
|
||||||
|
"item": "ae2:cell_component_256k"
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "extendedae_plus:256x_crafting_accelerator"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
" ",
|
||||||
|
"ACA",
|
||||||
|
" "
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "extendedae_plus:1024x_crafting_accelerator"
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"category": "misc",
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"item": "ae2:crafting_accelerator"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "ae2:cell_component_16k"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "extendedae_plus:16x_crafting_accelerator"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"category": "misc",
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"item": "ae2:crafting_accelerator"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "ae2:cell_component_256k"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "extendedae_plus:256x_crafting_accelerator"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"category": "misc",
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"item": "ae2:crafting_accelerator"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "ae2:cell_component_4k"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "extendedae_plus:4x_crafting_accelerator"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"category": "misc",
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"item": "ae2:crafting_accelerator"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "ae2:cell_component_64k"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "extendedae_plus:64x_crafting_accelerator"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"category": "misc",
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"tag": "ae2:illuminated_panel"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "ae2:pattern_provider"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "ae2:network_tool"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "extendedae_plus:network_pattern_controller"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"type": "ae2:transform",
|
||||||
|
"circumstance": {
|
||||||
|
"type": "explosion"
|
||||||
|
},
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"item": "ae2:singularity"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:nether_star"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:netherite_block"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "extendedae_plus:oblivion_singularity"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"category": "misc",
|
||||||
|
"key": {
|
||||||
|
"L": {
|
||||||
|
"item": "ae2:quantum_link"
|
||||||
|
},
|
||||||
|
"R": {
|
||||||
|
"item": "ae2:quantum_ring"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pattern": [
|
||||||
|
"RRR",
|
||||||
|
"RLR",
|
||||||
|
"RRR"
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "extendedae_plus:wireless_transceiver"
|
||||||
|
},
|
||||||
|
"show_notification": true
|
||||||
|
}
|
||||||
|
|
@ -2,7 +2,7 @@ package com.extendedae_plus;
|
||||||
|
|
||||||
import appeng.api.storage.StorageCells;
|
import appeng.api.storage.StorageCells;
|
||||||
import appeng.menu.locator.MenuLocators;
|
import appeng.menu.locator.MenuLocators;
|
||||||
import com.extendedae_plus.ae.api.storage.InfinityBigIntegerCellHandler;
|
import com.extendedae_plus.api.storage.InfinityBigIntegerCellHandler;
|
||||||
import com.extendedae_plus.client.ClientRegistrar;
|
import com.extendedae_plus.client.ClientRegistrar;
|
||||||
import com.extendedae_plus.config.ModConfig;
|
import com.extendedae_plus.config.ModConfig;
|
||||||
import com.extendedae_plus.init.*;
|
import com.extendedae_plus.init.*;
|
||||||
|
|
|
||||||
|
|
@ -103,13 +103,13 @@ public class EntitySpeedTickerPart extends UpgradeablePart implements IGridTicka
|
||||||
|
|
||||||
// 注册可记忆的配置(YES/NO)
|
// 注册可记忆的配置(YES/NO)
|
||||||
this.getConfigManager().registerSetting(
|
this.getConfigManager().registerSetting(
|
||||||
com.extendedae_plus.ae.api.config.Settings.ACCELERATE,
|
com.extendedae_plus.api.config.Settings.ACCELERATE,
|
||||||
YesNo.YES
|
YesNo.YES
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getAccelerateEnabled() {
|
public boolean getAccelerateEnabled() {
|
||||||
return this.getConfigManager().getSetting(com.extendedae_plus.ae.api.config.Settings.ACCELERATE) == YesNo.YES;
|
return this.getConfigManager().getSetting(com.extendedae_plus.api.config.Settings.ACCELERATE) == YesNo.YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -118,7 +118,7 @@ public class EntitySpeedTickerPart extends UpgradeablePart implements IGridTicka
|
||||||
* @param enabled 是否启用加速
|
* @param enabled 是否启用加速
|
||||||
*/
|
*/
|
||||||
public void setAccelerateEnabled(boolean enabled) {
|
public void setAccelerateEnabled(boolean enabled) {
|
||||||
this.getConfigManager().putSetting(com.extendedae_plus.ae.api.config.Settings.ACCELERATE, enabled ? YesNo.YES : YesNo.NO);
|
this.getConfigManager().putSetting(com.extendedae_plus.api.config.Settings.ACCELERATE, enabled ? YesNo.YES : YesNo.NO);
|
||||||
if (menu != null) {
|
if (menu != null) {
|
||||||
menu.setAccelerateEnabled(enabled);
|
menu.setAccelerateEnabled(enabled);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.extendedae_plus.ae.api.config;
|
package com.extendedae_plus.api.config;
|
||||||
|
|
||||||
import appeng.api.config.Setting;
|
import appeng.api.config.Setting;
|
||||||
import appeng.api.config.YesNo;
|
import appeng.api.config.YesNo;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.extendedae_plus.ae.api.crafting;
|
package com.extendedae_plus.api.crafting;
|
||||||
|
|
||||||
import appeng.api.crafting.IPatternDetails;
|
import appeng.api.crafting.IPatternDetails;
|
||||||
import appeng.api.stacks.AEItemKey;
|
import appeng.api.stacks.AEItemKey;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.extendedae_plus.ae.api.crafting;
|
package com.extendedae_plus.api.crafting;
|
||||||
|
|
||||||
import appeng.api.crafting.IPatternDetails;
|
import appeng.api.crafting.IPatternDetails;
|
||||||
import appeng.api.stacks.AEKey;
|
import appeng.api.stacks.AEKey;
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
package com.extendedae_plus.ae.api.storage;
|
package com.extendedae_plus.api.storage;
|
||||||
|
|
||||||
import appeng.api.storage.cells.ICellHandler;
|
import appeng.api.storage.cells.ICellHandler;
|
||||||
import appeng.api.storage.cells.ISaveProvider;
|
import appeng.api.storage.cells.ISaveProvider;
|
||||||
import com.extendedae_plus.ae.items.InfinityBigIntegerCellItem;
|
import com.extendedae_plus.items.InfinityBigIntegerCellItem;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
|
||||||
public class InfinityBigIntegerCellHandler implements ICellHandler {
|
public class InfinityBigIntegerCellHandler implements ICellHandler {
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.extendedae_plus.ae.api.storage;
|
package com.extendedae_plus.api.storage;
|
||||||
|
|
||||||
import appeng.api.config.Actionable;
|
import appeng.api.config.Actionable;
|
||||||
import appeng.api.networking.security.IActionSource;
|
import appeng.api.networking.security.IActionSource;
|
||||||
|
|
@ -10,7 +10,7 @@ import appeng.api.storage.cells.ISaveProvider;
|
||||||
import appeng.api.storage.cells.StorageCell;
|
import appeng.api.storage.cells.StorageCell;
|
||||||
import appeng.core.AELog;
|
import appeng.core.AELog;
|
||||||
import com.extendedae_plus.ExtendedAEPlus;
|
import com.extendedae_plus.ExtendedAEPlus;
|
||||||
import com.extendedae_plus.ae.items.InfinityBigIntegerCellItem;
|
import com.extendedae_plus.items.InfinityBigIntegerCellItem;
|
||||||
import com.extendedae_plus.util.storage.InfinityConstants;
|
import com.extendedae_plus.util.storage.InfinityConstants;
|
||||||
import com.extendedae_plus.util.storage.InfinityDataStorage;
|
import com.extendedae_plus.util.storage.InfinityDataStorage;
|
||||||
import com.extendedae_plus.util.storage.InfinityStorageManager;
|
import com.extendedae_plus.util.storage.InfinityStorageManager;
|
||||||
|
|
@ -42,10 +42,13 @@ public class InfinityBigIntegerCellInventory implements StorageCell {
|
||||||
// 存储的物品种类数量
|
// 存储的物品种类数量
|
||||||
private int totalAEKeyType;
|
private int totalAEKeyType;
|
||||||
// 存储的物品总数
|
// 存储的物品总数
|
||||||
private BigInteger totalAEKey2Amounts = BigInteger.ZERO;
|
private BigInteger totalAEKey2Amounts = BI_ZERO;
|
||||||
// 标记是否已持久化到 SavedData
|
// 标记是否已持久化到 SavedData
|
||||||
private boolean isPersisted = true;
|
private boolean isPersisted = true;
|
||||||
|
|
||||||
|
private static final BigInteger BI_ZERO = BigInteger.ZERO;
|
||||||
|
private static final BigInteger BI_LONG_MAX = BigInteger.valueOf(Long.MAX_VALUE);
|
||||||
|
|
||||||
|
|
||||||
public InfinityBigIntegerCellInventory(InfinityBigIntegerCellItem cell, ItemStack stack, ISaveProvider saveProvider) {
|
public InfinityBigIntegerCellInventory(InfinityBigIntegerCellItem cell, ItemStack stack, ISaveProvider saveProvider) {
|
||||||
// 保存存储单元类型(InfinityBigIntegerCellItem 实例),用于访问磁盘属性
|
// 保存存储单元类型(InfinityBigIntegerCellItem 实例),用于访问磁盘属性
|
||||||
|
|
@ -93,15 +96,16 @@ public class InfinityBigIntegerCellInventory implements StorageCell {
|
||||||
private void initData() {
|
private void initData() {
|
||||||
// 如果磁盘有 UUID,加载存储的物品数据
|
// 如果磁盘有 UUID,加载存储的物品数据
|
||||||
if (hasUUID()) {
|
if (hasUUID()) {
|
||||||
this.totalAEKeyType = getCellStorage().amounts.size();
|
InfinityDataStorage storage = getCellStorage();
|
||||||
this.totalAEKey2Amounts = getCellStorage().itemCount.equals(BigInteger.ZERO) ?
|
this.totalAEKeyType = storage.amounts.size();
|
||||||
BigInteger.ZERO :
|
this.totalAEKey2Amounts = storage.itemCount.equals(BI_ZERO) ?
|
||||||
getCellStorage().itemCount;
|
BI_ZERO :
|
||||||
|
storage.itemCount;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// 否则初始化为空
|
// 否则初始化为空
|
||||||
this.totalAEKeyType = 0;
|
this.totalAEKeyType = 0;
|
||||||
this.totalAEKey2Amounts = BigInteger.ZERO;
|
this.totalAEKey2Amounts = BI_ZERO;
|
||||||
// 加载物品数据
|
// 加载物品数据
|
||||||
getCellStoredMap();
|
getCellStoredMap();
|
||||||
}
|
}
|
||||||
|
|
@ -111,7 +115,7 @@ public class InfinityBigIntegerCellInventory implements StorageCell {
|
||||||
@Override
|
@Override
|
||||||
public CellState getStatus() {
|
public CellState getStatus() {
|
||||||
// 如果没有存储任何物品,返回空状态
|
// 如果没有存储任何物品,返回空状态
|
||||||
if (this.getTotalAEKey2Amounts().equals(BigInteger.ZERO)) {
|
if (this.getTotalAEKey2Amounts().equals(BI_ZERO)) {
|
||||||
return CellState.EMPTY;
|
return CellState.EMPTY;
|
||||||
}
|
}
|
||||||
// 否则返回满状态
|
// 否则返回满状态
|
||||||
|
|
@ -130,7 +134,7 @@ public class InfinityBigIntegerCellInventory implements StorageCell {
|
||||||
if (this.isPersisted)
|
if (this.isPersisted)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (totalAEKey2Amounts.equals(BigInteger.ZERO)) {
|
if (totalAEKey2Amounts.equals(BI_ZERO)) {
|
||||||
if (hasUUID()) {
|
if (hasUUID()) {
|
||||||
getStorageManagerInstance().removeCell(getUUID());
|
getStorageManagerInstance().removeCell(getUUID());
|
||||||
if (self.hasTag()) {
|
if (self.hasTag()) {
|
||||||
|
|
@ -152,12 +156,12 @@ public class InfinityBigIntegerCellInventory implements StorageCell {
|
||||||
// 创建物品数量列表
|
// 创建物品数量列表
|
||||||
ListTag amounts = new ListTag();
|
ListTag amounts = new ListTag();
|
||||||
// 初始化物品总数
|
// 初始化物品总数
|
||||||
BigInteger itemCount = BigInteger.ZERO;
|
BigInteger itemCount = BI_ZERO;
|
||||||
|
|
||||||
for (var entry : this.AEKey2AmountsMap.object2ObjectEntrySet()) {
|
for (var entry : this.AEKey2AmountsMap.object2ObjectEntrySet()) {
|
||||||
BigInteger amount = entry.getValue();
|
BigInteger amount = entry.getValue();
|
||||||
// 如果数量大于 0,添加到键和数量列表
|
// 如果数量大于 0,添加到键和数量列表
|
||||||
if (amount.compareTo(BigInteger.ZERO) > 0) {
|
if (amount.compareTo(BI_ZERO) > 0) {
|
||||||
keys.add(entry.getKey().toTagGeneric());
|
keys.add(entry.getKey().toTagGeneric());
|
||||||
CompoundTag amountTag = new CompoundTag();
|
CompoundTag amountTag = new CompoundTag();
|
||||||
amountTag.putByteArray("value", amount.toByteArray());
|
amountTag.putByteArray("value", amount.toByteArray());
|
||||||
|
|
@ -233,7 +237,7 @@ public class InfinityBigIntegerCellInventory implements StorageCell {
|
||||||
// 获取或初始化存储映射
|
// 获取或初始化存储映射
|
||||||
private Object2ObjectMap<AEKey, BigInteger> getCellStoredMap() {
|
private Object2ObjectMap<AEKey, BigInteger> getCellStoredMap() {
|
||||||
if (AEKey2AmountsMap == null) {
|
if (AEKey2AmountsMap == null) {
|
||||||
AEKey2AmountsMap = new Object2ObjectOpenHashMap<>();
|
AEKey2AmountsMap = new Object2ObjectOpenHashMap<>(512, 0.6f);
|
||||||
this.loadCellStoredMap();
|
this.loadCellStoredMap();
|
||||||
}
|
}
|
||||||
return AEKey2AmountsMap;
|
return AEKey2AmountsMap;
|
||||||
|
|
@ -242,30 +246,39 @@ public class InfinityBigIntegerCellInventory implements StorageCell {
|
||||||
// 获取所有可用的物品堆栈及其数量
|
// 获取所有可用的物品堆栈及其数量
|
||||||
@Override
|
@Override
|
||||||
public void getAvailableStacks(KeyCounter out) {
|
public void getAvailableStacks(KeyCounter out) {
|
||||||
BigInteger maxLong = BigInteger.valueOf(Long.MAX_VALUE);
|
var map = getCellStoredMap();
|
||||||
if(this.getCellStoredMap() == null) return;
|
if (map == null || map.isEmpty()) {
|
||||||
for (var entry : this.getCellStoredMap().object2ObjectEntrySet()) {
|
return;
|
||||||
AEKey key = entry.getKey();
|
}
|
||||||
BigInteger value = entry.getValue();
|
|
||||||
|
|
||||||
// 获取 KeyCounter 中已有的值
|
for (var entry : map.object2ObjectEntrySet()) {
|
||||||
|
AEKey key = entry.getKey();
|
||||||
|
BigInteger amount = entry.getValue();
|
||||||
|
|
||||||
|
// 如果当前要添加的数量本身就超过 Long.MAX_VALUE,直接设为 MAX
|
||||||
|
if (amount.compareTo(BI_LONG_MAX) > 0) {
|
||||||
|
out.set(key, Long.MAX_VALUE);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
long addAmount = amount.longValue();
|
||||||
long existing = out.get(key);
|
long existing = out.get(key);
|
||||||
|
|
||||||
// 计算总和并限制到 Long.MAX_VALUE
|
// 如果已有值已是 MAX,直接跳过
|
||||||
BigInteger sum = BigInteger.valueOf(existing).add(value);
|
|
||||||
long toSet = sum.compareTo(maxLong) > 0 ? Long.MAX_VALUE : sum.longValue();
|
|
||||||
// 更新 KeyCounter
|
|
||||||
if (existing == Long.MAX_VALUE) {
|
if (existing == Long.MAX_VALUE) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
long delta = toSet - existing;
|
|
||||||
if (delta != 0) {
|
// 计算总和,防止溢出
|
||||||
out.add(key, delta);
|
long sum = existing + addAmount;
|
||||||
|
if (sum < 0 || sum < existing) { // 溢出检测
|
||||||
|
out.set(key, Long.MAX_VALUE);
|
||||||
|
} else {
|
||||||
|
out.add(key, addAmount); // 安全添加
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 从存储中加载物品映射
|
// 从存储中加载物品映射
|
||||||
private void loadCellStoredMap() {
|
private void loadCellStoredMap() {
|
||||||
boolean dataCorruption = false;
|
boolean dataCorruption = false;
|
||||||
|
|
@ -282,7 +295,7 @@ public class InfinityBigIntegerCellInventory implements StorageCell {
|
||||||
AEKey key = AEKey.fromTagGeneric(keys.getCompound(i));
|
AEKey key = AEKey.fromTagGeneric(keys.getCompound(i));
|
||||||
BigInteger amount = new BigInteger(amounts.getCompound(i).getByteArray("value"));
|
BigInteger amount = new BigInteger(amounts.getCompound(i).getByteArray("value"));
|
||||||
// 检查数据是否损坏
|
// 检查数据是否损坏
|
||||||
if (amount.compareTo(BigInteger.ZERO) <= 0 || key == null) {
|
if (amount.compareTo(BI_ZERO) <= 0 || key == null) {
|
||||||
dataCorruption = true;
|
dataCorruption = true;
|
||||||
} else {
|
} else {
|
||||||
AEKey2AmountsMap.put(key, amount);
|
AEKey2AmountsMap.put(key, amount);
|
||||||
|
|
@ -303,7 +316,7 @@ public class InfinityBigIntegerCellInventory implements StorageCell {
|
||||||
// 更新存储的物品种类数量
|
// 更新存储的物品种类数量
|
||||||
this.totalAEKeyType = this.AEKey2AmountsMap.size();
|
this.totalAEKeyType = this.AEKey2AmountsMap.size();
|
||||||
// 重置物品总数
|
// 重置物品总数
|
||||||
this.totalAEKey2Amounts = BigInteger.ZERO;
|
this.totalAEKey2Amounts = BI_ZERO;
|
||||||
// 计算物品总数
|
// 计算物品总数
|
||||||
for (BigInteger AEKey2Amounts : this.AEKey2AmountsMap.values()) {
|
for (BigInteger AEKey2Amounts : this.AEKey2AmountsMap.values()) {
|
||||||
this.totalAEKey2Amounts = this.totalAEKey2Amounts.add(AEKey2Amounts);
|
this.totalAEKey2Amounts = this.totalAEKey2Amounts.add(AEKey2Amounts);
|
||||||
|
|
@ -341,7 +354,7 @@ public class InfinityBigIntegerCellInventory implements StorageCell {
|
||||||
loadCellStoredMap();
|
loadCellStoredMap();
|
||||||
}
|
}
|
||||||
// 获取当前物品数量
|
// 获取当前物品数量
|
||||||
BigInteger currentAmount = this.getCellStoredMap().getOrDefault(what, BigInteger.ZERO);
|
BigInteger currentAmount = this.getCellStoredMap().getOrDefault(what, BI_ZERO);
|
||||||
|
|
||||||
if (mode == Actionable.MODULATE) {
|
if (mode == Actionable.MODULATE) {
|
||||||
// 实际插入,更新数量并保存
|
// 实际插入,更新数量并保存
|
||||||
|
|
@ -355,9 +368,9 @@ public class InfinityBigIntegerCellInventory implements StorageCell {
|
||||||
// 从存储单元提取物品
|
// 从存储单元提取物品
|
||||||
@Override
|
@Override
|
||||||
public long extract(AEKey what, long amount, Actionable mode, IActionSource source) {
|
public long extract(AEKey what, long amount, Actionable mode, IActionSource source) {
|
||||||
BigInteger currentAmount = this.getCellStoredMap().getOrDefault(what, BigInteger.ZERO);
|
BigInteger currentAmount = this.getCellStoredMap().getOrDefault(what, BI_ZERO);
|
||||||
// 如果有物品可提取
|
// 如果有物品可提取
|
||||||
if (currentAmount.compareTo(BigInteger.ZERO) > 0) {
|
if (currentAmount.compareTo(BI_ZERO) > 0) {
|
||||||
|
|
||||||
BigInteger requested = BigInteger.valueOf(amount);
|
BigInteger requested = BigInteger.valueOf(amount);
|
||||||
|
|
||||||
|
|
@ -367,7 +380,7 @@ public class InfinityBigIntegerCellInventory implements StorageCell {
|
||||||
getCellStoredMap().remove(what);
|
getCellStoredMap().remove(what);
|
||||||
this.saveChanges();
|
this.saveChanges();
|
||||||
}
|
}
|
||||||
return currentAmount.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0 ? Long.MAX_VALUE : currentAmount.longValue();
|
return currentAmount.compareTo(BI_LONG_MAX) > 0 ? Long.MAX_VALUE : currentAmount.longValue();
|
||||||
} else {
|
} else {
|
||||||
// 提取部分数量
|
// 提取部分数量
|
||||||
if (mode == Actionable.MODULATE) {
|
if (mode == Actionable.MODULATE) {
|
||||||
|
|
@ -3,7 +3,6 @@ package com.extendedae_plus.client;
|
||||||
import appeng.client.render.crafting.CraftingCubeModel;
|
import appeng.client.render.crafting.CraftingCubeModel;
|
||||||
import appeng.init.client.InitScreens;
|
import appeng.init.client.InitScreens;
|
||||||
import com.extendedae_plus.ExtendedAEPlus;
|
import com.extendedae_plus.ExtendedAEPlus;
|
||||||
import com.extendedae_plus.ae.definitions.upgrades.EntitySpeedCardItem;
|
|
||||||
import com.extendedae_plus.ae.menu.EntitySpeedTickerMenu;
|
import com.extendedae_plus.ae.menu.EntitySpeedTickerMenu;
|
||||||
import com.extendedae_plus.ae.screen.EntitySpeedTickerScreen;
|
import com.extendedae_plus.ae.screen.EntitySpeedTickerScreen;
|
||||||
import com.extendedae_plus.client.render.crafting.EPlusCraftingCubeModelProvider;
|
import com.extendedae_plus.client.render.crafting.EPlusCraftingCubeModelProvider;
|
||||||
|
|
@ -12,6 +11,7 @@ import com.extendedae_plus.content.crafting.EPlusCraftingUnitType;
|
||||||
import com.extendedae_plus.hooks.BuiltInModelHooks;
|
import com.extendedae_plus.hooks.BuiltInModelHooks;
|
||||||
import com.extendedae_plus.init.ModItems;
|
import com.extendedae_plus.init.ModItems;
|
||||||
import com.extendedae_plus.init.ModMenuTypes;
|
import com.extendedae_plus.init.ModMenuTypes;
|
||||||
|
import com.extendedae_plus.items.materials.EntitySpeedCardItem;
|
||||||
import net.minecraft.client.gui.screens.MenuScreens;
|
import net.minecraft.client.gui.screens.MenuScreens;
|
||||||
import net.minecraft.client.renderer.item.ItemProperties;
|
import net.minecraft.client.renderer.item.ItemProperties;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
package com.extendedae_plus.content.crafting;
|
package com.extendedae_plus.content.crafting;
|
||||||
|
|
||||||
import appeng.block.crafting.ICraftingUnitType;
|
import appeng.block.crafting.ICraftingUnitType;
|
||||||
import net.minecraft.world.item.Item;
|
|
||||||
|
|
||||||
import com.extendedae_plus.init.ModItems;
|
import com.extendedae_plus.init.ModItems;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
|
||||||
public enum EPlusCraftingUnitType implements ICraftingUnitType {
|
public enum EPlusCraftingUnitType implements ICraftingUnitType {
|
||||||
ACCELERATOR_4x(0, 4),
|
ACCELERATOR_4x(0, 4),
|
||||||
|
|
@ -34,11 +33,11 @@ public enum EPlusCraftingUnitType implements ICraftingUnitType {
|
||||||
@Override
|
@Override
|
||||||
public Item getItemFromType() {
|
public Item getItemFromType() {
|
||||||
return switch (this) {
|
return switch (this) {
|
||||||
case ACCELERATOR_4x -> ModItems.ACCELERATOR_4x.get();
|
case ACCELERATOR_4x -> ModItems.CRAFTING_ACCELERATOR_4x.get();
|
||||||
case ACCELERATOR_16x -> ModItems.ACCELERATOR_16x.get();
|
case ACCELERATOR_16x -> ModItems.CRAFTING_ACCELERATOR_16x.get();
|
||||||
case ACCELERATOR_64x -> ModItems.ACCELERATOR_64x.get();
|
case ACCELERATOR_64x -> ModItems.CRAFTING_ACCELERATOR_64x.get();
|
||||||
case ACCELERATOR_256x -> ModItems.ACCELERATOR_256x.get();
|
case ACCELERATOR_256x -> ModItems.CRAFTING_ACCELERATOR_256x.get();
|
||||||
case ACCELERATOR_1024x -> ModItems.ACCELERATOR_1024x.get();
|
case ACCELERATOR_1024x -> ModItems.CRAFTING_ACCELERATOR_1024x.get();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
package com.extendedae_plus.content.wireless;
|
package com.extendedae_plus.content.wireless;
|
||||||
|
|
||||||
import com.extendedae_plus.ae.items.ChannelCardItem;
|
|
||||||
import com.extendedae_plus.init.ModBlockEntities;
|
import com.extendedae_plus.init.ModBlockEntities;
|
||||||
import com.extendedae_plus.init.ModItems;
|
import com.extendedae_plus.init.ModItems;
|
||||||
|
import com.extendedae_plus.items.materials.ChannelCardItem;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
|
|
@ -11,6 +11,7 @@ import net.minecraft.world.entity.LivingEntity;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.Items;
|
import net.minecraft.world.item.Items;
|
||||||
|
import net.minecraft.world.level.BlockGetter;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.EntityBlock;
|
import net.minecraft.world.level.block.EntityBlock;
|
||||||
|
|
@ -154,6 +155,21 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock {
|
||||||
super.onRemove(state, level, pos, newState, isMoving);
|
super.onRemove(state, level, pos, newState, isMoving);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getDestroyProgress(BlockState state, Player player, BlockGetter level, BlockPos pos) {
|
||||||
|
// 基础挖掘进度
|
||||||
|
float baseProgress = super.getDestroyProgress(state, player, level, pos);
|
||||||
|
|
||||||
|
// 获取方块实体并检查锁定状态
|
||||||
|
if (level.getBlockEntity(pos) instanceof WirelessTransceiverBlockEntity te) {
|
||||||
|
if (te.isLocked()) {
|
||||||
|
// 如果被锁定,大幅降低挖掘速度
|
||||||
|
return baseProgress * 0.1f; // 只有10%的挖掘速度
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return baseProgress; // 正常挖掘速度
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState state, BlockEntityType<T> type) {
|
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState state, BlockEntityType<T> type) {
|
||||||
if (level.isClientSide) return null;
|
if (level.isClientSide) return null;
|
||||||
|
|
|
||||||
527
src/main/java/com/extendedae_plus/datagen/CraftingRecipes.java
Normal file
527
src/main/java/com/extendedae_plus/datagen/CraftingRecipes.java
Normal file
|
|
@ -0,0 +1,527 @@
|
||||||
|
package com.extendedae_plus.datagen;
|
||||||
|
|
||||||
|
import appeng.core.definitions.AEBlocks;
|
||||||
|
import appeng.core.definitions.AEItems;
|
||||||
|
import appeng.datagen.providers.tags.ConventionTags;
|
||||||
|
import appeng.recipes.transform.TransformCircumstance;
|
||||||
|
import appeng.recipes.transform.TransformRecipeBuilder;
|
||||||
|
import com.extendedae_plus.ExtendedAEPlus;
|
||||||
|
import com.extendedae_plus.init.ModItems;
|
||||||
|
import com.extendedae_plus.items.BasicCoreItem;
|
||||||
|
import com.extendedae_plus.items.materials.EntitySpeedCardItem;
|
||||||
|
import com.extendedae_plus.util.ModCheckUtils;
|
||||||
|
import com.glodblock.github.appflux.common.AFItemAndBlock;
|
||||||
|
import com.glodblock.github.appflux.util.AFTags;
|
||||||
|
import com.glodblock.github.extendedae.common.EPPItemAndBlock;
|
||||||
|
import gripe._90.megacells.definition.MEGAItems;
|
||||||
|
import net.minecraft.data.PackOutput;
|
||||||
|
import net.minecraft.data.recipes.*;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Items;
|
||||||
|
import net.minecraft.world.level.block.Blocks;
|
||||||
|
import net.pedroksl.advanced_ae.common.definitions.AAEBlocks;
|
||||||
|
import net.pedroksl.advanced_ae.common.definitions.AAEFluids;
|
||||||
|
import net.pedroksl.advanced_ae.common.definitions.AAEItems;
|
||||||
|
import net.pedroksl.advanced_ae.recipes.ReactionChamberRecipeBuilder;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
public class CraftingRecipes extends RecipeProvider {
|
||||||
|
public CraftingRecipes(PackOutput output) {
|
||||||
|
super(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildRecipes(@NotNull Consumer<FinishedRecipe> consumer) {
|
||||||
|
addCraftingAccelerators(consumer);
|
||||||
|
addCardRecipes(consumer);
|
||||||
|
addCoreRecipes(consumer);
|
||||||
|
addTransformRecipes(consumer);
|
||||||
|
addReactionChamberRecipes(consumer);
|
||||||
|
|
||||||
|
// 吞噬盘
|
||||||
|
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.INFINITY_BIGINTEGER_CELL.get())
|
||||||
|
.pattern("GOG")
|
||||||
|
.pattern("NIN")
|
||||||
|
.pattern("BBB")
|
||||||
|
.define('G', AEBlocks.QUARTZ_VIBRANT_GLASS)
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('N', Items.NETHER_STAR)
|
||||||
|
.define('I', ModItems.INFINITY_CORE.get())
|
||||||
|
.define('B', Items.NETHERITE_BLOCK)
|
||||||
|
.unlockedBy("has_oblivion_singularity", has(ModItems.OBLIVION_SINGULARITY.get()))
|
||||||
|
.save(consumer);
|
||||||
|
|
||||||
|
// 状态控制器
|
||||||
|
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ModItems.NETWORK_PATTERN_CONTROLLER.get())
|
||||||
|
.requires(ConventionTags.ILLUMINATED_PANEL)
|
||||||
|
.requires(ConventionTags.PATTERN_PROVIDER)
|
||||||
|
.requires(AEItems.NETWORK_TOOL)
|
||||||
|
.unlockedBy("has_network_tool", has(AEItems.NETWORK_TOOL))
|
||||||
|
.unlockedBy("has_pattern_provider", has(ConventionTags.PATTERN_PROVIDER))
|
||||||
|
.save(consumer);
|
||||||
|
|
||||||
|
// 无线收发器
|
||||||
|
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.WIRELESS_TRANSCEIVER.get())
|
||||||
|
.pattern("RRR")
|
||||||
|
.pattern("RLR")
|
||||||
|
.pattern("RRR")
|
||||||
|
.define('R', AEBlocks.QUANTUM_RING)
|
||||||
|
.define('L', AEBlocks.QUANTUM_LINK)
|
||||||
|
.unlockedBy("has_quantum_ring", has(AEBlocks.QUANTUM_RING))
|
||||||
|
.save(consumer);
|
||||||
|
|
||||||
|
// 实体加速器
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.ENTITY_TICKER_PART_ITEM.get())
|
||||||
|
.pattern("SZS")
|
||||||
|
.pattern("QXQ")
|
||||||
|
.pattern("SIS")
|
||||||
|
.defineNbt('S', EntitySpeedCardItem.withMultiplier(2))
|
||||||
|
.define('Z', AEBlocks.DENSE_ENERGY_CELL)
|
||||||
|
.define('Q', AEItems.SINGULARITY)
|
||||||
|
.define('X', Items.NETHER_STAR)
|
||||||
|
.define('I', EPPItemAndBlock.EX_IO_PORT)
|
||||||
|
.unlockedBy("has_entity_speed_card_x2", has(EntitySpeedCardItem.withMultiplier(2).getItem()))
|
||||||
|
.unlockedBy("has_singularity", has(AEItems.SINGULARITY))
|
||||||
|
.save(consumer);
|
||||||
|
|
||||||
|
// 上传核心
|
||||||
|
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ModItems.ASSEMBLER_MATRIX_UPLOAD_CORE.get())
|
||||||
|
.requires(EPPItemAndBlock.ASSEMBLER_MATRIX_WALL)
|
||||||
|
.requires(Items.LEVER)
|
||||||
|
.unlockedBy("has_assembler_matrix_wall", has(EPPItemAndBlock.ASSEMBLER_MATRIX_WALL))
|
||||||
|
.save(consumer);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addCraftingAccelerators(Consumer<FinishedRecipe> consumer) {
|
||||||
|
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ModItems.CRAFTING_ACCELERATOR_4x.get())
|
||||||
|
.requires(AEBlocks.CRAFTING_ACCELERATOR)
|
||||||
|
.requires(AEItems.CELL_COMPONENT_4K)
|
||||||
|
.unlockedBy("has_accelerator", has(AEBlocks.CRAFTING_ACCELERATOR))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("network/crafting/" + ModItems.CRAFTING_ACCELERATOR_4x.get().toString().toLowerCase()));
|
||||||
|
|
||||||
|
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ModItems.CRAFTING_ACCELERATOR_16x.get())
|
||||||
|
.requires(AEBlocks.CRAFTING_ACCELERATOR)
|
||||||
|
.requires(AEItems.CELL_COMPONENT_16K)
|
||||||
|
.unlockedBy("has_accelerator", has(AEBlocks.CRAFTING_ACCELERATOR))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("network/crafting/" + ModItems.CRAFTING_ACCELERATOR_16x.get().toString().toLowerCase()));
|
||||||
|
|
||||||
|
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ModItems.CRAFTING_ACCELERATOR_64x.get())
|
||||||
|
.requires(AEBlocks.CRAFTING_ACCELERATOR)
|
||||||
|
.requires(AEItems.CELL_COMPONENT_64K)
|
||||||
|
.unlockedBy("has_accelerator", has(AEBlocks.CRAFTING_ACCELERATOR))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("network/crafting/" + ModItems.CRAFTING_ACCELERATOR_64x.get().toString().toLowerCase()));
|
||||||
|
|
||||||
|
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ModItems.CRAFTING_ACCELERATOR_256x.get())
|
||||||
|
.requires(AEBlocks.CRAFTING_ACCELERATOR)
|
||||||
|
.requires(AEItems.CELL_COMPONENT_256K)
|
||||||
|
.unlockedBy("has_accelerator", has(AEBlocks.CRAFTING_ACCELERATOR))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("network/crafting/" + ModItems.CRAFTING_ACCELERATOR_256x.get().toString().toLowerCase()));
|
||||||
|
|
||||||
|
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.CRAFTING_ACCELERATOR_1024x.get())
|
||||||
|
.pattern(" ")
|
||||||
|
.pattern("ACA")
|
||||||
|
.pattern(" ")
|
||||||
|
.define('A', AEItems.CELL_COMPONENT_256K)
|
||||||
|
.define('C', ModItems.CRAFTING_ACCELERATOR_256x.get())
|
||||||
|
.unlockedBy("has_256x", has(ModItems.CRAFTING_ACCELERATOR_256x.get()))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("network/crafting/" + ModItems.CRAFTING_ACCELERATOR_1024x.get().toString().toLowerCase()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addCardRecipes(Consumer<FinishedRecipe> consumer) {
|
||||||
|
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ModItems.CHANNEL_CARD.get())
|
||||||
|
.requires(AEItems.ADVANCED_CARD)
|
||||||
|
.requires(ModItems.WIRELESS_TRANSCEIVER.get())
|
||||||
|
.unlockedBy("has_advanced_card", has(AEItems.ADVANCED_CARD))
|
||||||
|
.save(consumer);
|
||||||
|
|
||||||
|
// 2x Entity Speed Card
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, EntitySpeedCardItem.withMultiplier(2))
|
||||||
|
.pattern("SBS")
|
||||||
|
.pattern("QXQ")
|
||||||
|
.pattern("SBS")
|
||||||
|
.define('S', AEItems.SPEED_CARD)
|
||||||
|
.define('B', ModItems.CRAFTING_ACCELERATOR_64x.get())
|
||||||
|
.define('Q', AEItems.SPATIAL_2_CELL_COMPONENT)
|
||||||
|
.define('X', AEItems.CELL_COMPONENT_256K)
|
||||||
|
.unlockedBy("has_speed_card", has(AEItems.SPEED_CARD))
|
||||||
|
.unlockedBy("has_64x_accelerator", has(ModItems.CRAFTING_ACCELERATOR_64x.get()))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("entity_speed_card_2x"));
|
||||||
|
|
||||||
|
// 4x Entity Speed Card
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, EntitySpeedCardItem.withMultiplier(4))
|
||||||
|
.pattern("SBS")
|
||||||
|
.pattern("QXQ")
|
||||||
|
.pattern("SBS")
|
||||||
|
.defineNbt('S', EntitySpeedCardItem.withMultiplier(2))
|
||||||
|
.define('B', ModItems.CRAFTING_ACCELERATOR_256x.get())
|
||||||
|
.define('Q', AEItems.SPATIAL_16_CELL_COMPONENT)
|
||||||
|
.define('X', AEBlocks.DENSE_ENERGY_CELL)
|
||||||
|
.unlockedBy("has_entity_speed_card_2x", has(EntitySpeedCardItem.withMultiplier(2).getItem()))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("entity_speed_card_4x"));
|
||||||
|
|
||||||
|
// 8x Entity Speed Card
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, EntitySpeedCardItem.withMultiplier(8))
|
||||||
|
.pattern("SBS")
|
||||||
|
.pattern("QXQ")
|
||||||
|
.pattern("SBS")
|
||||||
|
.defineNbt('S', EntitySpeedCardItem.withMultiplier(4))
|
||||||
|
.define('B', ModItems.CRAFTING_ACCELERATOR_1024x.get())
|
||||||
|
.define('Q', AEItems.SPATIAL_128_CELL_COMPONENT)
|
||||||
|
.define('X', Items.NETHER_STAR)
|
||||||
|
.unlockedBy("has_entity_speed_card_4x", has(EntitySpeedCardItem.withMultiplier(4).getItem()))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("entity_speed_card_8x"));
|
||||||
|
|
||||||
|
// 16x Entity Speed Card
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC,
|
||||||
|
EntitySpeedCardItem.withMultiplier(16))
|
||||||
|
.pattern("SAS")
|
||||||
|
.pattern("QXQ")
|
||||||
|
.pattern("SBS")
|
||||||
|
.defineNbt('S', EntitySpeedCardItem.withMultiplier(8))
|
||||||
|
.define('A', Items.NETHER_STAR)
|
||||||
|
.define('Q', AEItems.SPATIAL_128_CELL_COMPONENT)
|
||||||
|
.define('X', Items.DRAGON_EGG)
|
||||||
|
.define('B', Blocks.BEACON)
|
||||||
|
.unlockedBy("has_entity_speed_card_8x", has(EntitySpeedCardItem.withMultiplier(8).getItem()))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("entity_speed_card_16x"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addCoreRecipes(Consumer<FinishedRecipe> consumer) {
|
||||||
|
// 基础核心配方
|
||||||
|
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.BASIC_CORE.get())
|
||||||
|
.pattern("ABA")
|
||||||
|
.pattern("CDE")
|
||||||
|
.pattern("AFA")
|
||||||
|
.define('A', Items.NETHERITE_BLOCK)
|
||||||
|
.define('B', Items.NETHER_STAR)
|
||||||
|
.define('C', AEItems.LOGIC_PROCESSOR)
|
||||||
|
.define('D', AEItems.FLUIX_PEARL)
|
||||||
|
.define('E', AEItems.ENGINEERING_PROCESSOR)
|
||||||
|
.define('F', AEItems.CALCULATION_PROCESSOR)
|
||||||
|
.unlockedBy("has_nether_star", has(Items.NETHER_STAR))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/basic_core"));
|
||||||
|
|
||||||
|
ItemStack base = BasicCoreItem.of(null, 0); // 未定型核心
|
||||||
|
// ====================== STORAGE LINE ======================
|
||||||
|
// storage_1
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, BasicCoreItem.storageStage(1))
|
||||||
|
.pattern("MCM")
|
||||||
|
.pattern("LBP")
|
||||||
|
.pattern("MEM")
|
||||||
|
.define('M', ConventionTags.CERTUS_QUARTZ_DUST)
|
||||||
|
.define('C', AEItems.CELL_COMPONENT_16K)
|
||||||
|
.define('L', AEItems.LOGIC_PROCESSOR)
|
||||||
|
.defineNbt('B', base)
|
||||||
|
.define('P', AEItems.CALCULATION_PROCESSOR)
|
||||||
|
.define('E', AEItems.ENGINEERING_PROCESSOR)
|
||||||
|
.unlockedBy("has_basic_core", has(ModItems.BASIC_CORE.get()))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/storage_core_1"));
|
||||||
|
|
||||||
|
// storage_2
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, BasicCoreItem.storageStage(2))
|
||||||
|
.pattern("MOM")
|
||||||
|
.pattern("CBC")
|
||||||
|
.pattern("MOM")
|
||||||
|
.define('M', ConventionTags.ALL_CERTUS_QUARTZ)
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('C', AEItems.CELL_COMPONENT_64K)
|
||||||
|
.defineNbt('B', BasicCoreItem.storageStage(1))
|
||||||
|
.unlockedBy("has_storage_stage_1", has(BasicCoreItem.storageStage(1).getItem()))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/storage_core_2"));
|
||||||
|
|
||||||
|
// storage_3
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, BasicCoreItem.storageStage(3))
|
||||||
|
.pattern("MOM")
|
||||||
|
.pattern("CBC")
|
||||||
|
.pattern("MCM")
|
||||||
|
.define('M', AEBlocks.QUARTZ_BLOCK)
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('C', AEItems.CELL_COMPONENT_256K)
|
||||||
|
.defineNbt('B', BasicCoreItem.storageStage(2))
|
||||||
|
.unlockedBy("has_storage_stage_2", has(BasicCoreItem.storageStage(2).getItem()))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/storage_core_3"));
|
||||||
|
|
||||||
|
// ====================== SPATIAL LINE ======================
|
||||||
|
// spatial_1
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, BasicCoreItem.spatialStage(1))
|
||||||
|
.pattern("MCM")
|
||||||
|
.pattern("LBP")
|
||||||
|
.pattern("MEM")
|
||||||
|
.define('M', ConventionTags.FLUIX_DUST)
|
||||||
|
.define('C', AEItems.SPATIAL_2_CELL_COMPONENT)
|
||||||
|
.define('L', AEItems.LOGIC_PROCESSOR)
|
||||||
|
.defineNbt('B', base)
|
||||||
|
.define('P', AEItems.CALCULATION_PROCESSOR)
|
||||||
|
.define('E', AEItems.ENGINEERING_PROCESSOR)
|
||||||
|
.unlockedBy("has_basic_core", has(ModItems.BASIC_CORE.get()))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/spatial_core_1"));
|
||||||
|
|
||||||
|
// spatial_2
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, BasicCoreItem.spatialStage(2))
|
||||||
|
.pattern("MOM")
|
||||||
|
.pattern("CBC")
|
||||||
|
.pattern("MOM")
|
||||||
|
.define('M', ConventionTags.FLUIX_CRYSTAL)
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('C', AEItems.SPATIAL_16_CELL_COMPONENT)
|
||||||
|
.defineNbt('B', BasicCoreItem.spatialStage(1))
|
||||||
|
.unlockedBy("has_spatial_stage_1", has(BasicCoreItem.spatialStage(1).getItem()))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/spatial_core_2"));
|
||||||
|
|
||||||
|
// spatial_3
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, BasicCoreItem.spatialStage(3))
|
||||||
|
.pattern("MOM")
|
||||||
|
.pattern("CBC")
|
||||||
|
.pattern("MCM")
|
||||||
|
.define('M', AEBlocks.FLUIX_BLOCK)
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('C', AEItems.SPATIAL_128_CELL_COMPONENT)
|
||||||
|
.defineNbt('B', BasicCoreItem.spatialStage(2))
|
||||||
|
.unlockedBy("has_spatial_stage_2", has(BasicCoreItem.spatialStage(2).getItem()))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/spatial_core_3"));
|
||||||
|
|
||||||
|
// ====================== ENERGY LINE (依赖 AppFlux) ======================
|
||||||
|
// energy_storage_1
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, BasicCoreItem.energyStage(1))
|
||||||
|
.pattern("MCM")
|
||||||
|
.pattern("EBE")
|
||||||
|
.pattern("MEM")
|
||||||
|
.define('M', AFTags.REDSTONE_GEM)
|
||||||
|
.define('C', AFItemAndBlock.CORE_16k)
|
||||||
|
.define('E', AFItemAndBlock.ENERGY_PROCESSOR)
|
||||||
|
.defineNbt('B', base)
|
||||||
|
.unlockedBy("has_basic_core", has(ModItems.BASIC_CORE.get()))
|
||||||
|
.requiresMod(ModCheckUtils.MODID_APPFLUX)
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/energy_storage_core_1"));
|
||||||
|
|
||||||
|
// energy_storage_2
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, BasicCoreItem.energyStage(2))
|
||||||
|
.pattern("MOM")
|
||||||
|
.pattern("CBC")
|
||||||
|
.pattern("MOM")
|
||||||
|
.define('M', AFItemAndBlock.CHARGED_REDSTONE)
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('C', AFItemAndBlock.CORE_64k)
|
||||||
|
.defineNbt('B', BasicCoreItem.energyStage(1))
|
||||||
|
.unlockedBy("has_energy_stage_1", has(BasicCoreItem.energyStage(1).getItem()))
|
||||||
|
.requiresMod(ModCheckUtils.MODID_APPFLUX)
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/energy_storage_core_2"));
|
||||||
|
|
||||||
|
// energy_storage_3
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, BasicCoreItem.energyStage(3))
|
||||||
|
.pattern("MOM")
|
||||||
|
.pattern("CBC")
|
||||||
|
.pattern("MCM")
|
||||||
|
.define('M', AFTags.SKY_RESIN_INGOT)
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('C', AFItemAndBlock.CORE_256k)
|
||||||
|
.defineNbt('B', BasicCoreItem.energyStage(2))
|
||||||
|
.unlockedBy("has_energy_stage_2", has(BasicCoreItem.energyStage(2).getItem()))
|
||||||
|
.requiresMod(ModCheckUtils.MODID_APPFLUX)
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/energy_storage_core_3"));
|
||||||
|
|
||||||
|
// ====================== QUANTUM LINE (依赖 Advanced AE) ======================
|
||||||
|
// quantum_storage_1
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, BasicCoreItem.quantumStage(1))
|
||||||
|
.pattern("MCM")
|
||||||
|
.pattern("EBE")
|
||||||
|
.pattern("MEM")
|
||||||
|
.define('M', AAEItems.QUANTUM_ALLOY)
|
||||||
|
.define('C', AAEItems.QUANTUM_STORAGE_COMPONENT)
|
||||||
|
.define('E', AAEItems.QUANTUM_PROCESSOR)
|
||||||
|
.defineNbt('B', base)
|
||||||
|
.unlockedBy("has_basic_core", has(ModItems.BASIC_CORE.get()))
|
||||||
|
.requiresMod(ModCheckUtils.MODID_AAE)
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/quantum_storage_core_1"));
|
||||||
|
|
||||||
|
// quantum_storage_2
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, BasicCoreItem.quantumStage(2))
|
||||||
|
.pattern("MOM")
|
||||||
|
.pattern("CBC")
|
||||||
|
.pattern("MOM")
|
||||||
|
.define('M', AAEBlocks.QUANTUM_ALLOY_BLOCK)
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('C', AAEItems.QUANTUM_STORAGE_COMPONENT)
|
||||||
|
.defineNbt('B', BasicCoreItem.quantumStage(1))
|
||||||
|
.unlockedBy("has_quantum_stage_1", has(BasicCoreItem.quantumStage(1).getItem()))
|
||||||
|
.requiresMod(ModCheckUtils.MODID_AAE)
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/quantum_storage_core_2"));
|
||||||
|
|
||||||
|
// quantum_storage_3
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, BasicCoreItem.quantumStage(3))
|
||||||
|
.pattern("MOM")
|
||||||
|
.pattern("CBC")
|
||||||
|
.pattern("MCM")
|
||||||
|
.define('M', AAEItems.QUANTUM_ALLOY_PLATE)
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('C', AAEBlocks.QUANTUM_STORAGE_128M)
|
||||||
|
.defineNbt('B', BasicCoreItem.quantumStage(2))
|
||||||
|
.unlockedBy("has_quantum_stage_2", has(BasicCoreItem.quantumStage(2).getItem()))
|
||||||
|
.requiresMod(ModCheckUtils.MODID_AAE)
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/quantum_storage_core_3"));
|
||||||
|
|
||||||
|
// storage_core
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.STORAGE_CORE.get())
|
||||||
|
.pattern("MOM")
|
||||||
|
.pattern("NBN")
|
||||||
|
.pattern("MCM")
|
||||||
|
.define('M', Items.NETHERITE_BLOCK)
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('N', Items.NETHER_STAR)
|
||||||
|
.define('C', AEItems.CELL_COMPONENT_256K)
|
||||||
|
.defineNbt('B', BasicCoreItem.storageStage(3))
|
||||||
|
.unlockedBy("has_storage_stage_3", has(BasicCoreItem.storageStage(3).getItem()))
|
||||||
|
.notRequiresMod(ModCheckUtils.MODID_MEGA)
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/" + ModItems.STORAGE_CORE.get().toString().toLowerCase()));
|
||||||
|
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.STORAGE_CORE.get())
|
||||||
|
.pattern("MOM")
|
||||||
|
.pattern("NBN")
|
||||||
|
.pattern("MCM")
|
||||||
|
.define('M', Items.NETHERITE_BLOCK)
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('N', Items.NETHER_STAR)
|
||||||
|
.define('C', MEGAItems.CELL_COMPONENT_256M)
|
||||||
|
.defineNbt('B', BasicCoreItem.storageStage(3))
|
||||||
|
.unlockedBy("has_storage_stage_3", has(BasicCoreItem.storageStage(3).getItem()))
|
||||||
|
.requiresMod(ModCheckUtils.MODID_MEGA)
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/compat/" + ModItems.STORAGE_CORE.get().toString().toLowerCase()));
|
||||||
|
|
||||||
|
// spatial_core
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.SPATIAL_CORE.get())
|
||||||
|
.pattern("MOM")
|
||||||
|
.pattern("NBN")
|
||||||
|
.pattern("MCM")
|
||||||
|
.define('M', Items.NETHERITE_BLOCK)
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('N', Items.NETHER_STAR)
|
||||||
|
.define('C', AEItems.SPATIAL_128_CELL_COMPONENT)
|
||||||
|
.defineNbt('B', BasicCoreItem.spatialStage(3))
|
||||||
|
.unlockedBy("has_spatial_stage_3", has(BasicCoreItem.spatialStage(3).getItem()))
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/" + ModItems.SPATIAL_CORE.get().toString().toLowerCase()));
|
||||||
|
|
||||||
|
// energy_storage_core
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.ENERGY_STORAGE_CORE.get())
|
||||||
|
.pattern("MOM")
|
||||||
|
.pattern("NBN")
|
||||||
|
.pattern("MCM")
|
||||||
|
.define('M', Items.NETHERITE_BLOCK)
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('N', Items.NETHER_STAR)
|
||||||
|
.define('C', AFItemAndBlock.CORE_256k)
|
||||||
|
.defineNbt('B', BasicCoreItem.energyStage(3))
|
||||||
|
.unlockedBy("has_energy_stage_3", has(BasicCoreItem.energyStage(3).getItem()))
|
||||||
|
.requiresMod(ModCheckUtils.MODID_APPFLUX)
|
||||||
|
.notRequiresMod(ModCheckUtils.MODID_MEGA)
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/" + ModItems.ENERGY_STORAGE_CORE.get().toString().toLowerCase()));
|
||||||
|
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.ENERGY_STORAGE_CORE.get())
|
||||||
|
.pattern("MOM")
|
||||||
|
.pattern("NBN")
|
||||||
|
.pattern("MCM")
|
||||||
|
.define('M', Items.NETHERITE_BLOCK)
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('N', Items.NETHER_STAR)
|
||||||
|
.define('C', AFItemAndBlock.CORE_256M)
|
||||||
|
.defineNbt('B', BasicCoreItem.energyStage(3))
|
||||||
|
.unlockedBy("has_energy_stage_3", has(BasicCoreItem.energyStage(3).getItem()))
|
||||||
|
.requiresMod(ModCheckUtils.MODID_APPFLUX)
|
||||||
|
.requiresMod(ModCheckUtils.MODID_MEGA)
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/compat/" + ModItems.ENERGY_STORAGE_CORE.get().toString().toLowerCase()));
|
||||||
|
|
||||||
|
// quantum_storage_core
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.QUANTUM_STORAGE_CORE.get())
|
||||||
|
.pattern("MOM")
|
||||||
|
.pattern("NBN")
|
||||||
|
.pattern("MCM")
|
||||||
|
.define('M', Items.NETHERITE_BLOCK)
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('N', Items.NETHER_STAR)
|
||||||
|
.define('C', AAEBlocks.QUANTUM_STORAGE_256M)
|
||||||
|
.defineNbt('B', BasicCoreItem.quantumStage(3))
|
||||||
|
.unlockedBy("has_quantum_stage_3", has(BasicCoreItem.quantumStage(3).getItem()))
|
||||||
|
.requiresMod(ModCheckUtils.MODID_AAE)
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/" + ModItems.QUANTUM_STORAGE_CORE.get().toString().toLowerCase()));
|
||||||
|
|
||||||
|
// infinity_core
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.INFINITY_CORE.get())
|
||||||
|
.pattern("MNM")
|
||||||
|
.pattern("SOS")
|
||||||
|
.pattern("MCM")
|
||||||
|
.define('M', Items.NETHERITE_BLOCK)
|
||||||
|
.define('N', Items.NETHER_STAR)
|
||||||
|
.define('S', ModItems.STORAGE_CORE.get())
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('C', ModItems.SPATIAL_CORE.get())
|
||||||
|
.unlockedBy("has_basic_core", has(ModItems.BASIC_CORE.get()))
|
||||||
|
.notRequiresMod(ModCheckUtils.MODID_APPFLUX)
|
||||||
|
.notRequiresMod(ModCheckUtils.MODID_AAE)
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/" + ModItems.INFINITY_CORE.get().toString().toLowerCase()));
|
||||||
|
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.INFINITY_CORE.get())
|
||||||
|
.pattern("MNM")
|
||||||
|
.pattern("SOE")
|
||||||
|
.pattern("MCM")
|
||||||
|
.define('M', Items.NETHERITE_BLOCK)
|
||||||
|
.define('N', Items.NETHER_STAR)
|
||||||
|
.define('S', ModItems.STORAGE_CORE.get())
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('E', ModItems.ENERGY_STORAGE_CORE.get())
|
||||||
|
.define('C', ModItems.SPATIAL_CORE.get())
|
||||||
|
.unlockedBy("has_basic_core", has(ModItems.BASIC_CORE.get()))
|
||||||
|
.requiresMod(ModCheckUtils.MODID_APPFLUX)
|
||||||
|
.notRequiresMod(ModCheckUtils.MODID_AAE)
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/compat/" + ModItems.INFINITY_CORE.get().toString().toLowerCase() + "_1"));
|
||||||
|
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.INFINITY_CORE.get())
|
||||||
|
.pattern("MNM")
|
||||||
|
.pattern("SOQ")
|
||||||
|
.pattern("MCM")
|
||||||
|
.define('M', Items.NETHERITE_BLOCK)
|
||||||
|
.define('N', Items.NETHER_STAR)
|
||||||
|
.define('S', ModItems.STORAGE_CORE.get())
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('Q', ModItems.QUANTUM_STORAGE_CORE.get())
|
||||||
|
.define('C', ModItems.SPATIAL_CORE.get())
|
||||||
|
.unlockedBy("has_basic_core", has(ModItems.BASIC_CORE.get()))
|
||||||
|
.requiresMod(ModCheckUtils.MODID_AAE)
|
||||||
|
.notRequiresMod(ModCheckUtils.MODID_APPFLUX)
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/compat/" + ModItems.INFINITY_CORE.get().toString().toLowerCase() + "_2"));
|
||||||
|
|
||||||
|
NBTShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.INFINITY_CORE.get())
|
||||||
|
.pattern("MQM")
|
||||||
|
.pattern("SOE")
|
||||||
|
.pattern("MCM")
|
||||||
|
.define('M', Items.NETHERITE_BLOCK)
|
||||||
|
.define('Q', ModItems.QUANTUM_STORAGE_CORE.get())
|
||||||
|
.define('S', ModItems.STORAGE_CORE.get())
|
||||||
|
.define('O', ModItems.OBLIVION_SINGULARITY.get())
|
||||||
|
.define('E', ModItems.ENERGY_STORAGE_CORE.get())
|
||||||
|
.define('C', ModItems.SPATIAL_CORE.get())
|
||||||
|
.unlockedBy("has_basic_core", has(ModItems.BASIC_CORE.get()))
|
||||||
|
.requiresMod(ModCheckUtils.MODID_AAE)
|
||||||
|
.requiresMod(ModCheckUtils.MODID_APPFLUX)
|
||||||
|
.save(consumer, ExtendedAEPlus.id("core/compat/" + ModItems.INFINITY_CORE.get().toString().toLowerCase() + "_3"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addTransformRecipes(Consumer<FinishedRecipe> consumer) {
|
||||||
|
TransformRecipeBuilder.transform(consumer,
|
||||||
|
ExtendedAEPlus.id("transform/" + ModItems.OBLIVION_SINGULARITY.get().toString().toLowerCase()),
|
||||||
|
ModItems.OBLIVION_SINGULARITY.get(), 1,
|
||||||
|
TransformCircumstance.EXPLOSION,
|
||||||
|
AEItems.SINGULARITY, Items.NETHER_STAR, Items.NETHERITE_BLOCK
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addReactionChamberRecipes(Consumer<FinishedRecipe> consumer) {
|
||||||
|
ReactionChamberRecipeBuilder.react(ModItems.OBLIVION_SINGULARITY.get(), 1, 100000)
|
||||||
|
.input(AEItems.SINGULARITY, 2)
|
||||||
|
.input(Items.NETHER_STAR, 1)
|
||||||
|
.input(AAEItems.QUANTUM_ALLOY_PLATE, 4)
|
||||||
|
.fluid(AAEFluids.QUANTUM_INFUSION.source(), 2000)
|
||||||
|
.save(consumer, ModItems.OBLIVION_SINGULARITY.get().toString().toLowerCase());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.extendedae_plus.datagen;
|
||||||
|
|
||||||
|
import com.extendedae_plus.ExtendedAEPlus;
|
||||||
|
import net.minecraft.data.DataGenerator;
|
||||||
|
import net.minecraftforge.common.data.ExistingFileHelper;
|
||||||
|
import net.minecraftforge.data.event.GatherDataEvent;
|
||||||
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
|
||||||
|
@Mod.EventBusSubscriber(modid = ExtendedAEPlus.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
|
||||||
|
public class DataGenerators {
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void onGatherData(GatherDataEvent event) {
|
||||||
|
DataGenerator generator = event.getGenerator();
|
||||||
|
ExistingFileHelper helper = event.getExistingFileHelper();
|
||||||
|
|
||||||
|
// 仅添加配方生成器
|
||||||
|
generator.addProvider(true, new CraftingRecipes(generator.getPackOutput()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,295 @@
|
||||||
|
package com.extendedae_plus.datagen;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import com.google.common.collect.Sets;
|
||||||
|
import com.google.gson.JsonArray;
|
||||||
|
import com.google.gson.JsonElement;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.google.gson.JsonPrimitive;
|
||||||
|
import net.minecraft.advancements.Advancement;
|
||||||
|
import net.minecraft.advancements.AdvancementRewards;
|
||||||
|
import net.minecraft.advancements.CriterionTriggerInstance;
|
||||||
|
import net.minecraft.advancements.RequirementsStrategy;
|
||||||
|
import net.minecraft.advancements.critereon.RecipeUnlockedTrigger;
|
||||||
|
import net.minecraft.data.recipes.CraftingRecipeBuilder;
|
||||||
|
import net.minecraft.data.recipes.FinishedRecipe;
|
||||||
|
import net.minecraft.data.recipes.RecipeBuilder;
|
||||||
|
import net.minecraft.data.recipes.RecipeCategory;
|
||||||
|
import net.minecraft.nbt.*;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.tags.TagKey;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.crafting.CraftingBookCategory;
|
||||||
|
import net.minecraft.world.item.crafting.RecipeSerializer;
|
||||||
|
import net.minecraft.world.level.ItemLike;
|
||||||
|
import net.minecraftforge.common.crafting.ConditionalRecipe;
|
||||||
|
import net.minecraftforge.common.crafting.conditions.ICondition;
|
||||||
|
import net.minecraftforge.common.crafting.conditions.ModLoadedCondition;
|
||||||
|
import net.minecraftforge.common.crafting.conditions.NotCondition;
|
||||||
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
public class NBTShapedRecipeBuilder extends CraftingRecipeBuilder implements RecipeBuilder {
|
||||||
|
|
||||||
|
private final RecipeCategory category;
|
||||||
|
private final ItemStack result;
|
||||||
|
private final List<String> rows = Lists.newArrayList();
|
||||||
|
private final Map<Character, JsonObject> key = Maps.newLinkedHashMap();
|
||||||
|
private final Advancement.Builder advancement = Advancement.Builder.recipeAdvancement();
|
||||||
|
private final List<ICondition> conditions = new ArrayList<>();
|
||||||
|
|
||||||
|
@Nullable private String group;
|
||||||
|
private boolean showNotification = true;
|
||||||
|
|
||||||
|
private NBTShapedRecipeBuilder(RecipeCategory category, ItemStack result) {
|
||||||
|
this.category = category;
|
||||||
|
this.result = result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static NBTShapedRecipeBuilder shaped(RecipeCategory category, ItemStack result) {
|
||||||
|
return new NBTShapedRecipeBuilder(category, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static NBTShapedRecipeBuilder shaped(RecipeCategory category, ItemLike result) {
|
||||||
|
return shaped(category, new ItemStack(result));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static NBTShapedRecipeBuilder shaped(RecipeCategory category, ItemLike result, int count) {
|
||||||
|
return shaped(category, new ItemStack(result, count));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 普通物品 */
|
||||||
|
public NBTShapedRecipeBuilder define(Character symbol, ItemLike item) {
|
||||||
|
JsonObject json = new JsonObject();
|
||||||
|
json.addProperty("item", Objects.requireNonNull(ForgeRegistries.ITEMS.getKey(item.asItem())).toString());
|
||||||
|
this.key.put(symbol, json);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NBTShapedRecipeBuilder define(Character symbol, TagKey<Item> tag) {
|
||||||
|
JsonObject json = new JsonObject();
|
||||||
|
json.addProperty("tag", tag.location().toString());
|
||||||
|
this.key.put(symbol, json);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** forge:nbt 输入(无 count,结构化 NBT) */
|
||||||
|
public NBTShapedRecipeBuilder defineNbt(Character symbol, ItemStack stackWithNbt) {
|
||||||
|
JsonObject json = new JsonObject();
|
||||||
|
json.addProperty("type", "forge:nbt");
|
||||||
|
json.addProperty("item", Objects.requireNonNull(ForgeRegistries.ITEMS.getKey(stackWithNbt.getItem())).toString());
|
||||||
|
if (stackWithNbt.hasTag() && stackWithNbt.getTag() != null) {
|
||||||
|
json.add("nbt", nbtToJson(stackWithNbt.getTag()));
|
||||||
|
}
|
||||||
|
this.key.put(symbol, json);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NBTShapedRecipeBuilder pattern(String pattern) {
|
||||||
|
if (!this.rows.isEmpty() && pattern.length() != this.rows.get(0).length()) {
|
||||||
|
throw new IllegalArgumentException("Pattern must be the same width");
|
||||||
|
}
|
||||||
|
this.rows.add(pattern);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public @NotNull NBTShapedRecipeBuilder unlockedBy(@NotNull String name, @NotNull CriterionTriggerInstance criterion) {
|
||||||
|
this.advancement.addCriterion(name, criterion);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public @NotNull NBTShapedRecipeBuilder group(@Nullable String group) {
|
||||||
|
this.group = group;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NBTShapedRecipeBuilder showNotification(boolean show) {
|
||||||
|
this.showNotification = show;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 添加 Forge 条件 */
|
||||||
|
public NBTShapedRecipeBuilder condition(ICondition condition) {
|
||||||
|
this.conditions.add(Objects.requireNonNull(condition));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 便捷:mod loaded 条件 */
|
||||||
|
public NBTShapedRecipeBuilder requiresMod(String modid) {
|
||||||
|
return condition(new ModLoadedCondition(modid));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** NOT 条件:mod 未加载时生效 */
|
||||||
|
public NBTShapedRecipeBuilder notRequiresMod(String modid) {
|
||||||
|
return condition(new NotCondition(new ModLoadedCondition(modid)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Item getResult() {
|
||||||
|
return this.result.getItem();
|
||||||
|
}
|
||||||
|
|
||||||
|
// === save 方法重载 ===
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void save(@NotNull Consumer<FinishedRecipe> consumer, @NotNull String id) {
|
||||||
|
this.save(consumer, new ResourceLocation(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void save(@NotNull Consumer<FinishedRecipe> consumer, @NotNull ResourceLocation id) {
|
||||||
|
this.ensureValid(id);
|
||||||
|
|
||||||
|
// 构建 advancement
|
||||||
|
Advancement.Builder advancementBuilder = this.advancement
|
||||||
|
.parent(ROOT_RECIPE_ADVANCEMENT)
|
||||||
|
.addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(id))
|
||||||
|
.rewards(AdvancementRewards.Builder.recipe(id))
|
||||||
|
.requirements(RequirementsStrategy.OR);
|
||||||
|
|
||||||
|
// 构建普通配方结果
|
||||||
|
FinishedRecipe plainRecipe = new NBTResult(
|
||||||
|
id, this.result, this.group == null ? "" : this.group,
|
||||||
|
determineBookCategory(this.category), this.rows, this.key,
|
||||||
|
advancementBuilder, id.withPrefix("recipes/" + this.category.getFolderName() + "/"),
|
||||||
|
this.showNotification
|
||||||
|
);
|
||||||
|
|
||||||
|
if (this.conditions.isEmpty()) {
|
||||||
|
// 无条件 → 直接保存
|
||||||
|
consumer.accept(plainRecipe);
|
||||||
|
} else {
|
||||||
|
// 有条件 → 使用 ConditionalRecipe 包装
|
||||||
|
ConditionalRecipe.Builder builder = ConditionalRecipe.builder();
|
||||||
|
for (ICondition cond : this.conditions) {
|
||||||
|
builder.addCondition(cond);
|
||||||
|
}
|
||||||
|
builder.addRecipe(c -> c.accept(plainRecipe));
|
||||||
|
builder.generateAdvancement();
|
||||||
|
builder.build(consumer, id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ensureValid(ResourceLocation id) {
|
||||||
|
if (this.rows.isEmpty()) throw new IllegalStateException("No pattern for " + id);
|
||||||
|
Set<Character> defined = Sets.newHashSet(this.key.keySet());
|
||||||
|
defined.remove(' ');
|
||||||
|
for (String row : this.rows) {
|
||||||
|
for (int i = 0; i < row.length(); i++) {
|
||||||
|
char c = row.charAt(i);
|
||||||
|
if (!this.key.containsKey(c) && c != ' ') throw new IllegalStateException("Undefined symbol '" + c + "'");
|
||||||
|
defined.remove(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!defined.isEmpty()) throw new IllegalStateException("Unused ingredients: " + defined);
|
||||||
|
if (this.rows.size() == 1 && this.rows.get(0).length() == 1) throw new IllegalStateException("Use shapeless for 1x1");
|
||||||
|
if (this.advancement.getCriteria().isEmpty()) throw new IllegalStateException("No unlock criterion for " + id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** NBT → JsonElement(结构化) */
|
||||||
|
private static JsonElement nbtToJson(CompoundTag tag) {
|
||||||
|
JsonObject obj = new JsonObject();
|
||||||
|
tag.getAllKeys().forEach(key -> {
|
||||||
|
Tag value = tag.get(key);
|
||||||
|
if (value instanceof CompoundTag c) {
|
||||||
|
obj.add(key, nbtToJson(c));
|
||||||
|
} else if (value instanceof ListTag list) {
|
||||||
|
JsonArray arr = new JsonArray();
|
||||||
|
for (Tag item : list) {
|
||||||
|
arr.add(nbtToJson(item));
|
||||||
|
}
|
||||||
|
obj.add(key, arr);
|
||||||
|
} else if (value instanceof StringTag s) {
|
||||||
|
obj.addProperty(key, s.getAsString());
|
||||||
|
} else if (value instanceof NumericTag n) {
|
||||||
|
if (value instanceof ByteTag) obj.addProperty(key, n.getAsByte());
|
||||||
|
else if (value instanceof ShortTag) obj.addProperty(key, n.getAsShort());
|
||||||
|
else if (value instanceof IntTag) obj.addProperty(key, n.getAsInt());
|
||||||
|
else if (value instanceof LongTag) obj.addProperty(key, n.getAsLong());
|
||||||
|
else if (value instanceof FloatTag) obj.addProperty(key, n.getAsFloat());
|
||||||
|
else if (value instanceof DoubleTag) obj.addProperty(key, n.getAsDouble());
|
||||||
|
} else {
|
||||||
|
if (value != null) {
|
||||||
|
obj.addProperty(key, value.getAsString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static JsonElement nbtToJson(Tag tag) {
|
||||||
|
if (tag instanceof CompoundTag c) return nbtToJson(c);
|
||||||
|
if (tag instanceof StringTag s) return new JsonPrimitive(s.getAsString());
|
||||||
|
if (tag instanceof NumericTag n) {
|
||||||
|
if (tag instanceof ByteTag) return new JsonPrimitive(n.getAsByte());
|
||||||
|
if (tag instanceof ShortTag) return new JsonPrimitive(n.getAsShort());
|
||||||
|
if (tag instanceof IntTag) return new JsonPrimitive(n.getAsInt());
|
||||||
|
if (tag instanceof LongTag) return new JsonPrimitive(n.getAsLong());
|
||||||
|
if (tag instanceof FloatTag) return new JsonPrimitive(n.getAsFloat());
|
||||||
|
if (tag instanceof DoubleTag) return new JsonPrimitive(n.getAsDouble());
|
||||||
|
}
|
||||||
|
return new JsonPrimitive(tag.getAsString());
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 完美 Result */
|
||||||
|
public static class NBTResult extends CraftingRecipeBuilder.CraftingResult {
|
||||||
|
private final ResourceLocation id;
|
||||||
|
private final ItemStack result;
|
||||||
|
private final String group;
|
||||||
|
private final List<String> pattern;
|
||||||
|
private final Map<Character, JsonObject> key;
|
||||||
|
private final Advancement.Builder advancement;
|
||||||
|
private final ResourceLocation advancementId;
|
||||||
|
private final boolean showNotification;
|
||||||
|
|
||||||
|
public NBTResult(ResourceLocation id, ItemStack result, String group,
|
||||||
|
CraftingBookCategory category, List<String> pattern,
|
||||||
|
Map<Character, JsonObject> key, Advancement.Builder advancement,
|
||||||
|
ResourceLocation advancementId, boolean showNotification) {
|
||||||
|
super(category);
|
||||||
|
this.id = id;
|
||||||
|
this.result = result;
|
||||||
|
this.group = group;
|
||||||
|
this.pattern = pattern;
|
||||||
|
this.key = key;
|
||||||
|
this.advancement = advancement;
|
||||||
|
this.advancementId = advancementId;
|
||||||
|
this.showNotification = showNotification;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void serializeRecipeData(@NotNull JsonObject json) {
|
||||||
|
if (!this.group.isEmpty()) json.addProperty("group", this.group);
|
||||||
|
|
||||||
|
JsonArray patternArray = new JsonArray();
|
||||||
|
this.pattern.forEach(patternArray::add);
|
||||||
|
json.add("pattern", patternArray);
|
||||||
|
|
||||||
|
JsonObject keyObj = new JsonObject();
|
||||||
|
this.key.forEach((c, jsonObj) -> keyObj.add(String.valueOf(c), jsonObj));
|
||||||
|
json.add("key", keyObj);
|
||||||
|
|
||||||
|
JsonObject resultObj = new JsonObject();
|
||||||
|
resultObj.addProperty("type", "forge:partial_nbt");
|
||||||
|
resultObj.addProperty("item", Objects.requireNonNull(ForgeRegistries.ITEMS.getKey(this.result.getItem())).toString());
|
||||||
|
if (this.result.getCount() > 1) resultObj.addProperty("count", this.result.getCount());
|
||||||
|
if (this.result.hasTag() && this.result.getTag() != null) {
|
||||||
|
resultObj.add("nbt", nbtToJson(this.result.getTag()));
|
||||||
|
}
|
||||||
|
json.add("result", resultObj);
|
||||||
|
|
||||||
|
json.addProperty("show_notification", this.showNotification);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public @NotNull RecipeSerializer<?> getType() { return RecipeSerializer.SHAPED_RECIPE; }
|
||||||
|
@Override public @NotNull ResourceLocation getId() { return this.id; }
|
||||||
|
@Nullable @Override public JsonObject serializeAdvancement() { return this.advancement.serializeToJson(); }
|
||||||
|
@Nullable @Override public ResourceLocation getAdvancementId() { return this.advancementId; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.extendedae_plus.ae.client.gui;
|
package com.extendedae_plus.gui;
|
||||||
|
|
||||||
import appeng.client.gui.style.Blitter;
|
import appeng.client.gui.style.Blitter;
|
||||||
import com.extendedae_plus.ExtendedAEPlus;
|
import com.extendedae_plus.ExtendedAEPlus;
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
package com.extendedae_plus.init;
|
package com.extendedae_plus.init;
|
||||||
|
|
||||||
import com.extendedae_plus.ExtendedAEPlus;
|
|
||||||
import com.extendedae_plus.content.wireless.WirelessTransceiverBlock;
|
|
||||||
import com.extendedae_plus.content.matrix.UploadCoreBlock;
|
|
||||||
import com.extendedae_plus.content.crafting.EPlusCraftingUnitType;
|
|
||||||
import appeng.block.crafting.CraftingUnitBlock;
|
import appeng.block.crafting.CraftingUnitBlock;
|
||||||
import appeng.blockentity.crafting.CraftingBlockEntity;
|
import appeng.blockentity.crafting.CraftingBlockEntity;
|
||||||
import appeng.core.definitions.AEBlockEntities;
|
import appeng.core.definitions.AEBlockEntities;
|
||||||
|
import com.extendedae_plus.ExtendedAEPlus;
|
||||||
|
import com.extendedae_plus.content.crafting.EPlusCraftingUnitType;
|
||||||
|
import com.extendedae_plus.content.matrix.UploadCoreBlock;
|
||||||
|
import com.extendedae_plus.content.wireless.WirelessTransceiverBlock;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.state.BlockBehaviour;
|
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||||
import net.minecraft.world.level.material.MapColor;
|
import net.minecraft.world.level.material.MapColor;
|
||||||
|
|
@ -24,7 +24,7 @@ public final class ModBlocks {
|
||||||
() -> new WirelessTransceiverBlock(
|
() -> new WirelessTransceiverBlock(
|
||||||
BlockBehaviour.Properties.of()
|
BlockBehaviour.Properties.of()
|
||||||
.mapColor(MapColor.METAL)
|
.mapColor(MapColor.METAL)
|
||||||
.strength(1.5F, 6.0F)
|
.strength(2F, 6.0F)
|
||||||
.requiresCorrectToolForDrops()
|
.requiresCorrectToolForDrops()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
@ -51,7 +51,7 @@ public final class ModBlocks {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Crafting Accelerators (reuse MAE2 textures/models)
|
// Crafting Accelerators (reuse MAE2 textures/models)
|
||||||
public static final RegistryObject<CraftingUnitBlock> ACCELERATOR_4x = BLOCKS.register(
|
public static final RegistryObject<CraftingUnitBlock> CRAFTING_ACCELERATOR_4x = BLOCKS.register(
|
||||||
"4x_crafting_accelerator",
|
"4x_crafting_accelerator",
|
||||||
() -> {
|
() -> {
|
||||||
var b = new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_4x);
|
var b = new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_4x);
|
||||||
|
|
@ -60,7 +60,7 @@ public final class ModBlocks {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final RegistryObject<CraftingUnitBlock> ACCELERATOR_16x = BLOCKS.register(
|
public static final RegistryObject<CraftingUnitBlock> CRAFTING_ACCELERATOR_16x = BLOCKS.register(
|
||||||
"16x_crafting_accelerator",
|
"16x_crafting_accelerator",
|
||||||
() -> {
|
() -> {
|
||||||
var b = new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_16x);
|
var b = new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_16x);
|
||||||
|
|
@ -69,7 +69,7 @@ public final class ModBlocks {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final RegistryObject<CraftingUnitBlock> ACCELERATOR_64x = BLOCKS.register(
|
public static final RegistryObject<CraftingUnitBlock> CRAFTING_ACCELERATOR_64x = BLOCKS.register(
|
||||||
"64x_crafting_accelerator",
|
"64x_crafting_accelerator",
|
||||||
() -> {
|
() -> {
|
||||||
var b = new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_64x);
|
var b = new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_64x);
|
||||||
|
|
@ -78,7 +78,7 @@ public final class ModBlocks {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final RegistryObject<CraftingUnitBlock> ACCELERATOR_256x = BLOCKS.register(
|
public static final RegistryObject<CraftingUnitBlock> CRAFTING_ACCELERATOR_256x = BLOCKS.register(
|
||||||
"256x_crafting_accelerator",
|
"256x_crafting_accelerator",
|
||||||
() -> {
|
() -> {
|
||||||
var b = new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_256x);
|
var b = new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_256x);
|
||||||
|
|
@ -87,7 +87,7 @@ public final class ModBlocks {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final RegistryObject<CraftingUnitBlock> ACCELERATOR_1024x = BLOCKS.register(
|
public static final RegistryObject<CraftingUnitBlock> CRAFTING_ACCELERATOR_1024x = BLOCKS.register(
|
||||||
"1024x_crafting_accelerator",
|
"1024x_crafting_accelerator",
|
||||||
() -> {
|
() -> {
|
||||||
var b = new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_1024x);
|
var b = new CraftingUnitBlock(EPlusCraftingUnitType.ACCELERATOR_1024x);
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,8 @@ import net.minecraftforge.registries.DeferredRegister;
|
||||||
import net.minecraftforge.registries.RegistryObject;
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
|
|
||||||
public final class ModCreativeTabs {
|
public final class ModCreativeTabs {
|
||||||
private ModCreativeTabs() {}
|
|
||||||
|
|
||||||
public static final DeferredRegister<CreativeModeTab> TABS =
|
public static final DeferredRegister<CreativeModeTab> TABS =
|
||||||
DeferredRegister.create(Registries.CREATIVE_MODE_TAB, ExtendedAEPlus.MODID);
|
DeferredRegister.create(Registries.CREATIVE_MODE_TAB, ExtendedAEPlus.MODID);
|
||||||
|
|
||||||
public static final RegistryObject<CreativeModeTab> MAIN = TABS.register("main",
|
public static final RegistryObject<CreativeModeTab> MAIN = TABS.register("main",
|
||||||
() -> CreativeModeTab.builder()
|
() -> CreativeModeTab.builder()
|
||||||
.title(Component.translatable("itemGroup." + ExtendedAEPlus.MODID + ".main"))
|
.title(Component.translatable("itemGroup." + ExtendedAEPlus.MODID + ".main"))
|
||||||
|
|
@ -23,11 +20,11 @@ public final class ModCreativeTabs {
|
||||||
output.accept(ModItems.NETWORK_PATTERN_CONTROLLER.get());
|
output.accept(ModItems.NETWORK_PATTERN_CONTROLLER.get());
|
||||||
// 装配矩阵上传核心
|
// 装配矩阵上传核心
|
||||||
output.accept(ModItems.ASSEMBLER_MATRIX_UPLOAD_CORE.get());
|
output.accept(ModItems.ASSEMBLER_MATRIX_UPLOAD_CORE.get());
|
||||||
output.accept(ModItems.ACCELERATOR_4x.get());
|
output.accept(ModItems.CRAFTING_ACCELERATOR_4x.get());
|
||||||
output.accept(ModItems.ACCELERATOR_16x.get());
|
output.accept(ModItems.CRAFTING_ACCELERATOR_16x.get());
|
||||||
output.accept(ModItems.ACCELERATOR_64x.get());
|
output.accept(ModItems.CRAFTING_ACCELERATOR_64x.get());
|
||||||
output.accept(ModItems.ACCELERATOR_256x.get());
|
output.accept(ModItems.CRAFTING_ACCELERATOR_256x.get());
|
||||||
output.accept(ModItems.ACCELERATOR_1024x.get());
|
output.accept(ModItems.CRAFTING_ACCELERATOR_1024x.get());
|
||||||
output.accept(ModItems.ENTITY_TICKER_PART_ITEM.get());
|
output.accept(ModItems.ENTITY_TICKER_PART_ITEM.get());
|
||||||
|
|
||||||
// 放入四个预设的 stacks(x2,x4,x8,x16),使用 ModItems 工厂创建
|
// 放入四个预设的 stacks(x2,x4,x8,x16),使用 ModItems 工厂创建
|
||||||
|
|
@ -35,11 +32,22 @@ public final class ModCreativeTabs {
|
||||||
output.accept(ModItems.createEntitySpeedCardStack(4));
|
output.accept(ModItems.createEntitySpeedCardStack(4));
|
||||||
output.accept(ModItems.createEntitySpeedCardStack(8));
|
output.accept(ModItems.createEntitySpeedCardStack(8));
|
||||||
output.accept(ModItems.createEntitySpeedCardStack(16));
|
output.accept(ModItems.createEntitySpeedCardStack(16));
|
||||||
|
|
||||||
output.accept(ModItems.INFINITY_BIGINTEGER_CELL_ITEM.get());
|
|
||||||
|
|
||||||
// 频道卡
|
// 频道卡
|
||||||
output.accept(ModItems.CHANNEL_CARD.get());
|
output.accept(ModItems.CHANNEL_CARD.get());
|
||||||
|
|
||||||
|
output.accept(ModItems.OBLIVION_SINGULARITY.get());
|
||||||
|
output.accept(ModItems.BASIC_CORE.get());
|
||||||
|
output.accept(ModItems.STORAGE_CORE.get());
|
||||||
|
if (ModItems.ENERGY_STORAGE_CORE != null) {
|
||||||
|
output.accept(ModItems.ENERGY_STORAGE_CORE.get());
|
||||||
|
}
|
||||||
|
if (ModItems.QUANTUM_STORAGE_CORE != null) {
|
||||||
|
output.accept(ModItems.QUANTUM_STORAGE_CORE.get());
|
||||||
|
}
|
||||||
|
output.accept(ModItems.SPATIAL_CORE.get());
|
||||||
|
output.accept(ModItems.INFINITY_CORE.get());
|
||||||
|
|
||||||
|
output.accept(ModItems.INFINITY_BIGINTEGER_CELL.get());
|
||||||
})
|
})
|
||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,19 +4,20 @@ import appeng.api.parts.IPart;
|
||||||
import appeng.api.parts.PartModels;
|
import appeng.api.parts.PartModels;
|
||||||
import appeng.items.parts.PartModelsHelper;
|
import appeng.items.parts.PartModelsHelper;
|
||||||
import com.extendedae_plus.ExtendedAEPlus;
|
import com.extendedae_plus.ExtendedAEPlus;
|
||||||
import com.extendedae_plus.ae.definitions.upgrades.EntitySpeedCardItem;
|
import com.extendedae_plus.items.BasicCoreItem;
|
||||||
import com.extendedae_plus.ae.items.ChannelCardItem;
|
import com.extendedae_plus.items.EntitySpeedTickerPartItem;
|
||||||
import com.extendedae_plus.ae.items.EntitySpeedTickerPartItem;
|
import com.extendedae_plus.items.InfinityBigIntegerCellItem;
|
||||||
import com.extendedae_plus.ae.items.InfinityBigIntegerCellItem;
|
import com.extendedae_plus.items.materials.ChannelCardItem;
|
||||||
|
import com.extendedae_plus.items.materials.EntitySpeedCardItem;
|
||||||
|
import com.extendedae_plus.util.ModCheckUtils;
|
||||||
import net.minecraft.world.item.BlockItem;
|
import net.minecraft.world.item.BlockItem;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraftforge.registries.DeferredRegister;
|
import net.minecraftforge.registries.DeferredRegister;
|
||||||
import net.minecraftforge.registries.ForgeRegistries;
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
import net.minecraftforge.registries.RegistryObject;
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
|
|
||||||
public final class ModItems {
|
public final class ModItems {
|
||||||
private ModItems() {}
|
|
||||||
|
|
||||||
public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, ExtendedAEPlus.MODID);
|
public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, ExtendedAEPlus.MODID);
|
||||||
|
|
||||||
public static final RegistryObject<Item> WIRELESS_TRANSCEIVER = ITEMS.register(
|
public static final RegistryObject<Item> WIRELESS_TRANSCEIVER = ITEMS.register(
|
||||||
|
|
@ -36,34 +37,34 @@ public final class ModItems {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Crafting Accelerators
|
// Crafting Accelerators
|
||||||
public static final RegistryObject<Item> ACCELERATOR_4x = ITEMS.register(
|
public static final RegistryObject<Item> CRAFTING_ACCELERATOR_4x = ITEMS.register(
|
||||||
"4x_crafting_accelerator",
|
"4x_crafting_accelerator",
|
||||||
() -> new BlockItem(ModBlocks.ACCELERATOR_4x.get(), new Item.Properties())
|
() -> new BlockItem(ModBlocks.CRAFTING_ACCELERATOR_4x.get(), new Item.Properties())
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final RegistryObject<Item> ACCELERATOR_16x = ITEMS.register(
|
public static final RegistryObject<Item> CRAFTING_ACCELERATOR_16x = ITEMS.register(
|
||||||
"16x_crafting_accelerator",
|
"16x_crafting_accelerator",
|
||||||
() -> new BlockItem(ModBlocks.ACCELERATOR_16x.get(), new Item.Properties())
|
() -> new BlockItem(ModBlocks.CRAFTING_ACCELERATOR_16x.get(), new Item.Properties())
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final RegistryObject<Item> ACCELERATOR_64x = ITEMS.register(
|
public static final RegistryObject<Item> CRAFTING_ACCELERATOR_64x = ITEMS.register(
|
||||||
"64x_crafting_accelerator",
|
"64x_crafting_accelerator",
|
||||||
() -> new BlockItem(ModBlocks.ACCELERATOR_64x.get(), new Item.Properties())
|
() -> new BlockItem(ModBlocks.CRAFTING_ACCELERATOR_64x.get(), new Item.Properties())
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final RegistryObject<Item> ACCELERATOR_256x = ITEMS.register(
|
public static final RegistryObject<Item> CRAFTING_ACCELERATOR_256x = ITEMS.register(
|
||||||
"256x_crafting_accelerator",
|
"256x_crafting_accelerator",
|
||||||
() -> new BlockItem(ModBlocks.ACCELERATOR_256x.get(), new Item.Properties())
|
() -> new BlockItem(ModBlocks.CRAFTING_ACCELERATOR_256x.get(), new Item.Properties())
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final RegistryObject<Item> ACCELERATOR_1024x = ITEMS.register(
|
public static final RegistryObject<Item> CRAFTING_ACCELERATOR_1024x = ITEMS.register(
|
||||||
"1024x_crafting_accelerator",
|
"1024x_crafting_accelerator",
|
||||||
() -> new BlockItem(ModBlocks.ACCELERATOR_1024x.get(), new Item.Properties())
|
() -> new BlockItem(ModBlocks.CRAFTING_ACCELERATOR_1024x.get(), new Item.Properties())
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final RegistryObject<EntitySpeedTickerPartItem> ENTITY_TICKER_PART_ITEM = ITEMS.register(
|
public static final RegistryObject<EntitySpeedTickerPartItem> ENTITY_TICKER_PART_ITEM = ITEMS.register(
|
||||||
"entity_speed_ticker",
|
"entity_speed_ticker",
|
||||||
() -> new EntitySpeedTickerPartItem(new Item.Properties())
|
() -> new EntitySpeedTickerPartItem(new Item.Properties())
|
||||||
);
|
);
|
||||||
|
|
||||||
// AE Upgrade Cards: 实体加速卡(四个等级:x2,x4,x8,x16)
|
// AE Upgrade Cards: 实体加速卡(四个等级:x2,x4,x8,x16)
|
||||||
|
|
@ -73,8 +74,8 @@ public final class ModItems {
|
||||||
() -> new EntitySpeedCardItem(new Item.Properties())
|
() -> new EntitySpeedCardItem(new Item.Properties())
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final RegistryObject<Item> INFINITY_BIGINTEGER_CELL_ITEM = ITEMS.register(
|
public static final RegistryObject<InfinityBigIntegerCellItem> INFINITY_BIGINTEGER_CELL = ITEMS.register(
|
||||||
"infinity_biginteger_cell", InfinityBigIntegerCellItem::new
|
"infinity_biginteger_cell", () -> new InfinityBigIntegerCellItem(new Item.Properties())
|
||||||
);
|
);
|
||||||
|
|
||||||
// 频道卡(作为 AE 升级卡使用)
|
// 频道卡(作为 AE 升级卡使用)
|
||||||
|
|
@ -83,6 +84,50 @@ public final class ModItems {
|
||||||
() -> new ChannelCardItem(new Item.Properties())
|
() -> new ChannelCardItem(new Item.Properties())
|
||||||
);
|
);
|
||||||
|
|
||||||
|
public static final RegistryObject<BasicCoreItem> BASIC_CORE = ITEMS.register(
|
||||||
|
"basic_core",
|
||||||
|
() -> new BasicCoreItem(new Item.Properties())
|
||||||
|
);
|
||||||
|
public static final RegistryObject<Item> STORAGE_CORE = ITEMS.register(
|
||||||
|
"storage_core",
|
||||||
|
() -> new Item(new Item.Properties())
|
||||||
|
);
|
||||||
|
public static final RegistryObject<Item> SPATIAL_CORE = ITEMS.register(
|
||||||
|
"spatial_core",
|
||||||
|
() -> new Item(new Item.Properties())
|
||||||
|
);
|
||||||
|
public static final RegistryObject<Item> INFINITY_CORE = ITEMS.register(
|
||||||
|
"infinity_core",
|
||||||
|
() -> new Item(new Item.Properties())
|
||||||
|
);
|
||||||
|
public static final RegistryObject<Item> OBLIVION_SINGULARITY = ITEMS.register(
|
||||||
|
"oblivion_singularity",
|
||||||
|
() -> new Item(new Item.Properties())
|
||||||
|
);
|
||||||
|
public static final RegistryObject<Item> ENERGY_STORAGE_CORE;
|
||||||
|
public static final RegistryObject<Item> QUANTUM_STORAGE_CORE;
|
||||||
|
|
||||||
|
static {
|
||||||
|
if (ModCheckUtils.isAppfluxLoading()) {
|
||||||
|
ENERGY_STORAGE_CORE = ITEMS.register(
|
||||||
|
"energy_storage_core",
|
||||||
|
() -> new Item(new Item.Properties())
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
ENERGY_STORAGE_CORE = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ModCheckUtils.isAAELoading()) {
|
||||||
|
QUANTUM_STORAGE_CORE = ITEMS.register(
|
||||||
|
"quantum_storage_core",
|
||||||
|
() -> new Item(new Item.Properties())
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
QUANTUM_STORAGE_CORE = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ModItems() {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 为 PartItem 注册 AE2 部件模型。
|
* 为 PartItem 注册 AE2 部件模型。
|
||||||
|
|
@ -99,7 +144,7 @@ public final class ModItems {
|
||||||
/**
|
/**
|
||||||
* 工厂:创建带 multiplier 的实体加速卡 ItemStack(2/4/8/16)
|
* 工厂:创建带 multiplier 的实体加速卡 ItemStack(2/4/8/16)
|
||||||
*/
|
*/
|
||||||
public static net.minecraft.world.item.ItemStack createEntitySpeedCardStack(int multiplier) {
|
public static ItemStack createEntitySpeedCardStack(int multiplier) {
|
||||||
return EntitySpeedCardItem.withMultiplier(multiplier);
|
return EntitySpeedCardItem.withMultiplier(multiplier);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,10 @@
|
||||||
package com.extendedae_plus.integration.jei;
|
package com.extendedae_plus.integration.jei;
|
||||||
|
|
||||||
import com.extendedae_plus.ExtendedAEPlus;
|
import com.extendedae_plus.ExtendedAEPlus;
|
||||||
import com.extendedae_plus.ae.definitions.upgrades.EntitySpeedCardItem;
|
import com.extendedae_plus.init.ModItems;
|
||||||
|
import com.extendedae_plus.items.BasicCoreItem;
|
||||||
|
import com.extendedae_plus.items.materials.EntitySpeedCardItem;
|
||||||
|
import com.extendedae_plus.util.ModCheckUtils;
|
||||||
import mezz.jei.api.IModPlugin;
|
import mezz.jei.api.IModPlugin;
|
||||||
import mezz.jei.api.JeiPlugin;
|
import mezz.jei.api.JeiPlugin;
|
||||||
import mezz.jei.api.registration.ISubtypeRegistration;
|
import mezz.jei.api.registration.ISubtypeRegistration;
|
||||||
|
|
@ -24,10 +27,43 @@ public class ExtendedAEJeiPlugin implements IModPlugin {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerItemSubtypes(ISubtypeRegistration registration) {
|
public void registerItemSubtypes(ISubtypeRegistration registration) {
|
||||||
// Register NBT-based subtype interpreter so JEI treats different multipliers as distinct items
|
// Entity Speed Card
|
||||||
registration.registerSubtypeInterpreter(
|
registration.registerSubtypeInterpreter(
|
||||||
com.extendedae_plus.init.ModItems.ENTITY_SPEED_CARD.get(),
|
ModItems.ENTITY_SPEED_CARD.get(),
|
||||||
(stack, context) -> String.valueOf(EntitySpeedCardItem.readMultiplier(stack))
|
(stack, ctx) -> String.valueOf(EntitySpeedCardItem.readMultiplier(stack))
|
||||||
|
);
|
||||||
|
|
||||||
|
// Basic Core – 使用 CustomModelData + core_stage
|
||||||
|
registration.registerSubtypeInterpreter(
|
||||||
|
ModItems.BASIC_CORE.get(),
|
||||||
|
(stack, ctx) -> {
|
||||||
|
if (!BasicCoreItem.isTyped(stack)) {
|
||||||
|
return "untyped";
|
||||||
|
}
|
||||||
|
|
||||||
|
BasicCoreItem.CoreType type = BasicCoreItem.getType(stack).orElse(null);
|
||||||
|
if (type == null) {
|
||||||
|
return "untyped";
|
||||||
|
}
|
||||||
|
|
||||||
|
int stage = BasicCoreItem.getStage(stack);
|
||||||
|
|
||||||
|
// 依赖检查
|
||||||
|
if (!isCoreTypeAvailable(type.id)) {
|
||||||
|
return "hidden"; // JEI 隐藏
|
||||||
|
}
|
||||||
|
|
||||||
|
return type.id + "_" + stage; // 如 "0_1", "1_4"
|
||||||
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
private boolean isCoreTypeAvailable(int typeId) {
|
||||||
|
return switch (typeId) {
|
||||||
|
case 1, 2 -> true; // storage, spatial
|
||||||
|
case 3 -> ModCheckUtils.isAppfluxLoading();
|
||||||
|
case 4 -> ModCheckUtils.isAAELoading();
|
||||||
|
default -> false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
176
src/main/java/com/extendedae_plus/items/BasicCoreItem.java
Normal file
176
src/main/java/com/extendedae_plus/items/BasicCoreItem.java
Normal file
|
|
@ -0,0 +1,176 @@
|
||||||
|
package com.extendedae_plus.items;
|
||||||
|
|
||||||
|
import com.extendedae_plus.ExtendedAEPlus;
|
||||||
|
import com.extendedae_plus.init.ModItems;
|
||||||
|
import net.minecraft.ChatFormatting;
|
||||||
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Rarity;
|
||||||
|
import net.minecraft.world.item.TooltipFlag;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class BasicCoreItem extends Item {
|
||||||
|
private static final String NBT_MODEL = "CustomModelData"; // 1~4 = 类型, 无或0 = 未定型
|
||||||
|
private static final String NBT_STAGE = "core_stage"; // 0~3 = 阶段
|
||||||
|
private static final int MAX_STAGE = 3;
|
||||||
|
|
||||||
|
public BasicCoreItem(Properties props) {
|
||||||
|
super(props.stacksTo(1).setNoRepair());
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==================== 工厂方法 ====================
|
||||||
|
public static ItemStack of(CoreType type, int stage) {
|
||||||
|
ItemStack stack = new ItemStack(ModItems.BASIC_CORE.get());
|
||||||
|
if (type != null && stage >= 0 && stage <= MAX_STAGE) {
|
||||||
|
CompoundTag tag = stack.getOrCreateTag();
|
||||||
|
tag.putInt(NBT_MODEL, type.id);
|
||||||
|
tag.putInt(NBT_STAGE, stage);
|
||||||
|
}
|
||||||
|
// 无 NBT → 默认模型
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ItemStack storageStage(int stage) { return of(CoreType.STORAGE, stage); }
|
||||||
|
public static ItemStack spatialStage(int stage) { return of(CoreType.SPATIAL, stage); }
|
||||||
|
public static ItemStack energyStage(int stage) { return of(CoreType.ENERGY, stage); }
|
||||||
|
public static ItemStack quantumStage(int stage) { return of(CoreType.QUANTUM, stage); }
|
||||||
|
|
||||||
|
// ==================== NBT 查询 ====================
|
||||||
|
public static Optional<CoreType> getType(ItemStack stack) {
|
||||||
|
if (!stack.hasTag() || !stack.getTag().contains(NBT_MODEL)) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
int cmd = stack.getTag().getInt(NBT_MODEL);
|
||||||
|
return CoreType.byId(cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getStage(ItemStack stack) {
|
||||||
|
if (!stack.hasTag()) return 0;
|
||||||
|
return Math.min(stack.getTag().getInt(NBT_STAGE), MAX_STAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isTyped(ItemStack stack) { return getType(stack).isPresent(); }
|
||||||
|
|
||||||
|
public static boolean isFinalStage(ItemStack stack) { return getStage(stack) >= MAX_STAGE; }
|
||||||
|
|
||||||
|
// ==================== 耐久条 ====================
|
||||||
|
@Override
|
||||||
|
public boolean isBarVisible(ItemStack stack) {
|
||||||
|
return isTyped(stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getBarWidth(@NotNull ItemStack stack) {
|
||||||
|
if (!isTyped(stack)) return 0;
|
||||||
|
return Math.round(13.0f * getStage(stack) / MAX_STAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getBarColor(@NotNull ItemStack stack) {
|
||||||
|
return getType(stack)
|
||||||
|
.map(type -> type.getTextColor().getColor())
|
||||||
|
.orElse(0xFFFFFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==================== Tooltip ====================
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
@Override
|
||||||
|
public void appendHoverText(ItemStack stack, @Nullable Level level, List<Component> tooltip, TooltipFlag flag) {
|
||||||
|
if (!isTyped(stack)) {
|
||||||
|
tooltip.add(Component.translatable("tooltip." + ExtendedAEPlus.MODID + ".basic_core.untyped")
|
||||||
|
.withStyle(ChatFormatting.GRAY));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
getType(stack).ifPresent(type -> {
|
||||||
|
String finalKey = "item." + ExtendedAEPlus.MODID + "." + type.key + "_core";
|
||||||
|
tooltip.add(Component.translatable("tooltip." + ExtendedAEPlus.MODID + ".basic_core.evolving_to",
|
||||||
|
Component.translatable(finalKey).withStyle(type.getTextColor()))
|
||||||
|
.withStyle(ChatFormatting.AQUA));
|
||||||
|
tooltip.add(Component.empty());
|
||||||
|
|
||||||
|
tooltip.add(Component.translatable("tooltip." + ExtendedAEPlus.MODID + ".basic_core.progress")
|
||||||
|
.withStyle(ChatFormatting.YELLOW));
|
||||||
|
|
||||||
|
int stage = getStage(stack);
|
||||||
|
for (int i = 1; i <= 3; i++) {
|
||||||
|
String key = "item." + ExtendedAEPlus.MODID + ".basic_core." + type.key + "." + i;
|
||||||
|
ChatFormatting color = i <= stage ? ChatFormatting.GREEN : ChatFormatting.DARK_GRAY;
|
||||||
|
String prefix = i <= stage ? "✔ " : "✘ ";
|
||||||
|
tooltip.add(Component.literal(prefix).withStyle(color).append(Component.translatable(key)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stage >= MAX_STAGE) {
|
||||||
|
tooltip.add(Component.empty());
|
||||||
|
tooltip.add(Component.translatable("tooltip." + ExtendedAEPlus.MODID + ".basic_core.ready_to_craft")
|
||||||
|
.withStyle(ChatFormatting.GOLD));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==================== 显示名称 ====================
|
||||||
|
@Override
|
||||||
|
public @NotNull Component getName(@NotNull ItemStack stack) {
|
||||||
|
if (!isTyped(stack)) {
|
||||||
|
return Component.translatable("item." + ExtendedAEPlus.MODID + ".basic_core");
|
||||||
|
}
|
||||||
|
return getType(stack).<Component>map(type -> {
|
||||||
|
String key = "item." + ExtendedAEPlus.MODID + ".basic_core." + type.key + "." + getStage(stack);
|
||||||
|
return Component.translatable(key).withStyle(type.getTextColor());
|
||||||
|
}).orElseGet(() -> Component.translatable("item." + ExtendedAEPlus.MODID + ".basic_core"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Rarity getRarity(@NotNull ItemStack stack) {
|
||||||
|
return isTyped(stack)
|
||||||
|
? getType(stack).map(t -> t.getRarity(getStage(stack))).orElse(Rarity.COMMON)
|
||||||
|
: Rarity.COMMON;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==================== 核心类型枚举 ====================
|
||||||
|
public enum CoreType {
|
||||||
|
STORAGE (1, "storage", ChatFormatting.AQUA),
|
||||||
|
SPATIAL (2, "spatial", ChatFormatting.YELLOW),
|
||||||
|
ENERGY (3, "energy_storage", ChatFormatting.RED),
|
||||||
|
QUANTUM (4, "quantum_storage",ChatFormatting.LIGHT_PURPLE);
|
||||||
|
|
||||||
|
public final int id;
|
||||||
|
public final String key;
|
||||||
|
public final ChatFormatting textColor;
|
||||||
|
|
||||||
|
CoreType(int id, String key, ChatFormatting textColor) {
|
||||||
|
this.id = id;
|
||||||
|
this.key = key;
|
||||||
|
this.textColor = textColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Optional<CoreType> byId(int id) {
|
||||||
|
return switch (id) {
|
||||||
|
case 1 -> Optional.of(STORAGE);
|
||||||
|
case 2 -> Optional.of(SPATIAL);
|
||||||
|
case 3 -> Optional.of(ENERGY);
|
||||||
|
case 4 -> Optional.of(QUANTUM);
|
||||||
|
default -> Optional.empty();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public ChatFormatting getTextColor() { return textColor; }
|
||||||
|
|
||||||
|
public Rarity getRarity(int stage) {
|
||||||
|
return switch (stage) {
|
||||||
|
case 1, 2 -> Rarity.UNCOMMON;
|
||||||
|
case 3 -> Rarity.EPIC;
|
||||||
|
default -> Rarity.COMMON;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user