-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathMacroKey.java
More file actions
93 lines (77 loc) · 4.3 KB
/
MacroKey.java
File metadata and controls
93 lines (77 loc) · 4.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package com.mattsmeets.macrokey;
import com.mattsmeets.macrokey.command.CommandMacroKey;
import com.mattsmeets.macrokey.config.ModConfig;
import com.mattsmeets.macrokey.config.ModState;
import com.mattsmeets.macrokey.handler.ChangeHandler;
import com.mattsmeets.macrokey.handler.GameTickHandler;
import com.mattsmeets.macrokey.handler.hook.ClientTickHandler;
import com.mattsmeets.macrokey.handler.hook.GuiEventHandler;
import com.mattsmeets.macrokey.handler.hook.KeyInputHandler;
import com.mattsmeets.macrokey.model.Macro;
import com.mattsmeets.macrokey.repository.BindingsRepository;
import com.mattsmeets.macrokey.service.JsonConfig;
import com.mojang.blaze3d.platform.InputConstants;
import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.language.I18n;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.ClientRegistry;
import net.minecraftforge.client.settings.KeyConflictContext;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.server.ServerStartingEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.lwjgl.glfw.GLFW;
import java.io.IOException;
import java.util.Collections;
import java.util.Map;
@Mod(ModReference.MOD_ID)
public class MacroKey {
private static final Logger LOGGER = LogManager.getLogger(ModReference.MOD_ID);
public static BindingsRepository bindingsRepository;
public static ModState modState;
public MacroKey() {
ModLoadingContext.get().registerConfig(net.minecraftforge.fml.config.ModConfig.Type.COMMON, ModConfig.SPEC, "macrokey.toml");
MinecraftForge.EVENT_BUS.addListener(this::onServerStarting);
}
private void onServerStarting(final ServerStartingEvent event) {
new CommandMacroKey(event.getServer().getCommands().getDispatcher());
}
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
public static class RegistryEvents {
@SubscribeEvent
public static void clientSetup(final FMLClientSetupEvent event) throws IOException {
LOGGER.info("Hello World! Welcome to MacroKey Keybinding. Please sit back while we initialize...");
LOGGER.debug("PreInitialization");
// set-up the bindings.json service & files
final JsonConfig bindingsJSONConfig = new JsonConfig(Minecraft.getInstance().gameDirectory.getAbsolutePath(), ModConfig.bindingFile.get());
bindingsJSONConfig.initializeFile();
// BindingsRepository has a dependency on the bindings.json file being created
bindingsRepository = new BindingsRepository(bindingsJSONConfig);
// Initialize the mod's state
modState = new ModState(bindingsRepository, bindingsRepository.findActiveLayer(true));
LOGGER.info("Init macro keys");
MinecraftForge.EVENT_BUS.register(new GameTickHandler(null, null, registerKeyBindings()));
MinecraftForge.EVENT_BUS.register(new ChangeHandler.LayerChangeHandler(bindingsRepository));
MinecraftForge.EVENT_BUS.register(new ChangeHandler.MacroChangeHandler(bindingsRepository));
MinecraftForge.EVENT_BUS.register(new KeyInputHandler(bindingsRepository, modState));
MinecraftForge.EVENT_BUS.register(new ClientTickHandler());
MinecraftForge.EVENT_BUS.register(new GuiEventHandler(modState));
}
private static Map<ModKeyBinding, KeyMapping> registerKeyBindings() {
final KeyMapping managementKey = new KeyMapping(I18n.get("key.macrokey.management.desc"), KeyConflictContext.IN_GAME, InputConstants.Type.KEYSYM.getOrCreate(GLFW.GLFW_KEY_K), "key.macrokey.category");
final Map<ModKeyBinding, KeyMapping> keyBindingMap = Collections.singletonMap(ModKeyBinding.OPEN_MANAGEMENT_GUI, managementKey);
keyBindingMap
.values()
.forEach(ClientRegistry::registerKeyBinding);
return keyBindingMap;
}
private RegistryEvents() {
// Hide the public constructor
}
}
}