/* * Copyright (C) 2017 - 2019 | Wurst-Imperium | All rights reserved. * * This source code is subject to the terms of the GNU General Public * License, version 3. If a copy of the GPL was not distributed with this * file, You can obtain one at: https://www.gnu.org/licenses/gpl-3.0.txt */ package net.wurstclient.forge; import java.awt.Dimension; import java.awt.Toolkit; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import net.minecraft.client.Minecraft; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.Mod.Instance; import net.minecraftforge.fml.common.asm.transformers.deobf.FMLDeobfuscatingRemapper; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.relauncher.Side; import net.wurstclient.forge.analytics.JGoogleAnalyticsTracker; import net.wurstclient.forge.clickgui.ClickGui; import net.wurstclient.forge.compatibility.WMinecraft; import net.wurstclient.forge.update.WurstUpdater; @Mod(modid = ForgeWurst.MODID, version = ForgeWurst.VERSION, updateJSON = "https://forge.wurstclient.net/api/v1/update.json") public final class ForgeWurst { public static final String MODID = "forgewurst"; public static final String VERSION = "0.11"; @Instance(MODID) private static ForgeWurst forgeWurst; private boolean obfuscated; private Path configFolder; private HackList hax; private CommandList cmds; private KeybindList keybinds; private ClickGui gui; private GoogleAnalytics analytics; private IngameHUD hud; private CommandProcessor cmdProcessor; private KeybindProcessor keybindProcessor; private WurstUpdater updater; @EventHandler public void init(FMLInitializationEvent event) { if(event.getSide() == Side.SERVER) return; String mcClassName = Minecraft.class.getName().replace(".", "/"); FMLDeobfuscatingRemapper remapper = FMLDeobfuscatingRemapper.INSTANCE; obfuscated = !mcClassName.equals(remapper.unmap(mcClassName)); configFolder = Minecraft.getMinecraft().mcDataDir.toPath().resolve("wurst"); try { Files.createDirectories(configFolder); }catch(IOException e) { throw new RuntimeException(e); } hax = new HackList(configFolder.resolve("enabled-hacks.json"), configFolder.resolve("settings.json")); hax.loadEnabledHacks(); hax.loadSettings(); cmds = new CommandList(); keybinds = new KeybindList(configFolder.resolve("keybinds.json")); keybinds.init(); gui = new ClickGui(configFolder.resolve("windows.json")); gui.init(hax); JGoogleAnalyticsTracker.setProxy(System.getenv("http_proxy")); analytics = new GoogleAnalytics("UA-52838431-17", "client.forge.wurstclient.net", configFolder.resolve("analytics.json")); analytics.loadConfig(); Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); analytics.getConfigData() .setScreenResolution(screen.width + "x" + screen.height); hud = new IngameHUD(hax, gui); MinecraftForge.EVENT_BUS.register(hud); cmdProcessor = new CommandProcessor(cmds); MinecraftForge.EVENT_BUS.register(cmdProcessor); keybindProcessor = new KeybindProcessor(hax, keybinds, cmdProcessor); MinecraftForge.EVENT_BUS.register(keybindProcessor); updater = new WurstUpdater(); MinecraftForge.EVENT_BUS.register(updater); analytics.trackPageView("/mc" + WMinecraft.VERSION + "/v" + VERSION, "ForgeWurst " + VERSION + " MC" + WMinecraft.VERSION); } public static ForgeWurst getForgeWurst() { return forgeWurst; } public boolean isObfuscated() { return obfuscated; } public HackList getHax() { return hax; } public CommandList getCmds() { return cmds; } public KeybindList getKeybinds() { return keybinds; } public ClickGui getGui() { return gui; } }