Hey, I set up some Keybinding for my mod. Here is the code:
Mod class:
@PostInit
public void postInit(FMLPostInitializationEvent event)
{
proxy.registerKeys();
}
ClientProxy.java:
public void registerKeys()
{
KeyBinding[] key = {new KeyBinding("BBP Key", 29)};
boolean[] repeat = {false};
KeyBindingRegistry.registerKeyBinding(new BBPKeyBind(key, repeat));
}
BBPKeyBind.java:
package ToX.BBP;
import java.util.EnumSet;
import java.util.Iterator;
import net.minecraft.client.settings.KeyBinding;
import cpw.mods.fml.client.registry.KeyBindingRegistry.KeyHandler;
import cpw.mods.fml.common.TickType;
public class BBPKeyBind extends KeyHandler {
private EnumSet tickTypes = EnumSet.of(TickType.CLIENT);
public static boolean keyDown = false;
public BBPKeyBind(KeyBinding[] keyBindings, boolean[] repeatings) {
super(keyBindings, repeatings);
// TODO Auto-generated constructor stub
}
@Override
public String getLabel()
{
return "BBP";
}
@Override
public void keyDown(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd, boolean isRepeat) {
if(tickEnd)
keyDown = true;
}
@Override
public void keyUp(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd) {
if(tickEnd)
keyDown = false;
}
@Override
public EnumSet<TickType> ticks() {
// TODO Auto-generated method stub
return tickTypes;
}
}
Usage in Block class:
if (BBPKeyBind.keyDown)
{
some code
}
In Singleplayer it works fine but in Multiplayer it doesnt. The server doesnt crash or anything but the things that should happen, when the key is pressed down, won't happen (it works though if i remove the if condition, but that would destroy the point of the Keybind). I think that the server somehow doesnt recognize the keybind but i really have now idea how i could get this to work.
I hope you can help me
regards
ToX
ps: sorry for my english, i'm not a native speaker