diff --git a/build.gradle b/build.gradle index ba1bf70..3dc4909 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { apply plugin: 'forge' -version = "0.3" +version = "0.4" group= "com.mordenkainen.equivalentenergistics" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "EquivalentEnergistics" diff --git a/src/main/java/com/mordenkainen/equivalentenergistics/EquivalentEnergistics.java b/src/main/java/com/mordenkainen/equivalentenergistics/EquivalentEnergistics.java index 4a65c76..be1b963 100644 --- a/src/main/java/com/mordenkainen/equivalentenergistics/EquivalentEnergistics.java +++ b/src/main/java/com/mordenkainen/equivalentenergistics/EquivalentEnergistics.java @@ -21,7 +21,6 @@ import cpw.mods.fml.common.event.FMLInterModComms; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import cpw.mods.fml.common.event.FMLServerStartingEvent; import cpw.mods.fml.common.registry.GameRegistry; import com.mordenkainen.equivalentenergistics.blocks.BlockEMCCondenser; @@ -38,7 +37,6 @@ import com.mordenkainen.equivalentenergistics.tiles.TileEMCCrafter; import com.mordenkainen.equivalentenergistics.util.EMCUtils; import com.mordenkainen.equivalentenergistics.util.EventHandlerModule; -import com.mordenkainen.equivalentenergistics.util.TransmutationNbt; @Mod(modid = Ref.MOD_ID, name = Ref.MOD_NAME, version = Ref.MOD_VERSION, dependencies = Ref.MOD_DEPENDENCIES) public class EquivalentEnergistics { @@ -59,20 +57,6 @@ public class EquivalentEnergistics { public static Block blockEMCCondenser; public static Block blockEMCCrafter; - - public static TransmutationNbt transmutations; - - @EventHandler - public void onServerStarting(FMLServerStartingEvent event) { - MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance(); - WorldServer worldServer = server.worldServers[0]; - - transmutations = (TransmutationNbt)worldServer.mapStorage.loadData(TransmutationNbt.class, "PETransmutations"); - if (transmutations == null) { - transmutations = new TransmutationNbt("PETransmutations"); - worldServer.mapStorage.setData("PETransmutations", transmutations); - } - } @EventHandler public void preInit(FMLPreInitializationEvent event) { @@ -82,6 +66,10 @@ public void preInit(FMLPreInitializationEvent event) { @EventHandler public void init(FMLInitializationEvent event) { + //if(!Loader.isModLoaded("ProjectE") && !Loader.isModLoaded("EE3")) { + proxy.unmetDependency(); + //} + itemEMCCrystal = new ItemEMCCrystal(); GameRegistry.registerItem(itemEMCCrystal, "EMCCrystal"); diff --git a/src/main/java/com/mordenkainen/equivalentenergistics/items/ItemEMCBook.java b/src/main/java/com/mordenkainen/equivalentenergistics/items/ItemEMCBook.java index 510f7e0..65804d0 100644 --- a/src/main/java/com/mordenkainen/equivalentenergistics/items/ItemEMCBook.java +++ b/src/main/java/com/mordenkainen/equivalentenergistics/items/ItemEMCBook.java @@ -8,10 +8,10 @@ import com.mordenkainen.equivalentenergistics.EquivalentEnergistics; import com.mordenkainen.equivalentenergistics.lib.Ref; -import com.mordenkainen.equivalentenergistics.util.TransmutationNbt; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import moze_intel.projecte.api.ProjectEAPI; import moze_intel.projecte.playerData.Transmutation; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; @@ -65,55 +65,10 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla } stackNBT.setString("Owner", player.getCommandSenderName()); stackNBT.setString("OwnerUUID", playerUUID); - ArrayList currentTransmutations = TransmutationNbt.getPlayerKnowledge(stackNBT.getString("OwnerUUID")); - ArrayList newTransmutations = getPlayerKnowledge(player); - boolean result = new HashSet(currentTransmutations).equals(new HashSet(newTransmutations)); - if(!result) { - TransmutationNbt.setPlayerKnowledge(playerUUID, newTransmutations); - EquivalentEnergistics.transmutations.markDirty(); - } player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("message.book.link"))); } return stack; } - - private ArrayList getPlayerKnowledge(EntityPlayer player) { - int methodType = 2; - Method gkMethod = null; - List tmpTransmutations = null; - ArrayList transmutations = new ArrayList(); - - try { - gkMethod = Transmutation.class.getDeclaredMethod("getKnowledge", new Class[] {String.class}); - methodType = 0; - } catch (Exception e) { - try { - gkMethod = Transmutation.class.getDeclaredMethod("getKnowledge", new Class[] {EntityPlayer.class}); - methodType = 1; - } catch (Exception e1) {} - } - - try { - switch(methodType){ - case 0: - tmpTransmutations = (List) gkMethod.invoke(null, new Object[] {player.getCommandSenderName()}); - break; - case 1: - tmpTransmutations = (List) gkMethod.invoke(null, new Object[] {player}); - break; - } - } catch (Exception e) {} - - if(tmpTransmutations != null) { - for(ItemStack currentItem : tmpTransmutations) { - if(currentItem.getItem() != EquivalentEnergistics.itemEMCCrystal) { - transmutations.add(currentItem); - } - } - } - - return transmutations; - } @SuppressWarnings({ "rawtypes", "unchecked" }) @Override diff --git a/src/main/java/com/mordenkainen/equivalentenergistics/lib/Ref.java b/src/main/java/com/mordenkainen/equivalentenergistics/lib/Ref.java index f453aed..d085e93 100644 --- a/src/main/java/com/mordenkainen/equivalentenergistics/lib/Ref.java +++ b/src/main/java/com/mordenkainen/equivalentenergistics/lib/Ref.java @@ -2,7 +2,7 @@ public final class Ref { public static final String MOD_ID = "equivalentenergistics"; - public static final String MOD_VERSION = "0.3"; + public static final String MOD_VERSION = "0.4"; public static final String MOD_NAME = "Equivalent Energistics"; public static final String MOD_DEPENDENCIES = "required-after:appliedenergistics2;after:EE3;after:ProjectE"; diff --git a/src/main/java/com/mordenkainen/equivalentenergistics/proxy/ClientProxy.java b/src/main/java/com/mordenkainen/equivalentenergistics/proxy/ClientProxy.java index b74d9a4..1b92cad 100644 --- a/src/main/java/com/mordenkainen/equivalentenergistics/proxy/ClientProxy.java +++ b/src/main/java/com/mordenkainen/equivalentenergistics/proxy/ClientProxy.java @@ -3,6 +3,7 @@ import com.mordenkainen.equivalentenergistics.render.BlockEMCCrafterRenderer; import com.mordenkainen.equivalentenergistics.render.TileEMCCrafterRenderer; import com.mordenkainen.equivalentenergistics.tiles.TileEMCCrafter; +import com.mordenkainen.equivalentenergistics.util.UnmetDependencyException; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; @@ -13,4 +14,8 @@ public void initRenderers() { EMCCrafterRenderer = RenderingRegistry.getNextAvailableRenderId(); RenderingRegistry.registerBlockHandler(new BlockEMCCrafterRenderer()); } + + public void unmetDependency() { + throw new UnmetDependencyException(); + } } diff --git a/src/main/java/com/mordenkainen/equivalentenergistics/proxy/CommonProxy.java b/src/main/java/com/mordenkainen/equivalentenergistics/proxy/CommonProxy.java index 1d6a347..43afb3e 100644 --- a/src/main/java/com/mordenkainen/equivalentenergistics/proxy/CommonProxy.java +++ b/src/main/java/com/mordenkainen/equivalentenergistics/proxy/CommonProxy.java @@ -4,4 +4,8 @@ public class CommonProxy { public int EMCCrafterRenderer; public void initRenderers() {} + + public void unmetDependency() { + throw new RuntimeException("Equivalent Energistics requires either Equivalent Exchange 3 or ProjectE to be installed!"); + } } diff --git a/src/main/java/com/mordenkainen/equivalentenergistics/tiles/TileEMCCondenser.java b/src/main/java/com/mordenkainen/equivalentenergistics/tiles/TileEMCCondenser.java index cc03016..d5ad2f1 100644 --- a/src/main/java/com/mordenkainen/equivalentenergistics/tiles/TileEMCCondenser.java +++ b/src/main/java/com/mordenkainen/equivalentenergistics/tiles/TileEMCCondenser.java @@ -102,9 +102,9 @@ public void onTick() { try { for(int i = 0; i < SLOT_COUNT; i++) { if(internalInventory.getStackInSlot(i) != null){ - if(EMCUtils.getInstance().hasEMC(internalInventory.getStackInSlot(i))) { - ItemStack testItem = internalInventory.getStackInSlot(i).copy(); - testItem.stackSize = 1; + ItemStack testItem = internalInventory.getStackInSlot(i).copy(); + testItem.stackSize = 1; + if(EMCUtils.getInstance().hasEMC(testItem) && EMCUtils.getInstance().getEnergyValue(testItem) > 0) { float itemEMC = EMCUtils.getInstance().getEnergyValue(testItem); int itemAvail = Math.min(ConfigManager.itemsPerTick, Math.min(internalInventory.getStackInSlot(i).stackSize, (int)Math.floor((Float.MAX_VALUE - currentEMC) / itemEMC))); internalInventory.decrStackSize(i, itemAvail); diff --git a/src/main/java/com/mordenkainen/equivalentenergistics/tiles/TileEMCCrafter.java b/src/main/java/com/mordenkainen/equivalentenergistics/tiles/TileEMCCrafter.java index df6c7c4..75f4032 100644 --- a/src/main/java/com/mordenkainen/equivalentenergistics/tiles/TileEMCCrafter.java +++ b/src/main/java/com/mordenkainen/equivalentenergistics/tiles/TileEMCCrafter.java @@ -173,16 +173,7 @@ public void setCurrentTome(ItemStack heldItem) { public void playerKnowledgeChange(UUID playerUUID) { if(currentTome != null) { - UUID tomeUUID = ItemHelper.getOwnerUUID(currentTome); - if(tomeUUID.equals(playerUUID)) { - stalePatterns = true; - } - } - } - - public void playerKnowledgeChange(String playerUUID) { - if(currentTome != null) { - String tomeUUID = currentTome.getTagCompound().getString("OwnerUUID"); + UUID tomeUUID = EMCUtils.getInstance().getTomeUUID(currentTome); if(tomeUUID.equals(playerUUID)) { stalePatterns = true; } diff --git a/src/main/java/com/mordenkainen/equivalentenergistics/util/EMCCraftingPattern.java b/src/main/java/com/mordenkainen/equivalentenergistics/util/EMCCraftingPattern.java index e62c939..d761cac 100644 --- a/src/main/java/com/mordenkainen/equivalentenergistics/util/EMCCraftingPattern.java +++ b/src/main/java/com/mordenkainen/equivalentenergistics/util/EMCCraftingPattern.java @@ -16,56 +16,93 @@ public EMCCraftingPattern(final ItemStack craftingResult) { } private void calculateContent(ItemStack craftingResult) { - if(!EMCUtils.getInstance().hasEMC(craftingResult)) { + if(!EMCUtils.getInstance().hasEMC(craftingResult) || EMCUtils.getInstance().getEnergyValue(craftingResult) <= 0) { valid = false; } else { float outputEMC = EMCUtils.getInstance().getEnergyValue(craftingResult); - float crystalEMC = EMCUtils.getInstance().getCrystalEMC(); - int tier0CrystalCount, tier1CrystalCount, tier2CrystalCount, itemCount; - tier1CrystalCount = tier2CrystalCount = 0; - if(outputEMC <= crystalEMC) { - tier0CrystalCount = 1; - itemCount = (int)Math.min(crystalEMC/outputEMC, 64); + float inputEMC = 0; + int numItems = 1; + int[] crystals = new int[] {0, 0, 0}; + if(outputEMC <= EMCUtils.getInstance().getCrystalEMC()) { + crystals[0] = 1; + numItems = (int)Math.min(EMCUtils.getInstance().getCrystalEMC()/outputEMC, 64); + outputEMC *= numItems; + inputEMC = EMCUtils.getInstance().getCrystalEMC(); } else { - itemCount = 1; - tier0CrystalCount = (int)Math.ceil(outputEMC/crystalEMC); + int maxTier = calcStartingTier(outputEMC); + float remainingEMC = outputEMC; + for(int i = maxTier; i >= 0; i--) { + crystals[i] = calcCrystals(remainingEMC, i); + remainingEMC = getOverflow(outputEMC, crystals); + if(remainingEMC <= 0) { + break; + } + if(i != 0 ) { + crystals[i]--; + remainingEMC = Math.abs(remainingEMC - EMCUtils.getInstance().getCrystalEMC(i)); + } + } + int pass = 0; + while(getTotalStacks(crystals) > 9 && pass < 2) { + if(crystals[pass] > 0) { + crystals[pass] = 0; + crystals[pass + 1]++; + } + pass++; + } + if(getTotalStacks(crystals) > 9) { + valid = false; + return; + } + for(int i = 0; i <= 2; i++) { + inputEMC += EMCUtils.getInstance().getCrystalEMC(i) * crystals[i]; + } } - this.outputEMC = outputEMC * itemCount; + ItemStack outputStack = craftingResult.copy(); - outputStack.stackSize = itemCount; + outputStack.stackSize = numItems; result = AEApi.instance().storage().createItemStack(outputStack); - if(tier0CrystalCount >= Math.pow(576, 2)) { - int numCrystals = (int)Math.floor(tier0CrystalCount/Math.pow(576, 2)); - tier2CrystalCount = numCrystals; - tier0CrystalCount -= numCrystals * Math.pow(576, 2); - } - if(tier0CrystalCount >= 576) { - int numCrystals = (int)Math.floor(tier0CrystalCount/576); - tier1CrystalCount = numCrystals; - tier0CrystalCount -= numCrystals * 576; - } - if(getStackCount(tier0CrystalCount) + getStackCount(tier1CrystalCount) + getStackCount(tier2CrystalCount) > 9) { - tier1CrystalCount++; - tier0CrystalCount=0; - } - inputEMC = crystalEMC * tier0CrystalCount + EMCUtils.getInstance().getCrystalEMC(1) * tier1CrystalCount + EMCUtils.getInstance().getCrystalEMC(2) * tier2CrystalCount; - - int lastItem = 0; - while(tier0CrystalCount > 0) { - ingredients[lastItem++] = AEApi.instance().storage().createItemStack(new ItemStack(EquivalentEnergistics.itemEMCCrystal, Math.min(64, tier0CrystalCount), 0)); - tier0CrystalCount -= Math.min(64, tier0CrystalCount); - } - while(tier1CrystalCount > 0) { - ingredients[lastItem++] = AEApi.instance().storage().createItemStack(new ItemStack(EquivalentEnergistics.itemEMCCrystal, Math.min(64, tier1CrystalCount), 1)); - tier1CrystalCount -= Math.min(64, tier1CrystalCount); - } - while(tier2CrystalCount > 0) { - ingredients[lastItem++] = AEApi.instance().storage().createItemStack(new ItemStack(EquivalentEnergistics.itemEMCCrystal, Math.min(64, tier2CrystalCount), 2)); - tier2CrystalCount -= Math.min(64, tier2CrystalCount); + int tier = 0; + for (int i = 0; i <= 8 && tier <= 2 && (crystals[0] > 0 || crystals[1] > 0 || crystals[2] > 0); i++) { + while (crystals[tier] <= 0) { + tier++; + } + ingredients[i] = AEApi.instance().storage().createItemStack(new ItemStack(EquivalentEnergistics.itemEMCCrystal, Math.min(64, crystals[tier]), tier)); + crystals[tier] -= ingredients[i].getItemStack().stackSize; } } } + + private int calcStartingTier(float emcValue) { + if(emcValue > EMCUtils.getInstance().getCrystalEMC(2)) { + return 2; + } + if(emcValue > EMCUtils.getInstance().getCrystalEMC(1)) { + return 1; + } + return 0; + } + + private int calcCrystals(float emcValue, int tier) { + return (int)Math.ceil(emcValue / EMCUtils.getInstance().getCrystalEMC(tier)); + } + + private float getOverflow(float targetEMC, int[]crystals) { + float crystalEMC = 0; + for(int i = 0; i <= 2; i++) { + crystalEMC += EMCUtils.getInstance().getCrystalEMC(i) * crystals[i]; + } + return crystalEMC - targetEMC; + } + + private int getTotalStacks(int[]crystals) { + int totalStacks = 0; + for(int i = 0; i <= 2; i++) { + totalStacks += getStackCount(crystals[i]); + } + return totalStacks; + } private int getStackCount(int numCrystals) { if(numCrystals > 0 && numCrystals < 64) { diff --git a/src/main/java/com/mordenkainen/equivalentenergistics/util/EMCUtils.java b/src/main/java/com/mordenkainen/equivalentenergistics/util/EMCUtils.java index 5830339..4a91ddb 100644 --- a/src/main/java/com/mordenkainen/equivalentenergistics/util/EMCUtils.java +++ b/src/main/java/com/mordenkainen/equivalentenergistics/util/EMCUtils.java @@ -5,10 +5,12 @@ import java.util.List; import java.util.Set; import java.util.TreeSet; +import java.util.UUID; import com.mordenkainen.equivalentenergistics.EquivalentEnergistics; import com.mordenkainen.equivalentenergistics.config.ConfigManager; import com.mordenkainen.equivalentenergistics.tiles.TileEMCCrafter; +import com.pahimar.ee3.api.exchange.EnergyValue; import com.pahimar.ee3.api.exchange.EnergyValueRegistryProxy; import com.pahimar.ee3.api.knowledge.AbilityRegistryProxy; import com.pahimar.ee3.api.knowledge.TransmutationKnowledgeRegistryProxy; @@ -16,9 +18,6 @@ import cpw.mods.fml.common.registry.GameRegistry; import moze_intel.projecte.api.ProjectEAPI; -import moze_intel.projecte.emc.EMCMapper; -import moze_intel.projecte.emc.SimpleStack; -import moze_intel.projecte.utils.EMCHelper; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -39,15 +38,16 @@ public boolean hasEMC(ItemStack itemStack) { if(ConfigManager.useEE3) { return EnergyValueRegistryProxy.hasEnergyValue(itemStack); } else { - return EMCHelper.doesItemHaveEmc(itemStack); + return ProjectEAPI.getEMCProxy().hasValue(itemStack); } } public float getEnergyValue(ItemStack itemStack) { if(ConfigManager.useEE3) { - return EnergyValueRegistryProxy.getEnergyValue(itemStack).getValue(); + EnergyValue val = EnergyValueRegistryProxy.getEnergyValue(itemStack); + return val == null ? 0 : val.getValue(); } else { - return EMCHelper.getEmcValue(itemStack); + return ProjectEAPI.getEMCProxy().getValue(itemStack); } } @@ -59,7 +59,7 @@ public float getCrystalEMC(int tier) { if(ConfigManager.useEE3) { return EnergyValueRegistryProxy.getEnergyValue(new ItemStack(EquivalentEnergistics.itemEMCCrystal, 1, tier)).getValue(); } else { - return EMCHelper.getEmcValue(new ItemStack(EquivalentEnergistics.itemEMCCrystal, 1, tier)); + return ProjectEAPI.getEMCProxy().getValue(new ItemStack(EquivalentEnergistics.itemEMCCrystal, 1, tier)); } } @@ -69,12 +69,12 @@ public ArrayList getTransmutations(TileEMCCrafter tile) { if(ConfigManager.useEE3) { tmpTransmutations.addAll(TransmutationKnowledgeRegistryProxy.getPlayerKnownTransmutations(ItemHelper.getOwnerUUID(tile.getCurrentTome()))); } else { - tmpTransmutations.addAll(TransmutationNbt.getPlayerKnowledge(tile.getCurrentTome().getTagCompound().getString("OwnerUUID"))); + tmpTransmutations.addAll(ProjectEAPI.getTransmutationProxy().getKnowledge(UUID.fromString(tile.getCurrentTome().getTagCompound().getString("OwnerUUID")))); } if(tmpTransmutations != null) { for(ItemStack currentItem : tmpTransmutations) { - if(currentItem.getItem() != EquivalentEnergistics.itemEMCCrystal) { + if(currentItem != null && currentItem.getItem() != EquivalentEnergistics.itemEMCCrystal) { transmutations.add(currentItem); } } @@ -99,9 +99,17 @@ public void setCrystalEMC(float emc) { EnergyValueRegistryProxy.addPreAssignedEnergyValue(new ItemStack(EquivalentEnergistics.itemEMCCrystal, 1, 1), emc * 576); EnergyValueRegistryProxy.addPreAssignedEnergyValue(new ItemStack(EquivalentEnergistics.itemEMCCrystal, 1, 2), (float)(emc * Math.pow(576, 2))); } else { - ProjectEAPI.registerCustomEMC(new ItemStack(EquivalentEnergistics.itemEMCCrystal, 1, 0), (int)emc); - ProjectEAPI.registerCustomEMC(new ItemStack(EquivalentEnergistics.itemEMCCrystal, 1, 1), (int)emc * 576); - ProjectEAPI.registerCustomEMC(new ItemStack(EquivalentEnergistics.itemEMCCrystal, 1, 2), (int)(emc * Math.pow(576, 2))); + ProjectEAPI.getEMCProxy().registerCustomEMC(new ItemStack(EquivalentEnergistics.itemEMCCrystal, 1, 0), (int)emc); + ProjectEAPI.getEMCProxy().registerCustomEMC(new ItemStack(EquivalentEnergistics.itemEMCCrystal, 1, 1), (int)emc * 576); + ProjectEAPI.getEMCProxy().registerCustomEMC(new ItemStack(EquivalentEnergistics.itemEMCCrystal, 1, 2), (int)(emc * Math.pow(576, 2))); + } + } + + public UUID getTomeUUID(ItemStack currentTome) { + if(ConfigManager.useEE3) { + return ItemHelper.getOwnerUUID(currentTome); + } else { + return UUID.fromString(currentTome.getTagCompound().getString("OwnerUUID")); } } diff --git a/src/main/java/com/mordenkainen/equivalentenergistics/util/EventHandlerModule.java b/src/main/java/com/mordenkainen/equivalentenergistics/util/EventHandlerModule.java index cc43296..a77b5d5 100644 --- a/src/main/java/com/mordenkainen/equivalentenergistics/util/EventHandlerModule.java +++ b/src/main/java/com/mordenkainen/equivalentenergistics/util/EventHandlerModule.java @@ -10,15 +10,15 @@ import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import moze_intel.projecte.api.event.EMCRemapEvent; +import moze_intel.projecte.api.event.PlayerKnowledgeChangeEvent; import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.MinecraftForge; public class EventHandlerModule { public EventHandlerModule() { - if(ConfigManager.useEE3) { - MinecraftForge.EVENT_BUS.register(this); - } + MinecraftForge.EVENT_BUS.register(this); } @SubscribeEvent @@ -30,6 +30,15 @@ public void onPlayerKnowledgeChange(PlayerKnowledgeEvent event) { } } + @SubscribeEvent + public void onPlayerKnowledgeChange(PlayerKnowledgeChangeEvent event) { + if(FMLCommonHandler.instance().getEffectiveSide().isServer()) { + for(TileEMCCrafter crafter : TileEMCCrafter.crafterTiles) { + crafter.playerKnowledgeChange(event.playerUUID); + } + } + } + @SubscribeEvent public void onEnergyValueChange(EnergyValueEvent event) { if(FMLCommonHandler.instance().getEffectiveSide().isServer()) { @@ -38,4 +47,13 @@ public void onEnergyValueChange(EnergyValueEvent event) { } } } + + @SubscribeEvent + public void onEnergyValueChange(EMCRemapEvent event) { + if(FMLCommonHandler.instance().getEffectiveSide().isServer()) { + for(TileEMCCrafter crafter : TileEMCCrafter.crafterTiles) { + crafter.energyValueEvent(); + } + } + } } diff --git a/src/main/java/com/mordenkainen/equivalentenergistics/util/TransmutationNbt.java b/src/main/java/com/mordenkainen/equivalentenergistics/util/TransmutationNbt.java deleted file mode 100644 index 492c478..0000000 --- a/src/main/java/com/mordenkainen/equivalentenergistics/util/TransmutationNbt.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.mordenkainen.equivalentenergistics.util; - -import java.util.ArrayList; -import java.util.HashMap; - -import com.mordenkainen.equivalentenergistics.tiles.TileEMCCrafter; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.WorldSavedData; - -public class TransmutationNbt extends WorldSavedData { - - private static HashMap> transmutations = new HashMap>(); - - public TransmutationNbt(String name) { - super(name); - } - - @Override - public void readFromNBT(NBTTagCompound comp) { - int playerCount = comp.getInteger("NumRecords"); - for(int playerNum = 0; playerNum < playerCount; playerNum++) { - ArrayList playerData = new ArrayList(); - NBTTagCompound playerNBT = (NBTTagCompound) comp.getTag("Player-" + playerNum); - int stackCount = playerNBT.getInteger("StackCount"); - for(int currentStack = 0; currentStack < stackCount; currentStack++) { - ItemStack newStack = ItemStack.loadItemStackFromNBT((NBTTagCompound) playerNBT.getTag("Stack" + currentStack)); - playerData.add(newStack); - } - transmutations.put(playerNBT.getString("UUID"), playerData); - } - - } - - @Override - public void writeToNBT(NBTTagCompound comp) { - int playerCount = 0; - for(String player : transmutations.keySet()) { - NBTTagCompound playerNBT = new NBTTagCompound(); - playerNBT.setString("UUID", player); - ArrayList transmutationData = transmutations.get(player); - int currentStack = 0; - for(ItemStack stack : transmutationData) { - NBTTagCompound stackNBT = new NBTTagCompound(); - stack.writeToNBT(stackNBT); - playerNBT.setTag("Stack" + currentStack++, stackNBT); - } - playerNBT.setInteger("StackCount", currentStack); - comp.setTag("Player-" + playerCount++, playerNBT); - } - comp.setInteger("NumRecords", playerCount); - } - - public static void setPlayerKnowledge(String UUID, ArrayList knowledge) { - transmutations.put(UUID, knowledge); - for(TileEMCCrafter crafter : TileEMCCrafter.crafterTiles) { - crafter.playerKnowledgeChange(UUID); - } - } - - public static ArrayList getPlayerKnowledge(String UUID) { - if(transmutations.containsKey(UUID)) { - return transmutations.get(UUID); - } else { - return new ArrayList(); - } - } - -} diff --git a/src/main/java/com/mordenkainen/equivalentenergistics/util/UnmetDependencyException.java b/src/main/java/com/mordenkainen/equivalentenergistics/util/UnmetDependencyException.java new file mode 100644 index 0000000..0f8a750 --- /dev/null +++ b/src/main/java/com/mordenkainen/equivalentenergistics/util/UnmetDependencyException.java @@ -0,0 +1,26 @@ +package com.mordenkainen.equivalentenergistics.util; + +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.GuiErrorScreen; +import cpw.mods.fml.client.CustomModLoadingErrorDisplayException; + +public class UnmetDependencyException extends CustomModLoadingErrorDisplayException { + private final String[] errorMessage; + + public UnmetDependencyException() { + errorMessage = "Equivilant Energistics has stopped Minecraft Loading.\nA required dependency was not found.\nEither Equivalent Exchange 3 or ProjectE must be installed!".split("\n"); + } + + @Override + public void initGui(GuiErrorScreen errorScreen, FontRenderer fontRenderer) {} + + @Override + public void drawScreen(GuiErrorScreen errorScreen, FontRenderer fontRenderer, int mouseRelX, int mouseRelY, float tickTime) { + for (int i = 0; i < errorMessage.length; i++) + { + errorScreen.drawCenteredString(fontRenderer, errorMessage[i], errorScreen.width / 2, (errorScreen.height - fontRenderer.FONT_HEIGHT * errorMessage.length) / 2 + + fontRenderer.FONT_HEIGHT + 10 * i, 0xffaabbcc); + } + } + +}