
- bump version to v0.4.0 - add theme support - add high contrast and light themes - remove settingcommand (broken) - add icon variants for certain themes - remove text shadows from interfaces other than the hud
204 lines
8.2 KiB
Java
204 lines
8.2 KiB
Java
package me.kawaiizenbo.moonlight;
|
|
|
|
import net.fabricmc.api.ModInitializer;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import me.kawaiizenbo.moonlight.module.ModuleManager;
|
|
import me.kawaiizenbo.moonlight.module.Module;
|
|
import me.kawaiizenbo.moonlight.module.settings.BooleanSetting;
|
|
import me.kawaiizenbo.moonlight.module.settings.DoubleSetting;
|
|
import me.kawaiizenbo.moonlight.module.settings.IndexSetting;
|
|
import me.kawaiizenbo.moonlight.module.settings.KeycodeSetting;
|
|
import me.kawaiizenbo.moonlight.module.settings.Setting;
|
|
import me.kawaiizenbo.moonlight.module.settings.StringSetting;
|
|
import me.kawaiizenbo.moonlight.theme.Theme;
|
|
import me.kawaiizenbo.moonlight.ui.clickgui.CategoryPane;
|
|
import me.kawaiizenbo.moonlight.ui.clickgui.ClickGUIScreen;
|
|
import me.kawaiizenbo.moonlight.ui.hud.HUDModule;
|
|
import me.kawaiizenbo.moonlight.ui.hud.HUDModuleManager;
|
|
import me.kawaiizenbo.moonlight.util.ColorUtils;
|
|
|
|
public class Moonlight implements ModInitializer
|
|
{
|
|
public static final Moonlight INSTANCE = new Moonlight();
|
|
public static final Logger LOGGER = LoggerFactory.getLogger("Moonlight");
|
|
public static final String clientTag = ColorUtils.aqua + "Moonlight Meadows";
|
|
public static final String versionTag = ColorUtils.magenta + "v0.4.0";
|
|
public static Theme THEME = Theme.DARK;
|
|
public static int THEME_IDX = 2;
|
|
public static Config CONFIG = new Config();
|
|
|
|
@Override
|
|
public void onInitialize()
|
|
{
|
|
LOGGER.info("Moonlight loading...");
|
|
loadConfig();
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
public void loadConfig()
|
|
{
|
|
try
|
|
{
|
|
LOGGER.info("Loading config...");
|
|
CONFIG.load();
|
|
THEME_IDX = ((Double)CONFIG.config.get("theme")).intValue();
|
|
THEME = Theme.THEME_LIST[THEME_IDX];
|
|
for (Module m : ModuleManager.INSTANCE.modules)
|
|
{
|
|
m.enabled = (boolean)((Map<String, Object>)((Map<String, Object>)CONFIG.config.get("modules")).get(m.name)).get("enabled");
|
|
for (Setting s : m.settings)
|
|
{
|
|
if (s instanceof BooleanSetting)
|
|
{
|
|
((BooleanSetting)s).value = (boolean)((Map<String, Object>)((Map<String, Object>)((Map<String, Object>)CONFIG.config.get("modules")).get(m.name)).get("settings")).get(s.name);
|
|
}
|
|
else if (s instanceof DoubleSetting)
|
|
{
|
|
((DoubleSetting)s).value = (Double)((Map<String, Object>)((Map<String, Object>)((Map<String, Object>)CONFIG.config.get("modules")).get(m.name)).get("settings")).get(s.name);
|
|
}
|
|
else if (s instanceof StringSetting)
|
|
{
|
|
((StringSetting)s).value = (String)((Map<String, Object>)((Map<String, Object>)((Map<String, Object>)CONFIG.config.get("modules")).get(m.name)).get("settings")).get(s.name);
|
|
}
|
|
else if (s instanceof KeycodeSetting)
|
|
{
|
|
((KeycodeSetting)s).value = ((Double)((Map<String, Object>)((Map<String, Object>)((Map<String, Object>)CONFIG.config.get("modules")).get(m.name)).get("settings")).get(s.name)).intValue();
|
|
}
|
|
else if (s instanceof IndexSetting)
|
|
{
|
|
((IndexSetting)s).index = ((Double)((Map<String, Object>)((Map<String, Object>)((Map<String, Object>)CONFIG.config.get("modules")).get(m.name)).get("settings")).get(s.name)).intValue();
|
|
}
|
|
}
|
|
}
|
|
for (HUDModule m : HUDModuleManager.INSTANCE.modules)
|
|
{
|
|
m.enabled = (boolean)((Map<String, Object>)((Map<String, Object>)CONFIG.config.get("hud")).get(m.name)).get("enabled");
|
|
m.x = ((Double)((Map<String, Object>)((Map<String, Object>)CONFIG.config.get("hud")).get(m.name)).get("x")).intValue();
|
|
m.y = ((Double)((Map<String, Object>)((Map<String, Object>)CONFIG.config.get("hud")).get(m.name)).get("y")).intValue();
|
|
for (Setting s : m.settings)
|
|
{
|
|
if (s instanceof BooleanSetting)
|
|
{
|
|
((BooleanSetting)s).value = (boolean)((Map<String, Object>)((Map<String, Object>)((Map<String, Object>)CONFIG.config.get("hud")).get(m.name)).get("settings")).get(s.name);
|
|
}
|
|
else if (s instanceof DoubleSetting)
|
|
{
|
|
((DoubleSetting)s).value = (Double)((Map<String, Object>)((Map<String, Object>)((Map<String, Object>)CONFIG.config.get("hud")).get(m.name)).get("settings")).get(s.name);
|
|
}
|
|
else if (s instanceof StringSetting)
|
|
{
|
|
((StringSetting)s).value = (String)((Map<String, Object>)((Map<String, Object>)((Map<String, Object>)CONFIG.config.get("hud")).get(m.name)).get("settings")).get(s.name);
|
|
}
|
|
else if (s instanceof KeycodeSetting)
|
|
{
|
|
((KeycodeSetting)s).value = ((Double)((Map<String, Object>)((Map<String, Object>)((Map<String, Object>)CONFIG.config.get("hud")).get(m.name)).get("settings")).get(s.name)).intValue();
|
|
}
|
|
else if (s instanceof IndexSetting)
|
|
{
|
|
((IndexSetting)s).index = ((Double)((Map<String, Object>)((Map<String, Object>)((Map<String, Object>)CONFIG.config.get("hud")).get(m.name)).get("settings")).get(s.name)).intValue();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch(Exception e)
|
|
{
|
|
LOGGER.warn("Config Error: " + e.getMessage());
|
|
LOGGER.info("Loading default config...");
|
|
CONFIG.loadDefaultConfig();
|
|
CONFIG.save();
|
|
}
|
|
}
|
|
|
|
public void saveConfig()
|
|
{
|
|
LOGGER.info("Saving config...");
|
|
CONFIG.config.put("theme", THEME_IDX);
|
|
Map<String, Object> mi = new HashMap<>();
|
|
for (Module m : ModuleManager.INSTANCE.modules)
|
|
{
|
|
Map<String, Object> mo = new HashMap<>();
|
|
mo.put("enabled", m.enabled);
|
|
Map<String, Object> ms = new HashMap<>();
|
|
for (Setting s : m.settings)
|
|
{
|
|
if (s instanceof BooleanSetting)
|
|
{
|
|
ms.put(s.name, ((BooleanSetting)s).value);
|
|
}
|
|
else if (s instanceof DoubleSetting)
|
|
{
|
|
ms.put(s.name, ((DoubleSetting)s).value);
|
|
}
|
|
else if (s instanceof StringSetting)
|
|
{
|
|
ms.put(s.name, ((StringSetting)s).value);
|
|
}
|
|
else if (s instanceof KeycodeSetting)
|
|
{
|
|
ms.put(s.name, ((KeycodeSetting)s).value);
|
|
}
|
|
else if (s instanceof IndexSetting)
|
|
{
|
|
ms.put(s.name, ((IndexSetting)s).index);
|
|
}
|
|
}
|
|
mo.put("settings", ms);
|
|
mi.put(m.name, mo);
|
|
}
|
|
CONFIG.config.put("modules", mi);
|
|
|
|
Map<String, Object> hi = new HashMap<>();
|
|
for (HUDModule h : HUDModuleManager.INSTANCE.modules)
|
|
{
|
|
Map<String, Object> ho = new HashMap<>();
|
|
ho.put("enabled", h.enabled);
|
|
Map<String, Object> hs = new HashMap<>();
|
|
for (Setting s : h.settings)
|
|
{
|
|
if (s instanceof BooleanSetting)
|
|
{
|
|
hs.put(s.name, ((BooleanSetting)s).value);
|
|
}
|
|
else if (s instanceof DoubleSetting)
|
|
{
|
|
hs.put(s.name, ((DoubleSetting)s).value);
|
|
}
|
|
else if (s instanceof StringSetting)
|
|
{
|
|
hs.put(s.name, ((StringSetting)s).value);
|
|
}
|
|
else if (s instanceof KeycodeSetting)
|
|
{
|
|
hs.put(s.name, ((KeycodeSetting)s).value);
|
|
}
|
|
else if (s instanceof IndexSetting)
|
|
{
|
|
hs.put(s.name, ((IndexSetting)s).index);
|
|
}
|
|
}
|
|
ho.put("settings", hs);
|
|
ho.put("x", h.x);
|
|
ho.put("y", h.y);
|
|
hi.put(h.name, ho);
|
|
}
|
|
CONFIG.config.put("hud", hi);
|
|
|
|
Map<String, Object> pi = new HashMap<>();
|
|
for (CategoryPane c : ClickGUIScreen.INSTANCE.categoryPanes)
|
|
{
|
|
Map<String, Object> po = new HashMap<>();
|
|
po.put("x", c.x);
|
|
po.put("y", c.y);
|
|
po.put("collapsed", c.collapsed);
|
|
pi.put(c.category.name, po);
|
|
}
|
|
CONFIG.config.put("panes", pi);
|
|
CONFIG.save();
|
|
}
|
|
}
|