package hunternif.mc.atlas.ext; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import hunternif.mc.atlas.client.TextureSetConfig; import hunternif.mc.atlas.client.TextureSetMap; import hunternif.mc.atlas.util.AbstractJSONConfig; import hunternif.mc.atlas.util.Log; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import java.io.File; import java.util.Map.Entry; import java.util.PriorityQueue; import java.util.Queue; /** * Client-only config mapping tile names to texture sets. * <p>Must be loaded after {@link TextureSetConfig}!</p> * @author Hunternif */ @SideOnly(Side.CLIENT) public class ExtTileTextureConfig extends AbstractJSONConfig<ExtTileTextureMap> { private static final int VERSION = 1; private final TextureSetMap textureSetMap; public ExtTileTextureConfig(File file, TextureSetMap textureSetMap) { super(file); this.textureSetMap = textureSetMap; } @Override public int currentVersion() { return VERSION; } @Override protected void loadData(JsonObject json, ExtTileTextureMap data, int version) { for (Entry<String, JsonElement> entry : json.entrySet()) { String tileName = entry.getKey(); String textureName = entry.getValue().getAsString(); if (textureSetMap.isRegistered(textureName)) { data.setTexture(tileName, textureSetMap.getByName(textureName)); Log.info("Registered texture set %s for tile \"%s\"", textureName, tileName); } else { Log.warn("Unknown texture set %s for tile \"%s\"", textureName, tileName); } } } @Override protected void saveData(JsonObject json, ExtTileTextureMap data) { // Sort keys alphabetically: Queue<String> queue = new PriorityQueue<>(data.textureMap.keySet()); while (!queue.isEmpty()) { String tileName = queue.poll(); json.addProperty(tileName, data.textureMap.get(tileName).name); } } }