Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.11.2] Recommended way of checking KeyBindings for opening a GuiScreen


ctbe
 Share

Recommended Posts

I recently read somewhere in an answer to an old thread that rarely one should subscribe to KeyInputEvent when handling KeyBindings. That one should subscribe instead to ClientTickEvent. Of course, the answer was fitted to the context of that thread. In my case, in which all I do is open a GuiScreen menu should I subscribe with this

 

@Subscribe
def onKeyInput (keyInputEvent: KeyInputEvent): Unit = {
    // Do my logic here using KeyBinding.isKeyDown()
}



or with this

@Subscribe
def onClientTickEvent (clientTickEvent: ClientTickEvent): Unit = {
    // Do my logic here using KeyBinding.isKeyDown()
}



I have only one KeyBinding, the one for opening the gui.

For my purposes, I currently find no use for the keyInputEvent variable. Also, will subscribing to check for key inputs on the ClientTickEvent consume more processing power than using KeyInputEvent? I somehow feel it does because while I am not moving or doing anything, minecraft would still be checking for the key binding state every tick.

Link to comment
Share on other sites

5 minutes ago, ctbe said:

Also, will subscribing to check for key inputs on the ClientTickEvent consume more processing power than using KeyInputEvent? I somehow feel it does because while I am not moving or doing anything, minecraft would still be checking for the key binding state every tick.

Exactly the opposite, in fact. Minecraft already automatically updates the state of your KeyBinding instance whenever a keyboard event occurs. Checking for this updated state once a tick is perfectly fine and in fact it is what Minecraft does for all it's KeyBindings.

KeyInputEvent however potentially fires multiple times every tick, it fires whenever any keyboard input occurs, and it fires for every single event (key down, key up).

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • I am trying to let friends play on my server but all of the server ip's that i try don't work. I need to know what my servers address is.
    • Oh, Now that I see it better the error is different.  This is the error now i dont saw much of it: 2022-01-19 21:36:34,998 main WARN Advanced terminal features are not available in this environment [21:36:36] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--gameDir, ., --launchTarget, fmlserver, --fml.forgeVersion, 36.2.22, --fml.mcpVersion, 20210115.111550, --fml.mcVersion, 1.16.5, --fml.forgeGroup, net.minecraftforge] [21:36:36] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 8.0.9+86+master.3cf110c starting: java version 1.8.0_25 by Oracle Corporation [21:36:36] [main/WARN] [cp.mo.mo.SecureJarHandler/]: LEGACY JDK DETECTED, SECURED JAR HANDLING DISABLED [21:36:38] [main/INFO] [ne.mi.fm.lo.FixSSL/CORE]: Added Lets Encrypt root certificates as additional trust [21:36:38] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.4 Source=file:/C:/Users/Lautaro/Desktop/server1/libraries/org/spongepowered/mixin/0.8.4/mixin-0.8.4.jar Service=ModLauncher Env=SERVER Exception in thread "main" [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]: java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/ClassFilter [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.coremod.NashornFactory.createEngine(NashornFactory.java:13) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.coremod.CoreModEngine.loadCoreMod(CoreModEngine.java:52) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.coremod.CoreModProvider.addCoreMod(CoreModProvider.java:12) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.fml.loading.LoadingModList$$Lambda$347/589987187.accept(Unknown Source) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:270) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.fml.loading.LoadingModList.addCoreMods(LoadingModList.java:85) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.fml.loading.moddiscovery.ModDiscoverer.discoverMods(ModDiscoverer.java:130) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.fml.loading.FMLLoader.beginModScan(FMLLoader.java:216) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.fml.loading.FMLServiceProvider.runScan(FMLServiceProvider.java:107) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at cpw.mods.modlauncher.TransformationServiceDecorator.runScan(TransformationServiceDecorator.java:114) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at cpw.mods.modlauncher.TransformationServicesHandler.lambda$runScanningTransformationServices$8(TransformationServicesHandler.java:115) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at cpw.mods.modlauncher.TransformationServicesHandler$$Lambda$185/259564670.apply(Unknown Source) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:267) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1612) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at cpw.mods.modlauncher.TransformationServicesHandler.runScanningTransformationServices(TransformationServicesHandler.java:116) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at cpw.mods.modlauncher.TransformationServicesHandler.initializeTransformationServices(TransformationServicesHandler.java:63) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at cpw.mods.modlauncher.Launcher.run(Launcher.java:76) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.server.ServerMain$Runner.runLauncher(ServerMain.java:63) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.server.ServerMain$Runner.access$100(ServerMain.java:60) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1052]:       at net.minecraftforge.server.ServerMain.main(ServerMain.java:57) [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1061]: Caused by: java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/ClassFilter [21:36:39] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1061]:       ... 38 more [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]: Caused by: java.lang.ClassNotFoundException: jdk.nashorn.api.scripting.ClassFilter [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]:    at java.net.URLClassLoader$1.run(URLClassLoader.java:372) [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]:    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]:    at java.security.AccessController.doPrivileged(Native Method) [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]:    at java.net.URLClassLoader.findClass(URLClassLoader.java:360) [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]:    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]:    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]:    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) [21:36:39] [main/INFO] [STDERR/]: [java.lang.Throwable:printStackTrace:643]:    ... 38 more
    • i tried that but it says the same error
    • No, and it is in fact broken. Firstly, you never register this type, so it will never work correctly. Secondly, you must not create registry entries in static initializers. You did it correctly above: Use this instead. However this is in the wrong class, as particle types (as all registry entries) must be registered on both sides (client and server). As such doing this in a client-only class will never work right.
    • Every time you post you post in the wrong subforum and I have to move your thread. Please take the hint. This is broken. You must not return null from this method. Use NetworkHooks.getEntitySpawningPacket. You must also only spawn your entity and start riding it on the server.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.