XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

MyDimension-Lord

【我的世界】我的维度附属模组:维度之主

公开
关注 0 Fork 0 Star 0
UTF-8
package com.xfestudio.mydimensionlord.builder;

import com.xfestudio.mydimensionlord.MyDimension;
import com.xfestudio.mydimensionlord.config.BuilderConfig;
import com.xfestudio.mydimensionlord.registry.ModItems;
import com.xfestudio.mydimensionlord.registry.ModBlockEntities;
import net.minecraft.gametest.framework.GameTest;
import net.minecraft.gametest.framework.GameTestHelper;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.item.ItemStack;
import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.fml.ModList;
import net.minecraftforge.gametest.GameTestHolder;
import net.minecraftforge.gametest.PrefixGameTestTemplate;
import net.minecraftforge.registries.ForgeRegistries;
import java.util.UUID;

@GameTestHolder(MyDimension.MOD_ID)
@PrefixGameTestTemplate(false)
public final class AddonIntegrationGameTests {
    @GameTest(template = "empty")
    public static void loadsAlongsideParentAndPreservesExistingRegistryIds(GameTestHelper helper) {
        helper.assertTrue(ModList.get().isLoaded("mydimension") && ModList.get().isLoaded(MyDimension.MOD_ID),
                "Parent and addon must both load as independent mods");
        helper.assertTrue(ForgeRegistries.ITEMS.getKey(ModItems.REALMWRIGHT_SCEPTER.get())
                        .equals(new ResourceLocation("mydimension", "realmwright_scepter")),
                "Existing scepters would be lost on upgrade");
        helper.assertTrue(ForgeRegistries.BLOCK_ENTITY_TYPES.getKey(ModBlockEntities.RESONANT_SUPPLY_ANCHOR.get())
                        .equals(new ResourceLocation("mydimension", "resonant_supply_anchor")),
                "Existing supply anchor block entities would be lost on upgrade");
        helper.assertTrue(ModItems.REALMWRIGHT_SCEPTER.get().getClass().getName().startsWith("com.xfestudio.mydimensionlord."),
                "Scepter must be owned by the addon");
        helper.assertTrue(BuilderConfig.isEnabled() && BuilderRuntime.settings().enabled()
                        && !BuilderConfig.SPEC.getValues().contains("builder.enabled"),
                "The addon must be active without a master enable/disable config");
        helper.succeed();
    }

    @GameTest(template = "empty")
    public static void savedScepterKeepsItsIdentityAndSettings(GameTestHelper helper) {
        ItemStack old = new ItemStack(ModItems.REALMWRIGHT_SCEPTER.get());
        UUID id = RealmwrightData.ensureId(old);
        RealmwrightData.setMode(old, BuilderMode.DEMOLISH);
        ItemStack restored = ItemStack.of(old.save(new CompoundTag()));
        helper.assertTrue(restored.is(ModItems.REALMWRIGHT_SCEPTER.get())
                        && RealmwrightData.id(restored).equals(id)
                        && RealmwrightData.mode(restored) == BuilderMode.DEMOLISH,
                "Scepter serialization must retain the original NBT schema and ID");
        helper.succeed();
    }
}