吞噬盘相关合成材料配方及文本调整;配方类;去除Mixin plugin日志
This commit is contained in:
parent
15322767f0
commit
4001669c5c
|
|
@ -99,6 +99,8 @@ dependencies {
|
|||
modCompileOnly "curse.maven:advancedae-1084104:6939473"
|
||||
modRuntimeOnly "curse.maven:advancedae-1084104:6939473"
|
||||
|
||||
modCompileOnly "mezz.jei:jei-${minecraft_version}-forge:${jei_version}"
|
||||
modRuntimeOnly "mezz.jei:jei-${minecraft_version}-forge:15.20.0.112"
|
||||
modImplementation "mezz.jei:jei-${minecraft_version}-forge:${jei_version}"
|
||||
modImplementation "curse.maven:jade-324717:${jade_version}"
|
||||
|
||||
|
|
|
|||
|
|
@ -33,8 +33,7 @@ public class InfinityBigIntegerCellItem extends Item implements ICellWorkbenchIt
|
|||
@Nullable Level world,
|
||||
@NotNull List<Component> tooltip,
|
||||
@NotNull TooltipFlag context) {
|
||||
tooltip.add(Component.translatable("tooltip.extendedae_plus.infinity_biginteger_cell.summon1"));
|
||||
tooltip.add(Component.translatable("tooltip.extendedae_plus.infinity_biginteger_cell.summon2"));
|
||||
tooltip.add(Component.translatable("tooltip.extendedae_plus.infinity_biginteger_cell"));
|
||||
|
||||
Preconditions.checkArgument(stack.getItem() == this);
|
||||
// 仅在 ItemStack 自身存在 UUID 时显示 UUID,避免触发持久化或加载逻辑
|
||||
|
|
|
|||
377
src/main/java/com/extendedae_plus/datagen/CraftingRecipes.java
Normal file
377
src/main/java/com/extendedae_plus/datagen/CraftingRecipes.java
Normal file
|
|
@ -0,0 +1,377 @@
|
|||
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.item.BasicCoreItem;
|
||||
import com.extendedae_plus.util.ModCheckUtils;
|
||||
import com.glodblock.github.appflux.common.AFItemAndBlock;
|
||||
import com.glodblock.github.appflux.util.AFTags;
|
||||
import gripe._90.megacells.definition.MEGAItems;
|
||||
import net.minecraft.data.PackOutput;
|
||||
import net.minecraft.data.recipes.FinishedRecipe;
|
||||
import net.minecraft.data.recipes.RecipeCategory;
|
||||
import net.minecraft.data.recipes.RecipeProvider;
|
||||
import net.minecraft.data.recipes.ShapedRecipeBuilder;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Items;
|
||||
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) {
|
||||
addCoreRecipes(consumer);
|
||||
addTransformRecipes(consumer);
|
||||
addReactionChamberRecipes(consumer);
|
||||
}
|
||||
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
|
@ -60,9 +60,9 @@ public class ExtendedAEJeiPlugin implements IModPlugin {
|
|||
|
||||
private boolean isCoreTypeAvailable(int typeId) {
|
||||
return switch (typeId) {
|
||||
case 0, 1 -> true; // storage, spatial
|
||||
case 2 -> ModCheckUtils.isAppfluxLoading();
|
||||
case 3 -> ModCheckUtils.isAAELoading();
|
||||
case 1, 2 -> true; // storage, spatial
|
||||
case 3 -> ModCheckUtils.isAppfluxLoading();
|
||||
case 4 -> ModCheckUtils.isAAELoading();
|
||||
default -> false;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,14 +20,14 @@ 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~4 = 阶段
|
||||
private static final int MAX_STAGE = 4;
|
||||
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());
|
||||
}
|
||||
|
||||
// ==================== 工厂方法:CustomModelData = CoreType.id (1~4) ====================
|
||||
// ==================== 工厂方法 ====================
|
||||
public static ItemStack of(CoreType type, int stage) {
|
||||
ItemStack stack = new ItemStack(ModItems.BASIC_CORE.get());
|
||||
if (type != null && stage >= 0 && stage <= MAX_STAGE) {
|
||||
|
|
@ -70,7 +70,8 @@ public class BasicCoreItem extends Item {
|
|||
|
||||
@Override
|
||||
public int getBarWidth(@NotNull ItemStack stack) {
|
||||
return isTyped(stack) ? Math.round(13.0f * getStage(stack) / MAX_STAGE) : 0;
|
||||
if (!isTyped(stack)) return 0;
|
||||
return Math.round(13.0f * getStage(stack) / MAX_STAGE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -101,7 +102,7 @@ public class BasicCoreItem extends Item {
|
|||
.withStyle(ChatFormatting.YELLOW));
|
||||
|
||||
int stage = getStage(stack);
|
||||
for (int i = 1; i <= 4; i++) {
|
||||
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 ? "✔ " : "✘ ";
|
||||
|
|
@ -135,7 +136,7 @@ public class BasicCoreItem extends Item {
|
|||
: Rarity.COMMON;
|
||||
}
|
||||
|
||||
// ==================== 核心类型枚举:id = CustomModelData (1~4) ====================
|
||||
// ==================== 核心类型枚举 ====================
|
||||
public enum CoreType {
|
||||
STORAGE (1, "storage", ChatFormatting.AQUA),
|
||||
SPATIAL (2, "spatial", ChatFormatting.YELLOW),
|
||||
|
|
@ -165,9 +166,11 @@ public class BasicCoreItem extends Item {
|
|||
public ChatFormatting getTextColor() { return textColor; }
|
||||
|
||||
public Rarity getRarity(int stage) {
|
||||
return stage == 0 ? Rarity.COMMON :
|
||||
stage <= 2 ? Rarity.UNCOMMON :
|
||||
stage == 3 ? Rarity.RARE : Rarity.EPIC;
|
||||
return switch (stage) {
|
||||
case 1, 2 -> Rarity.UNCOMMON;
|
||||
case 3 -> Rarity.EPIC;
|
||||
default -> Rarity.COMMON;
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -28,23 +28,17 @@ public class MixinConditions implements IMixinConfigPlugin {
|
|||
try {
|
||||
// === MAE2 兼容 ===
|
||||
if (mixinClassName.contains("CraftingCPUClusterMixin")) {
|
||||
boolean shouldApply = !ModCheckUtils.isLoaded(ModCheckUtils.MODID_MAE2);
|
||||
log(mixinClassName, ModCheckUtils.MODID_MAE2, shouldApply);
|
||||
return shouldApply;
|
||||
return !ModCheckUtils.isLoaded(ModCheckUtils.MODID_MAE2);
|
||||
}
|
||||
|
||||
// === AAE 兼容 ===
|
||||
if (mixinClassName.startsWith("com.extendedae_plus.mixin.advancedae")) {
|
||||
boolean shouldApply = ModCheckUtils.isLoaded(ModCheckUtils.MODID_AAE);
|
||||
log(mixinClassName, ModCheckUtils.MODID_AAE, shouldApply);
|
||||
return shouldApply;
|
||||
return ModCheckUtils.isLoaded(ModCheckUtils.MODID_AAE);
|
||||
}
|
||||
|
||||
// === GuideME 版本兼容 ===
|
||||
if (mixinClassName.startsWith("com.extendedae_plus.mixin.guideme.")) {
|
||||
boolean shouldApply = ModCheckUtils.isLoadedAndLowerThan(ModCheckUtils.MODID_GUIDEME, "20.1.14");
|
||||
logVersion(mixinClassName, ModCheckUtils.MODID_GUIDEME, ModCheckUtils.getVersion(ModCheckUtils.MODID_GUIDEME), "20.1.14", shouldApply);
|
||||
return shouldApply;
|
||||
return ModCheckUtils.isLoadedAndLowerThan(ModCheckUtils.MODID_GUIDEME, "20.1.14");
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
@ -73,15 +67,4 @@ public class MixinConditions implements IMixinConfigPlugin {
|
|||
public void postApply(String targetClassName, org.objectweb.asm.tree.ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {
|
||||
// 应用后调用
|
||||
}
|
||||
|
||||
// === 日志方法 ===
|
||||
private void log(String mixin, String mod, boolean apply) {
|
||||
System.out.printf("[ExtendedAE_Plus] 模组 %s 存在: %s, 应用 Mixin: %s, Mixin类:%s%n",
|
||||
mod, ModCheckUtils.isLoaded(mod), apply, mixin);
|
||||
}
|
||||
|
||||
private void logVersion(String mixin, String mod, String detected, String target, boolean apply) {
|
||||
System.out.printf("[ExtendedAE_Plus] 模组 %s 版本检测: 当前 %s, 目标 < %s, 应用 Mixin: %s%n",
|
||||
mod, detected, target, apply);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,8 @@ public class ModCheckUtils {
|
|||
MODID_FTB_TEAMS = "ftbteams",
|
||||
MODID_APPFLUX = "appflux",
|
||||
MODID_GUIDEME = "guideme",
|
||||
MODID_MAE2 = "mae2";
|
||||
MODID_MAE2 = "mae2",
|
||||
MODID_MEGA = "megacells";
|
||||
|
||||
/**
|
||||
* 检查指定模组是否存在
|
||||
|
|
|
|||
|
|
@ -32,17 +32,33 @@
|
|||
"item.extendedae_plus.spatial_core": "Spatial Core",
|
||||
"item.extendedae_plus.oblivion_singularity": "Oblivion Singularity",
|
||||
"item.extendedae_plus.infinity_biginteger_cell": "§4De§cvou§6rer §eof §aCo§bsmic §dSilence",
|
||||
"tooltip.extendedae_plus.infinity_biginteger_cell.summon1": "§6Through ninefold sacrifice, the Void echoes§r—§8Iava, Lord of the Void§r, bestows upon thee this artifact",
|
||||
"tooltip.extendedae_plus.infinity_biginteger_cell.summon2": "§b—§4A §dUni§cverse §eWith§ain §6A §bSin§5gle §9Point",
|
||||
"item.extendedae_plus.basic_core.storage.1": "Basic Core·Digitized",
|
||||
"item.extendedae_plus.basic_core.storage.2": "Basic Core·Arrayed",
|
||||
"item.extendedae_plus.basic_core.storage.3": "Basic Core·Matricized",
|
||||
"item.extendedae_plus.basic_core.spatial.1": "Basic Core·Coordinated",
|
||||
"item.extendedae_plus.basic_core.spatial.2": "Basic Core·Domainized",
|
||||
"item.extendedae_plus.basic_core.spatial.3": "Basic Core·Dimensionalized",
|
||||
"item.extendedae_plus.basic_core.energy_storage.1": "Basic Core·Quantified",
|
||||
"item.extendedae_plus.basic_core.energy_storage.2": "Basic Core·Fluidized",
|
||||
"item.extendedae_plus.basic_core.energy_storage.3": "Basic Core·Fielded",
|
||||
"item.extendedae_plus.basic_core.quantum_storage.1": "Basic Core·Superposed",
|
||||
"item.extendedae_plus.basic_core.quantum_storage.2": "Basic Core·Entangled",
|
||||
"item.extendedae_plus.basic_core.quantum_storage.3": "Basic Core·Coherent",
|
||||
|
||||
"tooltip.extendedae_plus.basic_core.untyped": "Core State: Awaiting Initialization",
|
||||
"tooltip.extendedae_plus.basic_core.evolving_to": "Directed Evolution: %s",
|
||||
"tooltip.extendedae_plus.basic_core.progress": "Construction Progress: ",
|
||||
"tooltip.extendedae_plus.basic_core.ready_to_craft": "Core construction complete. Awaiting final synthesis",
|
||||
"tooltip.extendedae_plus.infinity_biginteger_cell": "§7—§bThe tangible projection of absolute storage§r, §ewhere '§6The Finite§e' §chas been deemed illegal§r\n§bIts very existence§r §bis the ultimate negation of §dentropy§r",
|
||||
"tooltip.extendedae_plus.entity_speed_card.multiplier": "Multiplier: %s",
|
||||
"tooltip.extendedae_plus.entity_speed_card.max": "Max effective: %s x",
|
||||
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip": "Assembler Matrix Upload Core",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload": "Upload to Assembler Matrix",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_success": "Pattern uploaded to Assembler Matrix",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_fail_not_crafting": "Only crafting patterns supported, processing patterns ignored",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_fail_no_matrix": "No formed Assembler Matrix found in network",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_fail_full": "Assembler Matrix pattern storage full or cannot insert",
|
||||
|
||||
"block.extendedae_plus.wireless_transceiver": "Wireless Transceiver",
|
||||
"block.extendedae_plus.4x_crafting_accelerator": "4x Crafting Accelerator",
|
||||
"block.extendedae_plus.16x_crafting_accelerator": "16x Crafting Accelerator",
|
||||
|
|
|
|||
|
|
@ -32,10 +32,26 @@
|
|||
"item.extendedae_plus.oblivion_singularity": "湮灭奇点",
|
||||
"item.extendedae_plus.infinity_core": "吞噬核心",
|
||||
"item.extendedae_plus.infinity_biginteger_cell": "§4吞§c噬§6万§e籁§a的§b寂§d静",
|
||||
"tooltip.extendedae_plus.infinity_biginteger_cell.summon1": "§6九重献祭, 终得虚空回响§r——觐见§8虚空之主Iava§r, 赐汝此物",
|
||||
"tooltip.extendedae_plus.infinity_biginteger_cell.summon2": "§b——§4方§d寸§c之§e间§a, §6自§b有§5千§9寰",
|
||||
"item.extendedae_plus.basic_core.storage.1": "基础核心·数据化",
|
||||
"item.extendedae_plus.basic_core.storage.2": "基础核心·阵列化",
|
||||
"item.extendedae_plus.basic_core.storage.3": "基础核心·矩阵化",
|
||||
"item.extendedae_plus.basic_core.spatial.1": "基础核心·坐标化",
|
||||
"item.extendedae_plus.basic_core.spatial.2": "基础核心·领域化",
|
||||
"item.extendedae_plus.basic_core.spatial.3": "基础核心·维度化",
|
||||
"item.extendedae_plus.basic_core.energy_storage.1": "基础核心·通量化",
|
||||
"item.extendedae_plus.basic_core.energy_storage.2": "基础核心·流态化",
|
||||
"item.extendedae_plus.basic_core.energy_storage.3": "基础核心·场域化",
|
||||
"item.extendedae_plus.basic_core.quantum_storage.1": "基础核心·叠加化",
|
||||
"item.extendedae_plus.basic_core.quantum_storage.2": "基础核心·纠缠化",
|
||||
"item.extendedae_plus.basic_core.quantum_storage.3": "基础核心·相干化",
|
||||
"tooltip.extendedae_plus.basic_core.untyped": "核心状态:待初始化",
|
||||
"tooltip.extendedae_plus.basic_core.evolving_to": "定向演化:%s",
|
||||
"tooltip.extendedae_plus.basic_core.progress": "构建进度:",
|
||||
"tooltip.extendedae_plus.basic_core.ready_to_craft": "核心构建完成,等待最终合成",
|
||||
"tooltip.extendedae_plus.infinity_biginteger_cell": "§7——§b绝对存储的现实投影,§e\"有限\"§6已被定义为§c非法\n§b其存在本身,即是对§d熵增§b的终极否定",
|
||||
"tooltip.extendedae_plus.entity_speed_card.multiplier": "乘数: %s",
|
||||
"tooltip.extendedae_plus.entity_speed_card.max": "最大生效: %s 倍",
|
||||
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip": "装配矩阵上传核心",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload": "上传到装配矩阵",
|
||||
"block.extendedae_plus.assembler_matrix_upload_core.tooltip.upload_success": "样板已上传到装配矩阵",
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user