Jump to content

[SOLVED][1.7.2] Saving custom KeyBinding


Endyl

Recommended Posts

I have a KeyBinding registered with ClientRegistry, and it correctly shows up in the Controls menu and I can change it, and I can also use it in-game. The only thing missing is that when I restart the client, the KeyBinding is reset to the original key (other mc defined keys are saved).

 

How can I get my KeyBinding to persist its customized key association across client restarts? Any pointers to documentation or examples are welcome!

 

Thanks!

 

ps.:

A side question:

I use this key during RenderGameOverlayEvent to see whether I should render my custom HUD or not by using something similar:

 

private boolean shouldRender() {
while (KeyBindingHandler.toggleInfoScreenKey.isPressed()) {
	this.shouldShow = !this.shouldShow;
}
return this.shouldShow;
}

 

Is it a right approach to implement a toggle key, or should I do it differently?

Link to comment
Share on other sites

From my ClientProxy I call the following during FMLPreInitializationEvent:

 

toggleInfoScreenKey = new KeyBinding("infosanitymod.key.toggleinfoscreen", 23, "key.categories.misc");
ClientRegistry.registerKeyBinding(toggleInfoScreenKey);

 

This code is in a static method of KeyBindingHandler.

 

if(KeyBindingHandler.toggleInfoScreenKey.isPressed()) {
//Render stuffs
}

This doesn't work, as once it consumes all the keypresses it returns false every time. For this to work I would have to press the key for every RenderGameOverlayEvent.

Link to comment
Share on other sites

Are you sure you have set

KeyBinding.getKeyDescription

properly?

 

It might help debugging to put a breakpoint in GameSettings::saveOptions and ::loadOptions

 

            for (j = 0; j < i; ++j)
            {
                KeyBinding keybinding = akeybinding[j];
                printwriter.println("key_" + keybinding.getKeyDescription() + ":" + keybinding.getKeyCode());
            }

 

Then you should be able to see whether it is being saved and loaded (and if not, why not)

 

-TGG

Link to comment
Share on other sites

By stepping through saveOptions() and loadOptions() I have found the following:

 

In saveOptions() my KeyBinding is present with proper keyDescription and a keyCode different from the default one.

In loadOptions() the String representing my KeyBinding's setting in file is also present with the appropriate keyDescription and the nondefault keyCode value, however, akeybinding[] does not contain my KeyBinding instance, thus fails to load the saved value.

 

I have just double checked that the code creating the KeyBinding instance runs during FMLPreInitializationEvent. And as I have said it works perfectly except for, as it seems not the saving but the loading of the custom value.

 

What am I missing here? Or is it a bug in Forge 1024?

Link to comment
Share on other sites

Hi

 

I think it might be a bug, try raising it in the support forum.

 

It the meantime you might be able to work around it by calling

 

Minecraft.getMinecraft().gameSettings.loadOptions();

 

after your ClientRegistry.registerKeyBinding(...)

 

I haven't tried it, but it looks like it might work.

 

-TGG

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • https://pastebin.com/VwpAW6PX My game crashes upon launch when trying to implement the Oculus mod to this mod compilation, above is the crash report, I do not know where to begin to attempt to fix this issue and require assistance.
    • https://youtube.com/shorts/gqLTSMymgUg?si=5QOeSvA4TTs-bL46
    • CubeHaven is a SMP server with unique features that can't be found on the majority of other servers! Java: MC.CUBEHAVEN.NET Bedrock: MC.CUBEHAVEN.NET:19132 3 different stores: - CubeHaven Store: Our store to purchase using real money. - Bitcoin Store: Store for Bitcoin. Bitcoin can be earned from playing the server. Giving options for players if they want to spend real money or grind to obtain exclusive packages. - Black Market: A hidden store for trading that operates outside our traditional stores, like custom enchantments, exclusive items and more. Some of our features include: Rank Up: Progress through different ranks to unlock new privileges and perks. 📈 Skills: RPG-style skill system that enhances your gaming experience! 🎮 Leaderboards: Compete and shine! Top players are rewarded weekly! 🏆 Random Teleporter: Travel instantly across different worlds with a click! 🌐 Custom World Generation: Beautifully generated world. 🌍 Dungeons: Explore challenging and rewarding dungeons filled with treasures and monsters. 🏰 Kits: Unlock ranks and gain access to various kits. 🛠️ Fishing Tournament: Compete in a friendly fishing tournament! 🎣 Chat Games: Enjoy games right within the chat! 🎲 Minions: Get some help from your loyal minions. 👥 Piñata Party: Enjoy a festive party with Piñatas! 🎉 Quests: Over 1000 quests that you can complete! 📜 Bounty Hunter: Set a bounty on a player's head. 💰 Tags: Displayed on nametags, in the tab list, and in chat. 🏷️ Coinflip: Bet with other players on coin toss outcomes, victory, or defeat! 🟢 Invisible & Glowing Frames: Hide your frames for a cleaner look or apply a glow to it for a beautiful look. 🔲✨[ Player Warp: Set your own warp points for other players to teleport to. 🌟 Display Shop: Create your own shop and sell to other players! 🛒 Item Skins: Customize your items with unique skins. 🎨 Pets: Your cute loyal companion to follow you wherever you go! 🐾 Cosmetics: Enhance the look of your character with beautiful cosmetics! 💄 XP-Bottle: Store your exp safely in a bottle for later use! 🍶 Chest & Inventory Sorting: Keep your items neatly sorted in your inventory or chest! 📦 Glowing: Stand out from other players with a colorful glow! ✨ Player Particles: Over 100 unique particle effects to show off. 🎇 Portable Inventories: Over virtual inventories with ease. 🧳 And a lot more! Become part of our growing community today! Discord: https://cubehaven.net/discord Java: MC.CUBEHAVEN.NET Bedrock: MC.CUBEHAVEN.NET:19132
    • # Problematic frame: # C [libopenal.so+0x9fb4d] It is always the same issue - this refers to the Linux OS - so your system may prevent Java from working   I am not familiar with Linux - check for similar/related issues  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.