Lemur release 1.7.1 and 1.8.1

Hello, my favorite Lemur users…

I have just pushed both a 1.7.1 release and a 1.8.1 release up to github and to jcenter. They are available for your dependency slurping.

These two releases are functionally identical. The only difference is that 1.7.1 is built against jMonkeyEngine 3.1 alpha3 and has pegged its dependencies accordingly. 1.8.1 is build against 3.1 alpha4 and has the ‘latest version’ dependency as always.

Hopefully this satisfies all users with the latest changes until they get a chance to update to alpha4.

On github:

And I did a similar thing with Lemur-proto. (Lemur-props didn’t need it.)
Keep using 1.5.1 if you are on alpha3:

Or update to 1.6.1 if you are on alpha4:

On bintray:

Changelog for 1.7.1:

  • Added InputMapper.hasMappings() method to return true if a FunctionId has inputs associated with it.
  • Added InputMapper.getMappings(FunctionId) to return all of the input mappings currently associated with a particular function.
  • Added InputMapper.getFunctionIds() to return all FunctionIds that are registered with the InputMapper, either associated with inputs or with function listeners. (Useful for displaying configuration screens.)
  • Added InputMapper support for InputConfigListener so that applications can choose to be notified about changes to input mappings.
  • Added Label.setMaxWidth() which is a stylable attribute that constrains the width of the lable, forcing text to wrap and grow vertically if it exceeds that width. This helps with setting up layouts that include Labels that might wrap anyway because of other layout constraints. Because of the single-shot nature of preferred size calculation, it can’t deal with components that change height because their width was constrained later.
  • Refactored MouseAppState and TouchAppState to share a common base class that contains the duplicate code.
  • Added a PickState interface that can be used to grab either the MouseAppState or TouchAppState depending on which is being used. This insulates applications from having to care.
  • Modified the pick states and pick session to support a ‘pick layers’ concept to provide better control over the order in which the layers are checked for collisions. By default, the GUI layer is checked and then the SCENE layer but the applications can now add their own layers by changing this ordering with PickState.setPickLayerOrder()
  • Pegged the JME dependency at alpha3 since the next version will be alpha4+ specific.

I always forget to leave this around, too: https://www.patreon.com/pspeed42?ty=h


@pspeed Do you by chance have a sample gradle build file for a simple jmonkey app that shows the depencences


compile ‘com.simsilica:lemur:1.8.1’
plus any libs that lemur needs to run if they dont auto download by gradle


Actually, that’s it. Everything else you need will be downloaded.

You may want to include an slf4j binding as a runtime dependency so that you don’t get a warning when you run.

I assume you’ve already seen the JME simple sample project and so have everything else setup already. If not the link is here:

seems my gradle does not know that i need groovy

apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'eclipse'
apply plugin: 'idea'


repositories {

ext.jmeVersion = "[3.1,)" 

project(":assets") {
apply plugin: "java"

buildDir = rootProject.file("build/assets")

sourceSets {
    main {
        resources {
            srcDir '.'

dependencies {

compile "org.jmonkeyengine:jme3-core:$jmeVersion"
compile "org.jmonkeyengine:jme3-desktop:$jmeVersion"
compile "org.jmonkeyengine:jme3-lwjgl:$jmeVersion"
compile "com.simsilica:lemur:1.8.1"

runtime project(':assets')    

task wrapper(type: Wrapper) {

task createDirs << {

def pkg = 'mygame'
def dirs = [

dirs.each {
    if( !it.exists() ) {
        println "Creating " + it
    if( it.listFiles().length == 0 ) {
        def stub = new File(it, 'removeme.txt') 
        println "Creating stub file to allow git checkin, file:$stub"
        stub.text = "Remove me when there are files here."

if I add

    // Load the 'glass' style

I get
Uncaught exception thrown in Thread[jME3 Main,5,main]
RuntimeException: Groovy scripting engine not available.

I added these two and is seems to be working now. Thanks

compile "org.slf4j:slf4j-simple:1.6.1"
compile "org.codehaus.groovy:groovy-all:2.4.6"

Yeah, if you want the styling language support (which the base styles things requires) then you have to include groovy. It’s only a runtime dependency, though.

Sorry I forgot about that one.