More broke stuff

This commit is contained in:
Pahimar 2015-05-02 14:07:01 -04:00
parent 34cda981c0
commit 87e1f9fb1a
4 changed files with 64 additions and 60 deletions

View file

@ -136,8 +136,8 @@ public class GuiTransmutationTablet extends GuiBase
protected void drawGuiContainerForegroundLayer(int x, int y) protected void drawGuiContainerForegroundLayer(int x, int y)
{ {
super.drawGuiContainerForegroundLayer(x, y); super.drawGuiContainerForegroundLayer(x, y);
fontRendererObj.drawString(String.format("%s:", StatCollector.translateToLocal(Messages.ENERGY_VALUE)), 8, 140, Integer.parseInt(Colors.PURE_WHITE, 16)); fontRendererObj.drawString(String.format("%s:", StatCollector.translateToLocal(Messages.ENERGY_VALUE)), 10, 142, Integer.parseInt(Colors.PURE_WHITE, 16));
fontRendererObj.drawString(String.format("%s", energyValueDecimalFormat.format(tileEntityTransmutationTablet.getAvailableEnergyValue().getValue())), 8, 150, Integer.parseInt(Colors.PURE_WHITE, 16)); fontRendererObj.drawString(String.format("%s", energyValueDecimalFormat.format(tileEntityTransmutationTablet.getAvailableEnergyValue().getValue())), 10, 152, Integer.parseInt(Colors.PURE_WHITE, 16));
} }
@Override @Override

View file

