Posts by red51

    Will it be possible to have different biomes/climate zones in the same (big) land mass. I like islands having different ones, but I still prefer to also find them in the same land mass.

    Currently we have no plans for that unfortunately... each island only has one climate zone. But there are plans to have some sort of transition biomes on islands: for example, if you're on a temperate island and a desert island is south of your island, you would be able to find a mediterranean biome in the southern part of your island etc.

    I notice you can jump on top of animals and stay there. Would be nice if they at least try to shake you off.

    That would be a good idea, I will put it on our list ;)

    Would it be possible, at least in the future, to have an option so you can only prepare some styles (textures) of furniture only of you have the corresponding type of wood/lumber. Say make a pine looking bed, only with pine, and so on.

    That's unfortunately a bit difficult... for most furnitures, it's hard to tell what type of wood they're currently using specifically. It would require us to change the materials of all objects to make sure to have distinguished looks for the various wood types (e.g. a pine wood bed, an acacia wood bed etc)... there is unfortunately a lot of work involved to do that (and it's going to be difficult to keep this compatible with existing worlds - some people wouldn't be happy if the furniture or building materials suddenly look very different.

    Hello everyone. I have a interesting question. It's planned add stone, mud, and terrain blocks and other types of "blocks" (like cylinder, pyramid, etc) made of terrains material?

    Yes, probably this will be part of the next update ;)

    Not sure if I understood the problem exactly :thinking: Does that mean you want an owner (more precisely, a player that is assigned to an area) to be able to add other players to his area?

    Right now there is only the general "areatools" permission (under "creative") and the "addplayer"/"removeplayer" permissions under "area". The problem is that allowing the area tools, the player is able to create new areas... probably it would help if there is just another "create" permission under "area"? Or a specific permission to only allow the player to edit his own areas? Or did I miss something?

    we need player.setPermissionAreaGroup(UserName); red51

    Basically there is no such thing... the player has a general permission group, and once he enters an area, he also gets an area permission assigned. This is only valid as long as the player is inside this area. The general group permission can be retrieved via player.getPermissionGroup(), while the temporary area permission (only active while the player is inside an area) can be retrieved with player.getActiveAreaPermission().

    As mentioned, the area permission is temporary and depends on whether or not the player is actually inside an area (and it may be different for each area). The method you've mentioned wouldn't be possible, since it's unclear which area this actually affects. If you want to change the player permission of an area, you have to set that on the particular area directly via area.setPlayerPermission(). Like this:

    //Get area the player is currently inside
    Area area = player.getCurrentArea();
    //Check if player is actually inside an area (ie area is not null)
    if (area != null) {
    //Update area permission if desired
    area.setPlayerPermission(player, "PlayerAreaPermission");

    You first have to turn cloth into rags - this can be done at the grinder ;) Then just put the rags into the paper press. Currently there is no water required (because buckets didn't make it into the game yet), so you can turn them into paper directly.

    Thanks a lot for the world file :) I can confirm the crash on my end, so it's definitely a bug in the game. It seems there is an issue with the npcs... apparently the data for one or more npcs is invalid. Unfortunately the game doesn't validate the data, and since the game works with native memory here, this results in a crash.

    We will fix that with the next update, so the game first checks the data properly (to avoid crashes like that).

    If the npcs in your world aren't too important, you could fix this issue manually in the meantime by deleting the "Npcs.db" file in your world folder (also the "Npcs.db-shm" and "Npcs.db-wal" files if they're there). You should then be able to load the world again, but unfortunately this deletes all npcs in your world. If you want to keep your npcs, please let me know, then I can send you a fixed Npcs.db file ;)

    PS: That ship looks amazing, well done! :thumbup:

    Where can send it to ?

    If you could upload it somewhere (dropbox, google drive etc, usually these services always have a free version), you could send me the link either via PM, or alternatively send it via mail to

    If the world isn't too large (you could zip it to reduce the size), i.e. not bigger than maybe 20 or 30 MB, you could also try to send the file via mail to us ;)

    New world loads and works the only other world that crashes is a Demo world

    Hmm... since when do you run into this crash? Is this the first time you try to load the world after the biomes update (from Februray), or did you already manage to load it successfully after the update?

    If it only happens with this particular world, it's most likely either a bug in the game (probably related to the Demo world), or an issue with the world files... is there maybe a chance you could send me your world? Then I could try to reproduce the issue on my end ;)

    If you could send me the world, make sure to include all files from the "New World" world folder.

    ..seems you cant use those in font for a GUI. Any ideas on how to get different fonts in a GUI like Medieval or Gothic?

    The Font enum (mentioned by james1bow ) is indeed the correct one - it contains all fonts of the game. It can be used for signs and UI elements ;) You can pass it to a label using the setFont() method (or alternatively set the style.font property on the label). Example:

    UILabel label = new UILabel("Hello World");
    label.setFontColor(0xFFFFFFFF); // <- white
    label.setBackgroundColor(0x000000FF); // <- black (optional)

    Thanks for the report! :) It's a native crash (that's why it doesn't bring up an error dialog, for example)... native crashes are often (but not always) caused by something outside the game (usually the graphics driver, or another program which interfers with the game [like an anti virus program]).

    But of course it could also be caused by a bug in the game (there are some situations where the game works with native memory and pointers directly - this is prone to crash if something goes wrong).

    Native crashes could also be caused by the Plugin API, but that's only relevant if you actually use any plugins (in this case, the crash doesn't seem to be related to this).

    Does the crash also occur for all other worlds? What if you create a new world, does it load fine, or does it also crash?

    Sorry für die späte Antwort, aber wir können mit dem nächsten Update eine ScrollView einbauen ;) Dieser kannst du beliebige UI Elemente hinzufügen (auch komplexe Elemente) und grundsätzlich alle Arten von Listen, die es im Spiel gibt, nachbilden. Prinzipiell verhält sich die ScrollView wie ein reguläres UI Element, nur dass der Content scrollbar ist (und Childs außerhalb des Scrollbereichs unsichtbar sind).

    The log unfortunately contains no information about a crash... at the end of the log it seems the game just lost focus (alt-tab?). Apparently this log file isn't from a session which crashed?

    Please try loading a world until the game crashes (this is important), then restart the game to the main menu, open the console (with key ~ or `) and type report. Add some additional information like "game crashed when loading a world", and send the report. This automatically attaches the previous log file (which should contain more information about the crash) :)

    I was hoping to grab vanilla HUD elements and add children to them

    Oh, this is actually possible^^ But since this is a bit hacky (and may break with future updates), it's only possible through the Internals class. You could use the Internals.addUIElementToPlayer() method (instead of Player.addUIElement()) to add a UI element to an arbitrary target (this could be any UI element in the game).

    It's a bit tricky to find the correct path of an element on HUD, but you could use the uidebugger console command to get the target path of a vanilla element ;)

    Yeah, this is indeed a bit tricky... the game renders these icons during runtime, so there is no way to get them through the API right now :/

    But maybe it would help if we add a new "getIcon()" method to the ItemDefinition/ObjectDefinition/ConstructionDefinition classes (which would return a TextureAsset)? If you wanted to get a block icon then (e.g. with texture id 200), the code could look like this, for example:

    //Get construction definition for block
    Constructions.ConstructionDefinition def = Definitions.getConstructionDefinition("block");
    //Get icon for this block (texture id 200)
    TextureAsset icon = def.getIcon(200);

    However, this is where I am stuck on how to get the storage object with the inventory since this event Class does not appear to me to have method.

    I assume you are saying I get the chest using getStorage() then using Item[] getItems()? Because for me, the ToStorageEvent wont bring up .getstorage() as a method of the class.

    Unfortunately the storage API wasn't fully ready yet, but will be part of the next update ;) This will enable you to get access to all storages (or to create new storages, for example).

    Unfortunately this isn't possible :/ UI Toolkit does not expose the z order and provides no way to change it. Even though Unity added this feature to their roadmap 3 years ago, it's still not available yet...

    Right now the Z order depends on the order when these elements were created (and parents are always drawn behind their childs). There is no workaround for that...

    The problem is that I want to interlace with existing HUD elements, so I can't add them as a child to those. Maybe I could somehow grab them... 🤔

    Does that mean you want to change the parent of a vanilla HUD element?

    Basically it's important to either re-use existing connections (e.g. create a connection once, store it in a variable and re-use that connection), or alternatively close the connection once it's no longer needed. Everytime "getSQLiteConnection()" is called, a new connection is created. Same about "getMySQLConnection()".

    Only exception is the world database (this reuses the same connection automatically and doesn't need to be closed manually).

    If you re-use a single connection, it's important to close statements and ResultSets. This is a typical pitfall. For example, when calling executeQuery() (which returns a ResultSet), make sure to close the ResultSet once you're done with the query (i.e. almost always a few lines after your query). The easiest and safest way to do that is to use a try-with-resources block (it closes the ResultSet automatically, even if an exception occurs), e.g. like this:

    Java: Try-with-resources block (good code)
    try (ResultSet result = db.executeQuery("SELECT * FROM `MyTable`")) {
    while ( {
    //do something

    It's not recommendable to do it this way, for example:

    Java: Bad code
    ResultSet result = db.executeQuery("SELECT * FROM `MyTable`");
    while ( {
    //do something

    The reason is that if an exception occurs between line 2 and 4, the result will never be closed (because an exception interrupts code execution, so line 5 will never be executed).

    You can "fix" this by using a try-finally block, but it's ugly and more verbose than the try-with-resources block at the very top:

    Java: Verbose code - it's better to use try-with-resources instead, as above
    ResultSet result = null;
    try {
    result = db.executeQuery("SELECT * FROM `MyTable`");
    while ( {
    //do something
    finally {
    if (result != null) result.close();

    You don't have to close ResultSets if you either close the connection, or alternatively use getConnection() and create statements manually (and close them accordingly - because closing the statement will automatically close related ResultSets). But even in these cases it's still better to just always use try-with-resources blocks when working with ResultSets ;)

    Thanks a lot for your feedback! :) Sorry that I've missed your post on Steam... IDK why this happened :wat:

    1. The waterskin recipe still requires cloth to craft. Now that we have leather, I believe that resource should be the one to go. Maybe the devs forgot to update this recipe.

    Yeah, this was indeed an oversight, but we will change it with the next update ;)

    2. Also about recipes: The repeater rifle still requires gunpowder to craft. I am awared that it has been added as a requirement to craft the weapon as a "placeholder" for its amunition, which was unavailable before this patch. Bit now that bullets are a thing, my guess is that it is not required anymore. Once again, maybe the JIW Games team skipped this one too.

    Currently the rifle comes with 5 bullets by default, but probably it's better to remove the gunpowder requirement ^^ We'll change that with the next update, too.

    3. A great addition this update brought us is listing the food/water/health values of consumable items, a feature never done in Java Version. Also, bringing back the visible status values of clothes. This all is very helpful for sure! However, there is one point missing: The values of weapons, like damage, attack speed, etc... This was huge flaw of the old version (we had to check the forums for this), so if you could add this one feature as well, the gameplay would greatly improve.

    Unfortunately the game cannot get the attack speed from the database (because it solely depends on the animations), that's why no DPS is exposed yet... adding this is still on our to-do list and probably will be available with one of the next updates. But maybe we could at least expose the "damage per hit" in the meantime until more information are available ;)

    4. Speaking of status, it would also be a huge quality of life improvement if the game allowed us to see the status of wearables, weapons and food items at the crating screen, before we craft/cook them. This way, we would be able to know if they are worth making without being forced to waste resources for this, or doing unnecessary web search.

    Good point! I'll put this on our to-do list ;)

    5. The animal are too powerful! My character was hearing the leather outfit and the medieval mining helmet. It all gave a combined armour value of 50 points. And even so, after engaging rams or goats, they reduce the health bar to nearly half in 3 headbutts! And they are not even the "true" beasts! So, I believe this point of gameplay could use some revision. Or the devs could add a combat difficult setting to make things easier for those that so desire.

    Yes, animals are indeed too strong... we will reduce the damage with the next update, but probably we'll also add a "hit damage factor" setting (but only available through the config file for now).

    6. Another animal threat point: Bears on the grass fields. Of all the additions and tweaks this patch brought us, this is the only one I consider a bad move. I mean, those biomes are supposed to be a "safe haven" for our character to do the very early game progression, like basic weapons and tools, so why make the most power animal of the temperate islands spawn there?! I understand that maybe the dev team don't want to make that territory too peaceful and boring, so there is some theat. But at least make it be boars or wolves, when they become a thing, not effing bears! This is so unfair... And before you mention it: I understand that these animals may inhabit such biomes in real life, but this is a game, not a wildlife simulation, so a good gameplay comes first.

    This was mentioned a few times, so maybe it's better if we remove bears for now from the grass field ^^

    7. And one last point on animal aggression: I am not sure, but it seem that killing an animal with a headshot don't aggravate the rest of the herd. They react if the attack is not lethal, but seem to ignore the death of their "mate" if it is. Probably there is a bug here. Note that this only affects defensive animals, the passive ones still run away on headshoted herd members.

    Defensive animals currently ignore if you attack one of their mates... previously they already got angry if one of their mates just got the "alert" state (which was already triggered by a gunshot or when cutting down a tree, for example), but players were confused by this behaviour. So right now they just ignore it.

    But some changes to this handling are still on our to-do list :)