Tried creating keymappings, but only mouse button one works, and both don't appear in mey binds menu
So here's the code:
@Mod(ExampleMod.MODID)
public class ExampleMod
{
static KeyMapping y = new KeyMapping(
"key.categories.misc1", // Will be localized using this translation key
InputConstants.Type.KEYSYM, // Default mapping is on the keyboard
GLFW.GLFW_KEY_Y, // Default key is P
"key.categories.misc" // Mapping will be in the misc category
);
/*static KeyMapping mb5 = new KeyMapping(
"key.categories.misc1", // Will be localized using this translation key
InputConstants.Type.MOUSE, // Default mapping is on the keyboard
GLFW.GLFW_MOUSE_BUTTON_5, // Default key is P
"key.categories.misc" // Mapping will be in the misc category
);*/
public static final Lazy<KeyMapping> EXAMPLE_MAPPING = Lazy.of(() -> new KeyMapping(
"key.categories.misc1", // Will be localized using this translation key
InputConstants.Type.MOUSE, // Default mapping is on the keyboard
GLFW.GLFW_MOUSE_BUTTON_5, // Default key is P
"key.categories.misc" // Mapping will be in the misc category
)/*...*/);
public static int toggle = 0;
// Define mod id in a common place for everything to reference
public static final String MODID = "examplemod";
public ExampleMod()
{
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
modEventBus.addListener(this::commonSetup);
MinecraftForge.EVENT_BUS.register(this);
ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, Config.SPEC);
}
@SubscribeEvent
public void onClientTick(ClientTickEvent event) {
if (event.phase == TickEvent.Phase.END) { // Only call code once as the tick event is called twice every tick
while (y.consumeClick()) {
// Execute logic to perform on click here
if(toggle == 0) {
Minecraft.getInstance().player.connection.sendCommand("gamemode spectator");
toggle = 1;
} else if(toggle == 1) {
Minecraft.getInstance().player.connection.sendCommand("gamemode creative");
toggle = 0;
}
}
while(EXAMPLE_MAPPING.get().consumeClick()) {
Minecraft.getInstance().player.connection.sendCommand(Config.command); // Here I get command from config, can be any string
}
}
}
@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
public static class ClientModEvents
{
@SubscribeEvent
public void registerBindings(RegisterKeyMappingsEvent event) {
event.register(y);
event.register(EXAMPLE_MAPPING.get()); // tried both lazy and static keymapping
}
@SubscribeEvent
public static void onClientSetup(FMLClientSetupEvent event)
{
}
}
@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT)
public static class ClientForgeEvents
{
@SubscribeEvent
public static void registerCommands(RegisterClientCommandsEvent event){
register(event.getDispatcher()); // I register my command here
}
}
}
What am I doing wrong there?
Sorry if I posted it in the wrong section, I am new to forge forums