Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.90 KB | None | 0 0
  1. package me.zeroeightsix.kami;
  2.  
  3. import me.zeroeightsix.kami.command.Command;
  4. import me.zeroeightsix.kami.command.CommandManager;
  5. import me.zeroeightsix.kami.command.commands.BindCommand;
  6. import me.zeroeightsix.kami.event.ForgeEventProcessor;
  7. import me.zeroeightsix.kami.event.events.DrawBlockBoundingBoxEvent;
  8. import me.zeroeightsix.kami.gui.kami.KamiGUI;
  9. import me.zeroeightsix.kami.gui.rgui.component.AlignedComponent;
  10. import me.zeroeightsix.kami.gui.rgui.component.Component;
  11. import me.zeroeightsix.kami.gui.rgui.component.container.use.Frame;
  12. import me.zeroeightsix.kami.gui.rgui.util.ContainerHelper;
  13. import me.zeroeightsix.kami.gui.rgui.util.Docking;
  14. import me.zeroeightsix.kami.module.Module;
  15. import me.zeroeightsix.kami.module.ModuleManager;
  16. import me.zeroeightsix.kami.setting.Setting;
  17. import me.zeroeightsix.kami.setting.Settings;
  18. import me.zeroeightsix.kami.setting.SettingsRegister;
  19. import me.zeroeightsix.kami.setting.config.Configuration;
  20. import me.zeroeightsix.kami.util.Friends;
  21. import me.zeroeightsix.kami.util.LagCompensator;
  22. import me.zeroeightsix.kami.util.Wrapper;
  23. import com.google.common.base.Converter;
  24. import com.google.gson.JsonElement;
  25. import com.google.gson.JsonObject;
  26. import com.google.gson.JsonPrimitive;
  27. import java.io.BufferedReader;
  28. import java.io.BufferedWriter;
  29. import java.io.File;
  30. import java.io.IOException;
  31. import java.io.PrintStream;
  32. import java.nio.file.Files;
  33. import java.nio.file.LinkOption;
  34. import java.nio.file.NoSuchFileException;
  35. import java.nio.file.OpenOption;
  36. import java.nio.file.Path;
  37. import java.nio.file.Paths;
  38. import java.nio.file.attribute.FileAttribute;
  39. import java.util.ArrayList;
  40. import java.util.Arrays;
  41. import java.util.Map;
  42. import java.util.Optional;
  43. import java.util.Set;
  44. import java.util.function.Consumer;
  45. import java.util.function.Function;
  46. import java.util.function.Predicate;
  47. import java.util.stream.Stream;
  48. import me.zero.alpine.EventManager;
  49. import net.minecraft.client.Minecraft;
  50. import net.minecraft.client.entity.EntityPlayerSP;
  51. import net.minecraft.client.gui.FontRenderer;
  52. import net.minecraftforge.client.event.RenderGameOverlayEvent;
  53. import net.minecraftforge.common.MinecraftForge;
  54. import net.minecraftforge.fml.common.Mod;
  55. import net.minecraftforge.fml.common.event.FMLInitializationEvent;
  56. import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
  57. import net.minecraftforge.fml.common.eventhandler.Event;
  58. import net.minecraftforge.fml.common.eventhandler.EventBus;
  59. import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
  60. import org.apache.logging.log4j.LogManager;
  61. import org.apache.logging.log4j.Logger;
  62.  
  63.  
  64. import java.io.*;
  65. import java.nio.file.Files;
  66. import java.nio.file.NoSuchFileException;
  67. import java.nio.file.Path;
  68. import java.nio.file.Paths;
  69. import java.util.Arrays;
  70. import java.util.Map;
  71. import java.util.Optional;
  72.  
  73. /**
  74. * Created by 086 on 7/11/2017.
  75. */
  76. @Mod(modid="kami", name="kami", version="b1.2")
  77. public class KamiMod {
  78. public static final String MODID = "Ace";
  79. public static final String MODNAME = "AceHack";
  80. public static final String MODVER = "b1.2";
  81. public static final String KAMI_HIRAGANA = "\u03a9";
  82. public static final String KAMI_KATAKANA = "\u03a9";
  83. public static final String KAMI_KANJI = "\u2660";
  84. private static final String KAMI_CONFIG_NAME_DEFAULT = "kamiConfigAce.json";
  85. public static final Logger log = LogManager.getLogger((String)"kami");
  86. public static final me.zero.alpine.EventBus EVENT_BUS = new EventManager();
  87. @Mod.Instance
  88. private static KamiMod INSTANCE;
  89. public KamiGUI guiManager;
  90. public CommandManager commandManager;
  91. private Setting<JsonObject> guiStateSetting = Settings.custom("gui", new JsonObject(), (Converter)new Converter<JsonObject, JsonObject>(){
  92.  
  93. protected JsonObject doForward(JsonObject jsonObject) {
  94. return jsonObject;
  95. }
  96.  
  97. protected JsonObject doBackward(JsonObject jsonObject) {
  98. return jsonObject;
  99. }
  100. }).buildAndRegister("");
  101.  
  102. @Mod.EventHandler
  103. public void preInit(FMLPreInitializationEvent event) {
  104. }
  105.  
  106. @SubscribeEvent
  107. public void onRenderGui(final RenderGameOverlayEvent.Post event) {
  108. final Minecraft mc = Minecraft.getMinecraft();
  109. if (event.getType() != RenderGameOverlayEvent.ElementType.HOTBAR) {
  110. return;
  111. }
  112. final String playername = mc.player.getName();
  113. mc.fontRenderer.drawStringWithShadow("Hello " + playername + " :^)", 1.0f, 10.0f, 16711680);
  114. mc.fontRenderer.drawStringWithShadow("Ace Hack b3", 1.0f, 1.0f, 16711680);
  115. }
  116.  
  117. @Mod.EventHandler
  118. public void init(FMLInitializationEvent event) {
  119. log.info("\n\nInitializing kami b1.2");
  120. ModuleManager.initialize();
  121. ModuleManager.getModules().stream().filter(module -> module.alwaysListening).forEach(EVENT_BUS::subscribe);
  122. MinecraftForge.EVENT_BUS.register((Object)this);
  123. MinecraftForge.EVENT_BUS.register((Object)new ForgeEventProcessor());
  124. LagCompensator.INSTANCE = new LagCompensator();
  125. Wrapper.init();
  126. this.guiManager = new KamiGUI();
  127. this.guiManager.initializeGUI();
  128. this.commandManager = new CommandManager();
  129. Friends.initFriends();
  130. SettingsRegister.register("commandPrefix", Command.commandPrefix);
  131. KamiMod.loadConfiguration();
  132. log.info("Settings loaded");
  133. ModuleManager.updateLookup();
  134. ModuleManager.getModules().stream().filter(Module::isEnabled).forEach(Module::enable);
  135. BindCommand.modifiersEnabled.setValue(false);
  136. log.info("kami Client Initialized!\n");
  137. }
  138.  
  139. public static String getConfigName() {
  140. Path config = Paths.get("kamiConfigAce.txt", new String[0]);
  141. String kamiConfigName = KAMI_CONFIG_NAME_DEFAULT;
  142. try {
  143. try (BufferedReader reader = Files.newBufferedReader(config);){
  144. kamiConfigName = reader.readLine();
  145. if (!KamiMod.isFilenameValid(kamiConfigName)) {
  146. kamiConfigName = KAMI_CONFIG_NAME_DEFAULT;
  147. }
  148. }
  149. }
  150. catch (NoSuchFileException e) {
  151. try {
  152. try (BufferedWriter writer = Files.newBufferedWriter(config, new OpenOption[0]);){
  153. writer.write(KAMI_CONFIG_NAME_DEFAULT);
  154. }
  155. }
  156. catch (IOException e1) {
  157. e1.printStackTrace();
  158. }
  159. }
  160. catch (IOException e) {
  161. e.printStackTrace();
  162. }
  163. return kamiConfigName;
  164. }
  165.  
  166. public static void loadConfiguration() {
  167. try {
  168. KamiMod.loadConfigurationUnsafe();
  169. }
  170. catch (IOException e) {
  171. e.printStackTrace();
  172. }
  173. }
  174.  
  175. public static void loadConfigurationUnsafe() throws IOException {
  176. String kamiConfigName = KamiMod.getConfigName();
  177. Path kamiConfig = Paths.get(kamiConfigName, new String[0]);
  178. if (!Files.exists(kamiConfig, new LinkOption[0])) {
  179. return;
  180. }
  181. Configuration.loadConfiguration(kamiConfig);
  182. JsonObject gui = KamiMod.INSTANCE.guiStateSetting.getValue();
  183. for (Map.Entry entry : gui.entrySet()) {
  184. Optional<Component> optional = KamiMod.INSTANCE.guiManager.getChildren().stream().filter(component -> component instanceof Frame).filter(component -> ((Frame)component).getTitle().equals(entry.getKey())).findFirst();
  185. if (optional.isPresent()) {
  186. JsonObject object = ((JsonElement)entry.getValue()).getAsJsonObject();
  187. Frame frame = (Frame)optional.get();
  188. frame.setX(object.get("x").getAsInt());
  189. frame.setY(object.get("y").getAsInt());
  190. Docking docking = Docking.values()[object.get("docking").getAsInt()];
  191. if (docking.isLeft()) {
  192. ContainerHelper.setAlignment(frame, AlignedComponent.Alignment.LEFT);
  193. } else if (docking.isRight()) {
  194. ContainerHelper.setAlignment(frame, AlignedComponent.Alignment.RIGHT);
  195. }
  196. frame.setDocking(docking);
  197. frame.setMinimized(object.get("minimized").getAsBoolean());
  198. frame.setPinned(object.get("pinned").getAsBoolean());
  199. continue;
  200. }
  201. System.err.println("Found GUI config entry for " + (String)entry.getKey() + ", but found no frame with that name");
  202. }
  203. KamiMod.getInstance().getGuiManager().getChildren().stream().filter(component -> component instanceof Frame && ((Frame)component).isPinneable() && component.isVisible()).forEach(component -> component.setOpacity(0.0f));
  204. }
  205.  
  206. public static void saveConfiguration() {
  207. try {
  208. KamiMod.saveConfigurationUnsafe();
  209. }
  210. catch (IOException e) {
  211. e.printStackTrace();
  212. }
  213. }
  214.  
  215. public static void onDrawBoundingBoxPost() {
  216. MinecraftForge.EVENT_BUS.post((Event)new DrawBlockBoundingBoxEvent.Post());
  217. }
  218.  
  219. public static void saveConfigurationUnsafe() throws IOException {
  220. JsonObject object = new JsonObject();
  221. KamiMod.INSTANCE.guiManager.getChildren().stream().filter(component -> component instanceof Frame).map(component -> (Frame)component).forEach(frame -> {
  222. JsonObject frameObject = new JsonObject();
  223. frameObject.add("x", (JsonElement)new JsonPrimitive((Number)frame.getX()));
  224. frameObject.add("y", (JsonElement)new JsonPrimitive((Number)frame.getY()));
  225. frameObject.add("docking", (JsonElement)new JsonPrimitive((Number)Arrays.asList(Docking.values()).indexOf((Object)frame.getDocking())));
  226. frameObject.add("minimized", (JsonElement)new JsonPrimitive(Boolean.valueOf(frame.isMinimized())));
  227. frameObject.add("pinned", (JsonElement)new JsonPrimitive(Boolean.valueOf(frame.isPinned())));
  228. object.add(frame.getTitle(), (JsonElement)frameObject);
  229. });
  230. KamiMod.INSTANCE.guiStateSetting.setValue(object);
  231. Path outputFile = Paths.get(KamiMod.getConfigName(), new String[0]);
  232. if (!Files.exists(outputFile, new LinkOption[0])) {
  233. Files.createFile(outputFile, new FileAttribute[0]);
  234. }
  235. Configuration.saveConfiguration(outputFile);
  236. ModuleManager.getModules().forEach(Module::destroy);
  237. }
  238.  
  239. public static boolean isFilenameValid(String file) {
  240. File f = new File(file);
  241. try {
  242. f.getCanonicalPath();
  243. return true;
  244. }
  245. catch (IOException e) {
  246. return false;
  247. }
  248. }
  249.  
  250. public static KamiMod getInstance() {
  251. return INSTANCE;
  252. }
  253.  
  254. public KamiGUI getGuiManager() {
  255. return this.guiManager;
  256. }
  257.  
  258. public CommandManager getCommandManager() {
  259. return this.commandManager;
  260. } }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement