JXClient FAQ

General

What is JXClient?

JXClient is a Crossfire client supporting full-screen mode.

Does JXClient run on my system?

JXClient is a Java application. To run it you need Java 6 (Sun's JRE and OpenJDK do work; gcj/gij does not). In Debian systems either of sun-java6-jre and openjdk-6-jre packages work.

The client can be run with

    java -jar jxclient.jar

Is there a difference between JXClient and jcrossclient?

Yes: JXClient and jcrossclient are different applications. jcrossclient's intention was to run as an applet to play Crossfire through a web browser. JXClient is a stand-alone full-screen application to play Crossfire.

Where do I get JXClient from?

Daily updated pre-built versions are available from http://invidious.meflin.net/jxclient.jar and http://crossfire.ailesse.com/. These versions include the latest features and therefore can be unstable.

The source code is available from

    svn co https://crossfire.svn.sourceforge.net/svnroot/crossfire/jxclient/trunk jxclient

JXClient fails to start

JXClient exits/crashes without displaying an error message. How can I make the error message visible?

Start JXClient from a console (xterm, cmd.exe, etc.):

    java -jar jxclient.jar

JXClient always reports "Cannot connect to Crossfire server. Network is unreachable"

This might be a problem with Debian based systems. See the bug report net.ipv6.bindv6only=1 breaks java networking for details.

For the impatient: add -Djava.net.preferIPv4Stack=true when running JXClient:

    java -Djava.net.preferIPv4Stack=true -jar jxclient.jar

Make sure to add the option before -jar jxclient.jar.

What does java.lang.UnsupportedClassVersionError mean?

Your Java version is too old to run JXClient. You need at least Java 6; gcj/gij does not work.

What does "java.lang.reflect.InvocationTargetException" mean?

What does "java.lang.OutOfMemoryError: Java heap space" mean?

    JXClient - Crossfire Java Client
    (C)2005 by Lauwenmark.
    This software is placed under the GPL License
    java.lang.reflect.InvocationTargetException
           at java.awt.EventQueue.invokeAndWait(EventQueue.java:997)
           at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1323)
           at com.realtime.crossfire.jxclient.main.JXClient.<init>(JXClient.java:102)
           at com.realtime.crossfire.jxclient.main.JXClient.main(JXClient.java:65)
    Caused by: java.lang.OutOfMemoryError: Java heap space
           at java.awt.image.DataBufferInt.<init>(DataBufferInt.java:41)
           at java.awt.image.Raster.createPackedRaster(Raster.java:458)
           at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015)
           at java.awt.image.BufferedImage.<init>(BufferedImage.java:321)
           at sun.java2d.loops.GraphicsPrimitive.convertFrom(GraphicsPrimitive.java:537)
           at sun.java2d.loops.GraphicsPrimitive.convertFrom(GraphicsPrimitive.java:521)
           at sun.java2d.loops.MaskBlit$General.MaskBlit(MaskBlit.java:171)
           at sun.java2d.loops.Blit$GeneralMaskBlit.Blit(Blit.java:186)
           at sun.java2d.pipe.DrawImage.blitSurfaceData(DrawImage.java:927)
           at sun.java2d.pipe.DrawImage.renderImageCopy(DrawImage.java:550)
           at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:73)
           at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:998)
           at sun.java2d.pipe.ValidatePipe.copyImage(ValidatePipe.java:178)
           at sun.java2d.SunGraphics2D.copyImage(SunGraphics2D.java:2909)
           at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:2940)
           at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:2895)
           at com.realtime.crossfire.jxclient.gui.GUIPicture.<init>(GUIPicture.java:67)
           at com.realtime.crossfire.jxclient.skin.DialogFactory.newDialog(DialogFactory.java:205)
           at com.realtime.crossfire.jxclient.skin.JXCSkinLoader.load(JXCSkinLoader.java:908)
           at com.realtime.crossfire.jxclient.skin.JXCSkinLoader.load(JXCSkinLoader.java:577)
           at com.realtime.crossfire.jxclient.skin.JXCSkinLoader.load(JXCSkinLoader.java:391)
           at com.realtime.crossfire.jxclient.window.JXCWindow.loadSkin(JXCWindow.java:1308)
           at com.realtime.crossfire.jxclient.window.JXCWindow.setSkin(JXCWindow.java:1270)
           at com.realtime.crossfire.jxclient.window.JXCWindow.init(JXCWindow.java:797)
           at com.realtime.crossfire.jxclient.main.JXClient$1.run(JXClient.java:107)
           at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
           at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
           at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
           at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
           at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
           at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
           at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)

The client has run out of memory. Increase the available memory by starting it with

    java -Xmx256m -jar jxclient

Is Java 6 available for Mac OS?

http://bsnyderblog.blogspot.com/2008/03/java-16-via-soylatte-on-macos-x-10411.html may help.

Display Settings

Does JXClient support different resolutions?

Yes: start the client with

    java -jar jxclient.jar --resolution 1400x1050

Does JXClient support non-full-screen mode?

Yes: start the client with

    java -jar jxclient.jar --no-full-screen

Why doesn't JXClient enter full-screen mode?

X.org users might need to patch the Java runtime. See The Java Client (JXClient) on Ailesse for details.

Key Bindings

How do I focus the command input field by keyboard?

The preferred key to open the command input is /; alternatively \ or ' can be used. Command input automatically closes after the command has been submitted (unless the dialog has been visible before).

How to prevent a key binding from submitting the command?

Use the /bind -e command. This enters "command" into the command input field but does not submit it.

Where are the key bindings stored?

Normal key bindings are stored in $HOME/.crossfire/jxclient/keybindings.txt.

Per-character key bindings are stored in $HOME/.crossfire/jxclient-HOST-CHAR.txt. HOST is the Crossfire server's name, CHAR is the character's name.