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