@ -10,7 +10,9 @@ import com.pahimar.ee3.recipe.RecipeRegistry;
import com.pahimar.ee3.reference.Files; import com.pahimar.ee3.reference.Files;
import com.pahimar.ee3.reference.Reference; import com.pahimar.ee3.reference.Reference;
import com.pahimar.ee3.reference.Settings; import com.pahimar.ee3.reference.Settings;
import com.pahimar.ee3.util.*; import com.pahimar.ee3.util.EnergyValueHelper;
import com.pahimar.ee3.util.LogHelper;
import com.pahimar.ee3.util.SerializationHelper;
import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLCommonHandler;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -23,7 +25,7 @@ import java.io.File;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.*; import java.util.*;
public class EnergyValueRegistry implements INBTTaggable, JsonSerializer<EnergyValueRegistry>, JsonDeserializer<EnergyValueRegistry> public class EnergyValueRegistry implements JsonSerializer<EnergyValueRegistry>, JsonDeserializer<EnergyValueRegistry>
{ {
private static final Gson jsonSerializer = (new GsonBuilder()).registerTypeAdapter(EnergyValueRegistry.class, new EnergyValueRegistry()).registerTypeAdapter(EnergyValueStackMapping.class, new EnergyValueStackMapping()).create(); private static final Gson jsonSerializer = (new GsonBuilder()).registerTypeAdapter(EnergyValueRegistry.class, new EnergyValueRegistry()).registerTypeAdapter(EnergyValueStackMapping.class, new EnergyValueStackMapping()).create();
private static final Gson prettyJsonSerializer = (new GsonBuilder()).setPrettyPrinting().registerTypeAdapter(EnergyValueRegistry.class, new EnergyValueRegistry()).registerTypeAdapter(EnergyValueStackMapping.class, new EnergyValueStackMapping()).create(); private static final Gson prettyJsonSerializer = (new GsonBuilder()).setPrettyPrinting().registerTypeAdapter(EnergyValueRegistry.class, new EnergyValueRegistry()).registerTypeAdapter(EnergyValueStackMapping.class, new EnergyValueStackMapping()).create();
@ -35,8 +37,6 @@ public class EnergyValueRegistry implements INBTTaggable, JsonSerializer<EnergyV
private ImmutableSortedMap<WrappedStack, EnergyValue> stackMappings; private ImmutableSortedMap<WrappedStack, EnergyValue> stackMappings;
private ImmutableSortedMap<EnergyValue, List<WrappedStack>> valueMappings; private ImmutableSortedMap<EnergyValue, List<WrappedStack>> valueMappings;
private Set<ItemStack> allItemStacksWithValues = new TreeSet<ItemStack>(ItemHelper.idComparator);
private EnergyValueRegistry() private EnergyValueRegistry()
{ {
} }
@ -585,7 +585,6 @@ public class EnergyValueRegistry implements INBTTaggable, JsonSerializer<EnergyV
return stacksInRange; return stacksInRange;
} }
@Override
public void readFromNBT(NBTTagCompound nbtTagCompound) public void readFromNBT(NBTTagCompound nbtTagCompound)
{ {
if (nbtTagCompound != null && nbtTagCompound.hasKey("stackMappingList")) if (nbtTagCompound != null && nbtTagCompound.hasKey("stackMappingList"))
@ -615,7 +614,6 @@ public class EnergyValueRegistry implements INBTTaggable, JsonSerializer<EnergyV
} }
} }
@Override
public void writeToNBT(NBTTagCompound nbtTagCompound) public void writeToNBT(NBTTagCompound nbtTagCompound)
{ {
NBTTagList stackMappingTagList = new NBTTagList(); NBTTagList stackMappingTagList = new NBTTagList();
@ -633,12 +631,6 @@ public class EnergyValueRegistry implements INBTTaggable, JsonSerializer<EnergyV
nbtTagCompound.setString("modListMD5", SerializationHelper.getModListMD5()); nbtTagCompound.setString("modListMD5", SerializationHelper.getModListMD5());
} }
@Override
public String getTagLabel()
{
return "EnergyValueRegistry";
}
public void setEnergyValue(WrappedStack wrappedStack, EnergyValue energyValue) public void setEnergyValue(WrappedStack wrappedStack, EnergyValue energyValue)
{ {
if (wrappedStack != null && energyValue != null && Float.compare(energyValue.getValue(), 0f) > 0) if (wrappedStack != null && energyValue != null && Float.compare(energyValue.getValue(), 0f) > 0)
@ -714,21 +706,9 @@ public class EnergyValueRegistry implements INBTTaggable, JsonSerializer<EnergyV
if (shouldRegenNextRestart) if (shouldRegenNextRestart)
{ {
File staticEnergyValuesFile = new File(energyValuesDataDirectory, Files.STATIC_ENERGY_VALUES);
File staticEnergyValuesJsonFile = new File(energyValuesDataDirectory, Files.STATIC_ENERGY_VALUES_JSON); File staticEnergyValuesJsonFile = new File(energyValuesDataDirectory, Files.STATIC_ENERGY_VALUES_JSON);
File md5EnergyValuesFile = new File(energyValuesDataDirectory, SerializationHelper.getModListMD5() + ".dat");
File md5EnergyValuesJsonFile = new File(energyValuesDataDirectory, SerializationHelper.getModListMD5() + ".json"); File md5EnergyValuesJsonFile = new File(energyValuesDataDirectory, SerializationHelper.getModListMD5() + ".json");
// NBT
if (staticEnergyValuesFile.exists())
{
staticEnergyValuesFile.delete();
}
if (md5EnergyValuesFile.exists())
{
md5EnergyValuesFile.delete();
}
// JSON // JSON
if (staticEnergyValuesJsonFile.exists()) if (staticEnergyValuesJsonFile.exists())
{ {
@ -743,58 +723,43 @@ public class EnergyValueRegistry implements INBTTaggable, JsonSerializer<EnergyV
} }
else else
{ {
// SerializationHelper.writeNBTToFile(energyValuesDataDirectory, Files.STATIC_ENERGY_VALUES, this); SerializationHelper.compressEnergyValueStackMapToFile(new File(energyValuesDataDirectory, Files.STATIC_ENERGY_VALUES_JSON), energyValueRegistry.stackMappings);
SerializationHelper.compressEnergyValueRegistryToFile(new File(energyValuesDataDirectory, Files.STATIC_ENERGY_VALUES)); SerializationHelper.compressEnergyValueStackMapToFile(new File(energyValuesDataDirectory, SerializationHelper.getModListMD5() + ".json.gz"), energyValueRegistry.stackMappings);
SerializationHelper.writeNBTToFile(energyValuesDataDirectory, SerializationHelper.getModListMD5() + ".dat", this);
SerializationHelper.writeEnergyValueStackMapToJsonFile(new File(energyValuesDataDirectory, Files.STATIC_ENERGY_VALUES_JSON), energyValueRegistry.stackMappings);
SerializationHelper.writeEnergyValueStackMapToJsonFile(new File(energyValuesDataDirectory, SerializationHelper.getModListMD5() + ".json"), energyValueRegistry.stackMappings);
} }
} }
public boolean loadEnergyValueRegistryFromFile() public boolean loadEnergyValueRegistryFromFile()
{ {
// TODO Come back here
File energyValuesDataDirectory = new File(FMLCommonHandler.instance().getMinecraftServerInstance().getEntityWorld().getSaveHandler().getWorldDirectory(), "data" + File.separator + Reference.LOWERCASE_MOD_ID + File.separator + "energyvalues"); File energyValuesDataDirectory = new File(FMLCommonHandler.instance().getMinecraftServerInstance().getEntityWorld().getSaveHandler().getWorldDirectory(), "data" + File.separator + Reference.LOWERCASE_MOD_ID + File.separator + "energyvalues");
energyValuesDataDirectory.mkdirs(); energyValuesDataDirectory.mkdirs();
File staticEnergyValuesFile = new File(energyValuesDataDirectory, Files.STATIC_ENERGY_VALUES); File staticEnergyValuesFile = new File(energyValuesDataDirectory, Files.STATIC_ENERGY_VALUES_JSON);
File md5EnergyValuesFile = new File(energyValuesDataDirectory, SerializationHelper.getModListMD5() + ".dat"); File md5EnergyValuesFile = new File(energyValuesDataDirectory, SerializationHelper.getModListMD5() + ".json.gz");
File staticEnergyValuesJsonFile = new File(energyValuesDataDirectory, Files.STATIC_ENERGY_VALUES_JSON); Map<WrappedStack, EnergyValue> stackValueMap = null;
File md5EnergyValuesJsonFile = new File(energyValuesDataDirectory, SerializationHelper.getModListMD5() + ".json");
NBTTagCompound nbtTagCompound = null;
// TODO Re-enable this once the NPE related to mod changes in the serialized value file bug is resolved
// if (Settings.DynamicEnergyValueGeneration.regenerateEnergyValuesWhen.equalsIgnoreCase("Never"))
// {
// if (staticEnergyValuesFile.exists())
// {
// LogHelper.info("Attempting to load energy values from file: " + staticEnergyValuesFile.getAbsolutePath());
// nbtTagCompound = SerializationHelper.readNBTFromFile(staticEnergyValuesFile);
// }
// else if (md5EnergyValuesFile.exists())
// {
// LogHelper.info("Attempting to load energy values from file: " + md5EnergyValuesFile.getAbsolutePath());
// nbtTagCompound = SerializationHelper.readNBTFromFile(md5EnergyValuesFile);
// }
//
// }
// else if (md5EnergyValuesFile.exists())
if (!Settings.DynamicEnergyValueGeneration.regenerateEnergyValuesWhen.equalsIgnoreCase("Always")) if (!Settings.DynamicEnergyValueGeneration.regenerateEnergyValuesWhen.equalsIgnoreCase("Always"))
{ {
if (md5EnergyValuesFile.exists()) if (md5EnergyValuesFile.exists())
{ {
LogHelper.info("Attempting to load energy values from file: " + md5EnergyValuesFile.getAbsolutePath()); LogHelper.info("Attempting to load energy values from file: " + md5EnergyValuesFile.getAbsolutePath());
nbtTagCompound = SerializationHelper.readNBTFromFile(md5EnergyValuesFile); stackValueMap = SerializationHelper.decompressEnergyValueStackMapFromFile(md5EnergyValuesFile);
} }
if (nbtTagCompound != null) if (staticEnergyValuesFile.exists())
{
LogHelper.info("Attempting to load energy values from file: " + staticEnergyValuesFile.getAbsolutePath());
stackValueMap = SerializationHelper.decompressEnergyValueStackMapFromFile(staticEnergyValuesFile);
}
if (stackValueMap != null)
{ {
energyValueRegistry.readFromNBT(nbtTagCompound);
LogHelper.info("Successfully loaded energy values from file"); LogHelper.info("Successfully loaded energy values from file");
return true; for (WrappedStack wrappedStack : stackValueMap.keySet())
{
LogHelper.info(String.format("Stack: %s, Value: %s", wrappedStack, stackValueMap.get(wrappedStack)));
}
return false;
} }
else else
{ {

View file

@ -6,6 +6,5 @@ public class Files
public static final String POST_ASSIGNED_ENERGY_VALUES = "post-assigned-energy-values.json"; public static final String POST_ASSIGNED_ENERGY_VALUES = "post-assigned-energy-values.json";
public static final String TEMPLATE_JSON_FILE = "template.json"; public static final String TEMPLATE_JSON_FILE = "template.json";
public static final String ABILITIES_JSON_FILE = "abilities.json"; public static final String ABILITIES_JSON_FILE = "abilities.json";
public static final String STATIC_ENERGY_VALUES = "energy-values.dat";
public static final String STATIC_ENERGY_VALUES_JSON = "energy-values.json.gz"; public static final String STATIC_ENERGY_VALUES_JSON = "energy-values.json.gz";
} }

View file

@ -1,5 +1,6 @@
package com.pahimar.ee3.util; package com.pahimar.ee3.util;
import com.google.common.io.Files;
import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter; import com.google.gson.stream.JsonWriter;
import com.pahimar.ee3.api.EnergyValue; import com.pahimar.ee3.api.EnergyValue;
@ -287,4 +288,43 @@ public class SerializationHelper
e.printStackTrace(); e.printStackTrace();
} }
} }
public static Map<WrappedStack, EnergyValue> decompressEnergyValueStackMapFromFile(String fileName)
{
File energyValuesDataDirectory = new File(FMLCommonHandler.instance().getMinecraftServerInstance().getEntityWorld().getSaveHandler().getWorldDirectory(), "data" + File.separator + Reference.LOWERCASE_MOD_ID + File.separator + "energyvalues");
return decompressEnergyValueStackMapFromFile(new File(energyValuesDataDirectory, fileName));
}
public static Map<WrappedStack, EnergyValue> decompressEnergyValueStackMapFromFile(File file)
{
Map<WrappedStack, EnergyValue> energyValueStackMap = new TreeMap<WrappedStack, EnergyValue>();
try
{
String jsonEnergyValueStackMap = CompressionHelper.decompressStringFromByteArray(Files.toByteArray(file));
JsonReader jsonReader = new JsonReader(new StringReader(jsonEnergyValueStackMap));
jsonReader.beginArray();
while (jsonReader.hasNext())
{
EnergyValueStackMapping energyValueStackMapping = EnergyValueStackMapping.jsonSerializer.fromJson(jsonReader, EnergyValueStackMapping.class);
if (energyValueStackMapping != null)
{
energyValueStackMap.put(energyValueStackMapping.wrappedStack, energyValueStackMapping.energyValue);
}
}
jsonReader.endArray();
jsonReader.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return energyValueStackMap;
}
} }