吞噬盘相关合成材料配方及文本调整;配方类;去除Mixin plugin日志

This commit is contained in:
C-H716 2025-11-17 00:49:53 +08:00
parent 15322767f0
commit 4001669c5c
9 changed files with 437 additions and 40 deletions

View File

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

View File

@ -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避免触发持久化或加载逻辑

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

View File

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

View File

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

View File

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

View File

@ -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";
/**
* 检查指定模组是否存在

View File

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

View File

@ -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": "样板已上传到装配矩阵",