diff --git a/src/main/java/com/pahimar/ee3/EquivalentExchange3.java b/src/main/java/com/pahimar/ee3/EquivalentExchange3.java index 43e79d80..fe7b843e 100644 --- a/src/main/java/com/pahimar/ee3/EquivalentExchange3.java +++ b/src/main/java/com/pahimar/ee3/EquivalentExchange3.java @@ -14,7 +14,9 @@ import com.pahimar.ee3.recipe.RecipeRegistry; import com.pahimar.ee3.reference.Files; import com.pahimar.ee3.reference.Messages; import com.pahimar.ee3.reference.Reference; +import com.pahimar.ee3.test.EETestSuite; import com.pahimar.ee3.test.EnergyValueTestSuite; +import com.pahimar.ee3.test.VanillaTestSuite; import com.pahimar.ee3.util.FluidHelper; import com.pahimar.ee3.util.LogHelper; import com.pahimar.ee3.util.SerializationHelper; @@ -108,8 +110,13 @@ public class EquivalentExchange3 @EventHandler public void postInit(FMLPostInitializationEvent event) { + // Initialize the blacklist registry BlacklistRegistry.INSTANCE.load(); Abilities.init(); + + // Initialize our test files + new VanillaTestSuite().build().save(); + new EETestSuite().build().save(); } @EventHandler diff --git a/src/main/java/com/pahimar/ee3/command/CommandRunTest.java b/src/main/java/com/pahimar/ee3/command/CommandRunTest.java index 8935b64f..4b011c56 100644 --- a/src/main/java/com/pahimar/ee3/command/CommandRunTest.java +++ b/src/main/java/com/pahimar/ee3/command/CommandRunTest.java @@ -1,9 +1,9 @@ package com.pahimar.ee3.command; +import com.pahimar.ee3.reference.Files; import com.pahimar.ee3.reference.Messages; import com.pahimar.ee3.reference.Names; import com.pahimar.ee3.reference.Reference; -import com.pahimar.ee3.reference.Tests; import com.pahimar.ee3.test.EnergyValueTestSuite; import com.pahimar.ee3.util.LogHelper; import cpw.mods.fml.common.FMLCommonHandler; @@ -39,8 +39,8 @@ public class CommandRunTest extends CommandEE { boolean testFound = false; - if (Tests.globalTestDirectory != null) { - for (File testCaseFile : Tests.globalTestDirectory.listFiles()) { + if (Files.globalTestDirectory != null) { + for (File testCaseFile : Files.globalTestDirectory.listFiles()) { if (testCaseFile.isFile() && testCaseFile.getName().equalsIgnoreCase(args[1])) { testFound = true; EnergyValueTestSuite energyValueTestSuite = new EnergyValueTestSuite(testCaseFile); @@ -76,8 +76,8 @@ public class CommandRunTest extends CommandEE { ArrayList fileNames = new ArrayList<>(); - if (Tests.globalTestDirectory != null) { - for (File testCaseFile : Tests.globalTestDirectory.listFiles()) { + if (Files.globalTestDirectory != null) { + for (File testCaseFile : Files.globalTestDirectory.listFiles()) { if (testCaseFile.isFile() && testCaseFile.getAbsolutePath().endsWith(".json")) { fileNames.add(testCaseFile.getName()); } diff --git a/src/main/java/com/pahimar/ee3/exchange/WrappedStack.java b/src/main/java/com/pahimar/ee3/exchange/WrappedStack.java index 00fc93a5..165f3cd2 100644 --- a/src/main/java/com/pahimar/ee3/exchange/WrappedStack.java +++ b/src/main/java/com/pahimar/ee3/exchange/WrappedStack.java @@ -291,43 +291,40 @@ public class WrappedStack implements Comparable { * @return a string representation of the object. */ @Override - public String toString() - { - if (wrappedStack instanceof ItemStack) - { + public String toString() { + + if (wrappedStack instanceof ItemStack) { ItemStack itemStack = (ItemStack) wrappedStack; - String unlocalizedName; - try - { -// unlocalizedName = itemStack.getUnlocalizedName(); - unlocalizedName = Item.itemRegistry.getNameForObject(itemStack.getItem()); + String unlocalizedName = null; + try { + if (itemStack.getItem() != null) { + unlocalizedName = Item.itemRegistry.getNameForObject(itemStack.getItem()); + } + + if (unlocalizedName == null) { + unlocalizedName = itemStack.getUnlocalizedName(); + } } - catch (ArrayIndexOutOfBoundsException e) - { + catch (ArrayIndexOutOfBoundsException e) { unlocalizedName = "no-name"; } - if (itemStack.hasTagCompound()) - { + if (itemStack.hasTagCompound()) { return String.format("%sxitemStack[%s@%s:%s]", stackSize, unlocalizedName, itemStack.getItemDamage(), itemStack.getTagCompound()); } - else - { + else { return String.format("%sxitemStack[%s@%s]", stackSize, unlocalizedName, itemStack.getItemDamage()); } } - else if (wrappedStack instanceof OreStack) - { + else if (wrappedStack instanceof OreStack) { OreStack oreStack = (OreStack) wrappedStack; return String.format("%sxoreStack[%s]", stackSize, oreStack.oreName); } - else if (wrappedStack instanceof FluidStack) - { + else if (wrappedStack instanceof FluidStack) { FluidStack fluidStack = (FluidStack) wrappedStack; return String.format("%sxfluidStack[%s]", stackSize, fluidStack.getFluid().getName()); } - else - { + else { return "null-wrappedstack"; } } diff --git a/src/main/java/com/pahimar/ee3/init/ModItems.java b/src/main/java/com/pahimar/ee3/init/ModItems.java index f447f315..bb968ae4 100644 --- a/src/main/java/com/pahimar/ee3/init/ModItems.java +++ b/src/main/java/com/pahimar/ee3/init/ModItems.java @@ -48,25 +48,25 @@ public class ModItems GameRegistry.registerItem(stonePhilosophers, Names.Items.PHILOSOPHERS_STONE); GameRegistry.registerItem(chalk, Names.Items.CHALK); GameRegistry.registerItem(alchemicalUpgrade, Names.Items.ALCHEMICAL_UPGRADE); -// GameRegistry.registerItem(diviningRod, Names.Items.DIVINING_ROD); + GameRegistry.registerItem(diviningRod, Names.Items.DIVINING_ROD); GameRegistry.registerItem(alchenomicon, Names.Items.ALCHENOMICON, Names.Items.ALCHEMICAL_TOME); -// GameRegistry.registerItem(matter, Names.Items.MATTER); -// GameRegistry.registerItem(gem, Names.Items.GEM); -// GameRegistry.registerItem(lootBall, Names.Items.LOOT_BALL); -// GameRegistry.registerItem(knowledgeScroll, Names.Items.KNOWLEDGE_SCROLL); -// GameRegistry.registerItem(potionLethe, Names.Items.POTION_LETHE); + GameRegistry.registerItem(matter, Names.Items.MATTER); + GameRegistry.registerItem(gem, Names.Items.GEM); + GameRegistry.registerItem(lootBall, Names.Items.LOOT_BALL); + GameRegistry.registerItem(knowledgeScroll, Names.Items.KNOWLEDGE_SCROLL); + GameRegistry.registerItem(potionLethe, Names.Items.POTION_LETHE); -// GameRegistry.registerItem(shovelDarkMatter, Names.Tools.DARK_MATTER_SHOVEL); -// GameRegistry.registerItem(pickAxeDarkMatter, Names.Tools.DARK_MATTER_PICKAXE); -// GameRegistry.registerItem(hammerDarkMatter, Names.Tools.DARK_MATTER_HAMMER); -// GameRegistry.registerItem(axeDarkMatter, Names.Tools.DARK_MATTER_AXE); -// GameRegistry.registerItem(hoeDarkMatter, Names.Tools.DARK_MATTER_HOE); -// GameRegistry.registerItem(fishingRodDarkMatter, Names.Tools.DARK_MATTER_FISHING_ROD); -// GameRegistry.registerItem(shearsDarkMatter, Names.Tools.DARK_MATTER_SHEARS); + GameRegistry.registerItem(shovelDarkMatter, Names.Tools.DARK_MATTER_SHOVEL); + GameRegistry.registerItem(pickAxeDarkMatter, Names.Tools.DARK_MATTER_PICKAXE); + GameRegistry.registerItem(hammerDarkMatter, Names.Tools.DARK_MATTER_HAMMER); + GameRegistry.registerItem(axeDarkMatter, Names.Tools.DARK_MATTER_AXE); + GameRegistry.registerItem(hoeDarkMatter, Names.Tools.DARK_MATTER_HOE); + GameRegistry.registerItem(fishingRodDarkMatter, Names.Tools.DARK_MATTER_FISHING_ROD); + GameRegistry.registerItem(shearsDarkMatter, Names.Tools.DARK_MATTER_SHEARS); -// GameRegistry.registerItem(bowDarkMatter, Names.Weapons.DARK_MATTER_BOW); -// GameRegistry.registerItem(arrowDarkMatter, Names.Weapons.DARK_MATTER_ARROW); -// GameRegistry.registerItem(swordDarkMatter, Names.Weapons.DARK_MATTER_SWORD); + GameRegistry.registerItem(bowDarkMatter, Names.Weapons.DARK_MATTER_BOW); + GameRegistry.registerItem(arrowDarkMatter, Names.Weapons.DARK_MATTER_ARROW); + GameRegistry.registerItem(swordDarkMatter, Names.Weapons.DARK_MATTER_SWORD); // Helm // Chest diff --git a/src/main/java/com/pahimar/ee3/init/Recipes.java b/src/main/java/com/pahimar/ee3/init/Recipes.java index 5975f405..4133266d 100644 --- a/src/main/java/com/pahimar/ee3/init/Recipes.java +++ b/src/main/java/com/pahimar/ee3/init/Recipes.java @@ -30,6 +30,7 @@ public class Recipes GameRegistry.addShapedRecipe(new ItemStack(ModBlocks.ashInfusedStone, 1), "s", "s", 's', new ItemStack(ModBlocks.ashInfusedStoneSlab)); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.chalk), new ItemStack(Items.dye, 1, 15), new ItemStack(Items.clay_ball)); + GameRegistry.addShapedRecipe(new ItemStack(ModBlocks.chalkBlock), "cc", "cc", 'c', ModItems.chalk); GameRegistry.addShapedRecipe(new ItemStack(ModBlocks.glassBell), "ggg", "g g", "g g", 'g', Blocks.glass); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.calcinator), "i i", "sis", "s s", 'i', "ingotIron", 's', Blocks.stone)); @@ -77,6 +78,10 @@ public class Recipes AludelRecipeManager.getInstance().addRecipe(new ItemStack(ModItems.alchemicalFuel, 1, 2), new ItemStack(ModItems.alchemicalFuel, 1, 1), new ItemStack(ModItems.alchemicalDust, 14, 3)); // Alchemical Chest + AludelRecipeManager.getInstance().addRecipe(new ItemStack(ModBlocks.alchemicalChest, 1, 0), new ItemStack(Blocks.chest, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(ModItems.alchemicalDust, 8, 1)); + AludelRecipeManager.getInstance().addRecipe(new ItemStack(ModBlocks.alchemicalChest, 1, 0), new ItemStack(Blocks.trapped_chest, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(ModItems.alchemicalDust, 8, 1)); + AludelRecipeManager.getInstance().addRecipe(new ItemStack(ModBlocks.alchemicalChest, 1, 1), new ItemStack(Blocks.chest, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(ModItems.alchemicalDust, 8, 2)); + AludelRecipeManager.getInstance().addRecipe(new ItemStack(ModBlocks.alchemicalChest, 1, 1), new ItemStack(ModBlocks.alchemicalChest, 1, 0), new ItemStack(ModItems.alchemicalDust, 8, 2)); AludelRecipeManager.getInstance().addRecipe(new ItemStack(ModBlocks.alchemicalChest, 1, 2), new ItemStack(Blocks.chest, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(ModItems.alchemicalDust, 8, 3)); AludelRecipeManager.getInstance().addRecipe(new ItemStack(ModBlocks.alchemicalChest, 1, 2), new ItemStack(ModBlocks.alchemicalChest, 1, 0), new ItemStack(ModItems.alchemicalDust, 8, 3)); AludelRecipeManager.getInstance().addRecipe(new ItemStack(ModBlocks.alchemicalChest, 1, 2), new ItemStack(ModBlocks.alchemicalChest, 1, 1), new ItemStack(ModItems.alchemicalDust, 8, 3)); diff --git a/src/main/java/com/pahimar/ee3/reference/Comparators.java b/src/main/java/com/pahimar/ee3/reference/Comparators.java index b2a00939..cf35e9cf 100644 --- a/src/main/java/com/pahimar/ee3/reference/Comparators.java +++ b/src/main/java/com/pahimar/ee3/reference/Comparators.java @@ -53,42 +53,46 @@ public class Comparators { public int compare(ItemStack itemStack1, ItemStack itemStack2) { if (itemStack1 != null && itemStack2 != null) { - // Sort on id - if (Item.getIdFromItem(itemStack1.getItem()) - Item.getIdFromItem(itemStack2.getItem()) == 0) { - // Sort on item - if (itemStack1.getItem() == itemStack2.getItem()) { - // Then sort on meta - if ((itemStack1.getItemDamage() == itemStack2.getItemDamage()) || itemStack1.getItemDamage() == OreDictionary.WILDCARD_VALUE || itemStack2.getItemDamage() == OreDictionary.WILDCARD_VALUE) { - // Then sort on NBT - if (itemStack1.hasTagCompound() && itemStack2.hasTagCompound()) { - // Then sort on stack size - if (ItemStack.areItemStackTagsEqual(itemStack1, itemStack2)) { + if (itemStack1.getItem() != null && itemStack2.getItem() != null) { + // Sort on id + if (Item.getIdFromItem(itemStack1.getItem()) - Item.getIdFromItem(itemStack2.getItem()) == 0) { + // Sort on item + if (itemStack1.getItem() == itemStack2.getItem()) { + // Then sort on meta + if ((itemStack1.getItemDamage() == itemStack2.getItemDamage()) || itemStack1.getItemDamage() == OreDictionary.WILDCARD_VALUE || itemStack2.getItemDamage() == OreDictionary.WILDCARD_VALUE) { + // Then sort on NBT + if (itemStack1.hasTagCompound() && itemStack2.hasTagCompound()) { + // Then sort on stack size + if (ItemStack.areItemStackTagsEqual(itemStack1, itemStack2)) { + return (itemStack1.stackSize - itemStack2.stackSize); + } else { + return (itemStack1.getTagCompound().hashCode() - itemStack2.getTagCompound().hashCode()); + } + } else if (!(itemStack1.hasTagCompound()) && itemStack2.hasTagCompound()) { + return -1; + } else if (itemStack1.hasTagCompound() && !(itemStack2.hasTagCompound())) { + return 1; + } else { return (itemStack1.stackSize - itemStack2.stackSize); } - else { - return (itemStack1.getTagCompound().hashCode() - itemStack2.getTagCompound().hashCode()); - } - } - else if (!(itemStack1.hasTagCompound()) && itemStack2.hasTagCompound()) { - return -1; - } - else if (itemStack1.hasTagCompound() && !(itemStack2.hasTagCompound())) { - return 1; - } - else { - return (itemStack1.stackSize - itemStack2.stackSize); + } else { + return (itemStack1.getItemDamage() - itemStack2.getItemDamage()); } + } else { + return itemStack1.getItem().getUnlocalizedName(itemStack1).compareToIgnoreCase(itemStack2.getItem().getUnlocalizedName(itemStack2)); } - else { - return (itemStack1.getItemDamage() - itemStack2.getItemDamage()); - } - } - else { - return itemStack1.getItem().getUnlocalizedName(itemStack1).compareToIgnoreCase(itemStack2.getItem().getUnlocalizedName(itemStack2)); + } else { + return Item.getIdFromItem(itemStack1.getItem()) - Item.getIdFromItem(itemStack2.getItem()); } } + else if (itemStack1.getItem() != null) { + return -1; + } + else if (itemStack2.getItem() != null) { + return 1; + } else { - return Item.getIdFromItem(itemStack1.getItem()) - Item.getIdFromItem(itemStack2.getItem()); + return 0; } } else if (itemStack1 != null) { diff --git a/src/main/java/com/pahimar/ee3/reference/Files.java b/src/main/java/com/pahimar/ee3/reference/Files.java index 5224f63c..33725537 100644 --- a/src/main/java/com/pahimar/ee3/reference/Files.java +++ b/src/main/java/com/pahimar/ee3/reference/Files.java @@ -11,6 +11,7 @@ import java.io.File; public class Files { public static File globalDataDirectory; + public static File globalTestDirectory; public static File playerDataDirectory; private static final String ENERGY_VALUES_JSON_FILENAME = "energy-values.json"; @@ -25,9 +26,8 @@ public class Files { public static void init(FMLPreInitializationEvent event) { globalDataDirectory = new File(event.getModConfigurationDirectory().getParentFile(), "data" + File.separator + Reference.LOWERCASE_MOD_ID); - Tests.globalTestDirectory = new File(globalDataDirectory, "tests"); - Tests.globalTestDirectory.mkdirs(); - Tests.VANILLA_TEST_SUITE.save(); + globalTestDirectory = new File(globalDataDirectory, "tests"); + globalTestDirectory.mkdirs(); EnergyValueRegistry.energyValuesDirectory = new File(globalDataDirectory, "energy-values"); EnergyValueRegistry.energyValuesDirectory.mkdirs(); diff --git a/src/main/java/com/pahimar/ee3/reference/Tests.java b/src/main/java/com/pahimar/ee3/reference/Tests.java deleted file mode 100644 index 7a44014e..00000000 --- a/src/main/java/com/pahimar/ee3/reference/Tests.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.pahimar.ee3.reference; - -import com.pahimar.ee3.test.VanillaTestSuite; - -import java.io.File; - -public class Tests { - - public static File globalTestDirectory; - - public static final VanillaTestSuite VANILLA_TEST_SUITE = new VanillaTestSuite(); -} diff --git a/src/main/java/com/pahimar/ee3/test/EETestSuite.java b/src/main/java/com/pahimar/ee3/test/EETestSuite.java new file mode 100644 index 00000000..5b1a51cf --- /dev/null +++ b/src/main/java/com/pahimar/ee3/test/EETestSuite.java @@ -0,0 +1,87 @@ +package com.pahimar.ee3.test; + +import com.pahimar.ee3.init.ModBlocks; +import com.pahimar.ee3.init.ModItems; +import com.pahimar.ee3.reference.Files; +import net.minecraft.item.ItemStack; + +import java.io.File; + +public class EETestSuite extends EnergyValueTestSuite { + + public EETestSuite() { + super(); + } + + public EETestSuite build() { + + add(ModBlocks.calcinator, 772); + add(ModBlocks.aludel, 1794); + add(ModBlocks.glassBell, 7); + add(ModBlocks.researchStation, 520); + add(ModBlocks.augmentationTable, 284); + add(new ItemStack(ModBlocks.alchemicalChest, 1, 0), 576); + add(new ItemStack(ModBlocks.alchemicalChest, 1, 1), 16448); + add(new ItemStack(ModBlocks.alchemicalChest, 1, 2), 65600); + add(ModBlocks.chalkBlock, 320); + add(new ItemStack(ModBlocks.alchemicalFuelBlock, 1, 0), 18720); + add(new ItemStack(ModBlocks.alchemicalFuelBlock, 1, 1), 147744); + add(new ItemStack(ModBlocks.alchemicalFuelBlock, 1, 2), 1179936); + add(ModBlocks.ashInfusedStone, 2); + add(ModBlocks.ashInfusedStoneSlab, 1); + add(new ItemStack(ModItems.alchemicalBag, 1, 0), 560); + add(new ItemStack(ModItems.alchemicalBag, 1, 1), 16432); + add(new ItemStack(ModItems.alchemicalBag, 1, 2), 65584); + add(new ItemStack(ModItems.alchemicalDust, 1, 0), 1); + add(new ItemStack(ModItems.alchemicalDust, 1, 1), 64); + add(new ItemStack(ModItems.alchemicalDust, 1, 2), 2048); + add(new ItemStack(ModItems.alchemicalDust, 1, 3), 8192); + add(new ItemStack(ModItems.alchemicalFuel, 1, 0), 2080); + add(new ItemStack(ModItems.alchemicalFuel, 1, 1), 16416); + add(new ItemStack(ModItems.alchemicalFuel, 1, 2), 131104); + add(ModItems.stoneInert, 3076); + add(ModItems.shardMinium, 8192); + add(ModItems.stoneMinium, 68612); + add(ModItems.stonePhilosophers, null); + add(ModItems.chalk, 80); + add(new ItemStack(ModItems.alchemicalUpgrade, 1, 0), null); + add(new ItemStack(ModItems.alchemicalUpgrade, 1, 1), null); + add(new ItemStack(ModItems.alchemicalUpgrade, 1, 2), null); + add(ModItems.diviningRod, 16); + add(ModItems.alchenomicon, 8352); + add(new ItemStack(ModItems.matter, 1, 0), null); + add(new ItemStack(ModItems.matter, 1, 1), null); + add(new ItemStack(ModItems.matter, 1, 2), null); + add(new ItemStack(ModItems.matter, 1, 3), null); + add(new ItemStack(ModItems.matter, 1, 4), null); + add(new ItemStack(ModItems.matter, 1, 5), null); + add(new ItemStack(ModItems.matter, 1, 6), null); + add(new ItemStack(ModItems.matter, 1, 7), null); + add(new ItemStack(ModItems.matter, 1, 8), null); + add(new ItemStack(ModItems.gem, 1, 0), null); + add(new ItemStack(ModItems.gem, 1, 1), null); + add(new ItemStack(ModItems.gem, 1, 2), null); + add(new ItemStack(ModItems.gem, 1, 3), null); + add(new ItemStack(ModItems.gem, 1, 4), null); + add(new ItemStack(ModItems.gem, 1, 5), null); + add(new ItemStack(ModItems.gem, 1, 6), null); + add(ModItems.lootBall, null); + add(ModItems.knowledgeScroll, null); + add(ModItems.potionLethe, null); + add(ModItems.shovelDarkMatter, null); + add(ModItems.pickAxeDarkMatter, null); + add(ModItems.hammerDarkMatter, null); + add(ModItems.axeDarkMatter, null); + add(ModItems.hoeDarkMatter, null); + add(ModItems.fishingRodDarkMatter, null); + add(ModItems.shearsDarkMatter, null); + add(ModItems.bowDarkMatter, null); + add(ModItems.swordDarkMatter, null); + + return this; + } + + public void save() { + this.save(new File(Files.globalTestDirectory, "ee3-v1710-test-suite.json")); + } +} diff --git a/src/main/java/com/pahimar/ee3/test/EnergyValueTestSuite.java b/src/main/java/com/pahimar/ee3/test/EnergyValueTestSuite.java index de6235b4..8e9b1da3 100644 --- a/src/main/java/com/pahimar/ee3/test/EnergyValueTestSuite.java +++ b/src/main/java/com/pahimar/ee3/test/EnergyValueTestSuite.java @@ -10,7 +10,10 @@ import org.apache.logging.log4j.MarkerManager; import java.io.File; import java.io.FileNotFoundException; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; public class EnergyValueTestSuite { @@ -21,15 +24,9 @@ public class EnergyValueTestSuite { private static final Marker FAILURE_NO_VALUE_MARKER = MarkerManager.getMarker("EE3_TEST_FAILURE_NO_VALUE", FAILURE_MARKER); private Map testSuiteValueMap; - private transient Set stacksWithCorrectValue; - private transient Set failureStacksWithWrongValue; - private transient Set failureStacksWithNoValue; public EnergyValueTestSuite() { testSuiteValueMap = new TreeMap<>(); - stacksWithCorrectValue = new TreeSet<>(); - failureStacksWithWrongValue = new TreeSet<>(); - failureStacksWithNoValue = new TreeSet<>(); } public EnergyValueTestSuite(File file) { @@ -70,10 +67,6 @@ public class EnergyValueTestSuite { public void run(boolean strict) { - stacksWithCorrectValue.clear(); - failureStacksWithWrongValue.clear(); - failureStacksWithNoValue.clear(); - List successMessages = new ArrayList<>(); List failureMessagesWrongValue = new ArrayList<>(); List failureMessagesNoValue = new ArrayList<>(); @@ -86,24 +79,20 @@ public class EnergyValueTestSuite { if (actualValue == null && expectedValue == null) { // Success - anticipated that no value was found and no value was found successMessages.add(String.format("SUCCESS: Object '%s' had the expected energy value [Expected (%s), Found (%s)]", wrappedStack, expectedValue, actualValue)); - stacksWithCorrectValue.add(wrappedStack); } else if (actualValue == null) { // Failure - anticipated that a value would be found but no value was found failureMessagesNoValue.add(String.format("FAILURE: Object '%s' did not have the expected energy value [Expected (%s), Found (%s)]", wrappedStack, expectedValue, actualValue)); - failureStacksWithNoValue.add(wrappedStack); } else if (actualValue != null && expectedValue != null) { if (actualValue.equals(expectedValue)) { // Success - anticipated that a specific value would be found and the anticipated value was found successMessages.add(String.format("SUCCESS: Object '%s' had the expected energy value [Expected (%s), Found (%s)]", wrappedStack, expectedValue, actualValue)); - stacksWithCorrectValue.add(wrappedStack); } else { // Failure - anticipated that a specific value would be found and while a value was found it was not the anticipated one failureMessagesWrongValue.add(String.format("FAILURE: Object '%s' did not have the expected energy value [Expected (%s), Found (%s)]", wrappedStack, expectedValue, actualValue)); - failureStacksWithWrongValue.add(wrappedStack); } } } @@ -131,10 +120,6 @@ public class EnergyValueTestSuite { testSuiteValueMap = new TreeMap<>(); } - stacksWithCorrectValue = new TreeSet<>(); - failureStacksWithWrongValue = new TreeSet<>(); - failureStacksWithNoValue = new TreeSet<>(); - return this; } diff --git a/src/main/java/com/pahimar/ee3/test/VanillaTestSuite.java b/src/main/java/com/pahimar/ee3/test/VanillaTestSuite.java index 7062f134..c4f6b7f0 100644 --- a/src/main/java/com/pahimar/ee3/test/VanillaTestSuite.java +++ b/src/main/java/com/pahimar/ee3/test/VanillaTestSuite.java @@ -1,6 +1,6 @@ package com.pahimar.ee3.test; -import com.pahimar.ee3.reference.Tests; +import com.pahimar.ee3.reference.Files; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -11,10 +11,10 @@ import java.io.File; public class VanillaTestSuite extends EnergyValueTestSuite { public VanillaTestSuite() { - buildTestSuite(); + super(); } - private void buildTestSuite() { + public VanillaTestSuite build() { addBuildingBlocksTabTestCases(); addDecorationBlocksTabTestCases(); @@ -26,6 +26,8 @@ public class VanillaTestSuite extends EnergyValueTestSuite { addCombatTabTestCases(); addBrewingTabTestCases(); addMaterialsTabTestCases(); + + return this; } private void addBuildingBlocksTabTestCases() { @@ -599,6 +601,6 @@ public class VanillaTestSuite extends EnergyValueTestSuite { } public void save() { - this.save(new File(Tests.globalTestDirectory, "minecraft-v1710-vanilla-test-suite.json")); + this.save(new File(Files.globalTestDirectory, "minecraft-v1710-vanilla-test-suite.json")); } } diff --git a/src/main/java/com/pahimar/ee3/util/SerializationHelper.java b/src/main/java/com/pahimar/ee3/util/SerializationHelper.java index 89ea336d..7d4a0a17 100644 --- a/src/main/java/com/pahimar/ee3/util/SerializationHelper.java +++ b/src/main/java/com/pahimar/ee3/util/SerializationHelper.java @@ -34,7 +34,6 @@ public class SerializationHelper { .registerTypeAdapter(WrappedStack.class, new WrappedStackSerializer()) .registerTypeAdapter(PlayerKnowledge.class, new PlayerKnowledgeSerializer()) .registerTypeAdapter(ENERGY_VALUE_MAP_TYPE, new EnergyValueMapSerializer()) - .registerTypeAdapter(ENERGY_VALUE_MAP_TYPE, new EnergyValueMapSerializer()) .create(); private static File instanceDataDirectory; diff --git a/src/main/java/com/pahimar/ee3/util/serialize/EnergyValueMapSerializer.java b/src/main/java/com/pahimar/ee3/util/serialize/EnergyValueMapSerializer.java index c6e31d2e..02150931 100644 --- a/src/main/java/com/pahimar/ee3/util/serialize/EnergyValueMapSerializer.java +++ b/src/main/java/com/pahimar/ee3/util/serialize/EnergyValueMapSerializer.java @@ -41,11 +41,13 @@ public class EnergyValueMapSerializer implements JsonSerializer wrappedStack != null && wrappedStack.getWrappedObject() != null & src.get(wrappedStack) != null) + .filter(wrappedStack -> wrappedStack != null && wrappedStack.getWrappedObject() != null) .forEach(wrappedStack -> { - JsonObject jsonMapping = new JsonObject(); - jsonMapping.add(wrappedStack.getWrappedObject().getClass().getSimpleName().toLowerCase(), context.serialize(wrappedStack.getWrappedObject())); - jsonMapping.addProperty(ENERGY_VALUE, src.get(wrappedStack).getValue()); - jsonArray.add(jsonMapping); + JsonObject jsonMapping = new JsonObject(); + JsonElement jsonElement = context.serialize(wrappedStack.getWrappedObject()); + + if (jsonElement.isJsonObject()) { + jsonMapping.add(wrappedStack.getWrappedObject().getClass().getSimpleName().toLowerCase(), context.serialize(wrappedStack.getWrappedObject())); + + if (src.get(wrappedStack) != null) { + jsonMapping.addProperty(ENERGY_VALUE, src.get(wrappedStack).getValue()); + } + else { + jsonMapping.add(ENERGY_VALUE, JsonNull.INSTANCE); + } + + jsonArray.add(jsonMapping); + } }); } diff --git a/src/main/java/com/pahimar/ee3/util/serialize/ItemStackSerializer.java b/src/main/java/com/pahimar/ee3/util/serialize/ItemStackSerializer.java index 427f29fe..3c71c0d7 100644 --- a/src/main/java/com/pahimar/ee3/util/serialize/ItemStackSerializer.java +++ b/src/main/java/com/pahimar/ee3/util/serialize/ItemStackSerializer.java @@ -73,10 +73,15 @@ public class ItemStackSerializer implements JsonSerializer, JsonDeser @Override public JsonElement serialize(ItemStack src, Type typeOfSrc, JsonSerializationContext context) { - if (src != null) { + if (src != null && src.getItem() != null) { JsonObject jsonObject = new JsonObject(); - jsonObject.addProperty(NAME, Item.itemRegistry.getNameForObject(src.getItem())); + if (Item.itemRegistry.getNameForObject(src.getItem()) != null) { + jsonObject.addProperty(NAME, Item.itemRegistry.getNameForObject(src.getItem())); + } + else { + return JsonNull.INSTANCE; + } if (src.getItemDamage() != 0) { jsonObject.addProperty(META_VALUE, src.getItemDamage()); @@ -89,6 +94,6 @@ public class ItemStackSerializer implements JsonSerializer, JsonDeser return jsonObject; } - return null; + return JsonNull.INSTANCE; } }