And i worked at some raster data from raw data exported. it's god to know if i must remade it.
Like this sector 0,0 of MR
And i worked at some raster data from raw data exported. it's god to know if i must remade it.
Like this sector 0,0 of MR
On world of MR will not be a full reset, but is considered to override manually some sectors. So is good to know what already was saved in the past. And i can reuse old data already extracted. Otherwise i must reextract raw data/reprocess again and compare with live sector to see if must change. But i think i can have access at Chunks.db from before update, so i will open externally and extract what sectors are saved here .
Btw i already updated map with full 20x20 sector around origin 0, 0 Now must fill remaining data about islands and regions!
I wrote a plugin who export raw data from game and now i have several exported/processed islands and i don't know if they are same (legacy) or a new sectors. I work on local world with same seed as server, so from here i have dilemma, locally except spawn sector all are generated with new algorithm post cave update, but on server several sectors was modified by player prior to update so i must somewhat distinguished old sector who remain unchanged.
Examples:
Hi.
I am in process of redone webmap for server https://medievalrealms.co.uk/ - https://map.medievalreal.ms . In old map i draw sectors based on 8000 x 8000 m size and now i will redone them as 8192 x 8192 m
I need to know if a sector/island is legacy one (generated with algorithm before cave update) or generated using new brand algorithm after cave update. How i can see/get this information?
Thx
I found a bug regarding watermelon. If are many close to each other, if i gather one with sickle i get seed and watermelon from him, but rest on proximity are destroyed. As how to see in images i collect one from 3 from middle, rest of 2 are destroyed. Or how to see in last image, a whole line are destroyed when i gathered first.
And second issue:
Any way to see better planted seed? It's almost impossible to see where you planted seed, before first stage of grow. In inventory, now seeds are more grey and see a bit better after last update, but on terrain when planting ...
Hmm... maybe the x or z coordinate was out of bounds? I just realized that the getLODSurfaceLevel() method has no safety checks The game works with native memory here, so if x or z is out of bounds (i.e. < 0 or >= 32), it accesses an invalid memory address which may result in a hard crash...
We'll change that with the next update, so the API will just throw a proper exception then^^
However, if you run into any other crashes (or if the method mentioned above still causes crashes despite using valid indices), please let me know
For sure that was. i think i messed initially calculate x and y of block position and because that i get out of bounds and game no check and got server crash.
Thx red51.
Lol i don't read until late after i figure how to make alone.
BTW i encountered server crash when i try to use function getLODSurfaceLevel()
I will try example from you to see if server still crash when i use function.
So i make something like this:
QuoteDisplay More/**
* Calculate surface for terrain for x and y coordinates
*
* Note: This function ignore object's from ground level like construction elements and so on!. Just terrain level.
*
* @param x coordinates X
* @param z coordinates Z
* @return Z coordinate - height of terrain surface
*/
public float getSurfaceLevel(float x, float z) {
// calculate chunk position.
int cx=ChunkUtils.getChunkPositionX(x);
int cz=ChunkUtils.getChunkPositionZ(z);
// Calculate block position in chunk
int bx=ChunkUtils.getBlockPositionX(x, cx);
int bz=ChunkUtils.getBlockPositionZ(z, cz);
log.debug(" Global position (x,z): {} {} | Chunk position (x,z) : {} {} | Block position (x,z): {} {}",x,z,cx,cz,bx,bz);
// Get chunk
Chunk chunk= World.getChunk(cx, cz);
// return height (Y axis) including water
// First try: i need only a block so i use function getLODSurfaceLevel() but follow line generate exception unhandled and crash server !
//return chunk.getLODSurfaceLevel(bx, bz, true);
// second try - read all chunk terrain height 32x32
float[] terrain = chunk.getLODTerrain();
// read only block what i need
return terrain[Chunk.getTerrainIndex(bx, bz)];
}
I tested your code. No crash! Function seems to work properly .
After i tested again my first variant. All worked fine.
I am not sure why earlier test server crashed many time with exception UNCAUGHT ...
QuoteDisplay More#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_UNCAUGHT_CXX_EXCEPTION (0xe06d7363) at pc=0x00007ffb8fb3cb69, pid=18844, tid=14684
#
# JRE version: OpenJDK Runtime Environment (20.0+36) (build 20+36-2344)
# Java VM: OpenJDK 64-Bit Server VM (20+36-2344, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# Problematic frame:
# C [KERNELBASE.dll+0x2cb69]
#
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
# If you would like to submit a bug report, please visit:
# https://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
--------------- S U M M A R Y ------------
Command Line: -Xmx1024M -Xms32M -Xss1M -XX:MaxDirectMemorySize=256M -XX:-OmitStackTraceInFastThrow
Host: AMD Ryzen 9 5900X 12-Core Processor , 24 cores, 31G, Windows 10 , 64 bit Build 19041 (10.0.19041.2788)
Time: Wed Apr 26 20:57:28 2023 GTB Daylight Time elapsed time: 156.669495 seconds (0d 0h 2m 36s)
--------------- T H R E A D ---------------
Current thread (0x0000023415380520): JavaThread "Thread-0" daemon [_thread_in_native, id=14684, stack(0x000000ad87300000,0x000000ad87400000)]
Stack: [0x000000ad87300000,0x000000ad87400000], sp=0x000000ad873fe6d0, free space=1017k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [KERNELBASE.dll+0x2cb69]
C [GameAssembly.dll+0x47a3a0]
C [GameAssembly.dll+0x3a9c3c]
C [GameAssembly.dll+0x3a9d23]
C [GameAssembly.dll+0x44f2f9]
C [GameAssembly.dll+0x16a01c2]
C [GameAssembly.dll+0x2cb1bc]
C 0x0000023403771ff3
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j net.risingworld.api.objects.world.Chunk.getLODSurfaceLevel(IIIIZ)F+0
j net.risingworld.api.objects.world.Chunk.getLODSurfaceLevel(IIZ)F+12
j bamse.rw.HelloWorld.showChunkData(Lnet/risingworld/api/objects/Player;)V+81
j bamse.rw.HelloWorld.keyInput(Lnet/risingworld/api/events/player/PlayerKeyEvent;)V+95
j java.lang.invoke.DirectMethodHandle$Holder.invokeVirtual(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+11 java.base@20
j java.lang.invoke.LambdaForm$MH+0x00000008010bf800.invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+52 java.base@20
J 1309 c2 net.jiw.unity.runtime.PluginEventHandler.triggerEvent(Lnet/risingworld/api/events/Event;)Z (388 bytes) @ 0x0000023403f03938 [0x0000023403f02dc0+0x0000000000000b78]
v ~StubRoutines::call_stub 0x000002340375100d
siginfo: EXCEPTION_UNCAUGHT_CXX_EXCEPTION (0xe06d7363), ExceptionInformation=0x0000000019930520 0x000000ad873fe850 0x00007ffae13b9988 0x00007ffade130000
Registers:
RAX=0x00007ffae47f6381, RBX=0x00007ffae13b9988, RCX=0x00007ffae53dc980, RDX=0x00000233804d5d90
RSP=0x000000ad873fe6d0, RBP=0x000000ad873fe9c8, RSI=0x000000ad873fe850, RDI=0x0000000019930520
R8 =0x0000000000000000, R9 =0x00007ffa00000000, R10=0x0000000000000002, R11=0x0000000000000000
R12=0x0000000000000000, R13=0x0000023411055280, R14=0x000000ad873fea10, R15=0x0000023415380520
RIP=0x00007ffb8fb3cb69, EFLAGS=0x0000000000000206
.....
Hi.
I want to make a function in API to teleport player on location (x,z), let say function teleport_to_surface(x,z). For this i need to calculate a safe Y value so player don't teleport underground or on high and fall to death. So require is to teleport on ground on terrain or if is any building block here, on top of it.
Any can have a idea to accomplish that?
First try was to use function raycastFromWorldPosition(...) but this have serious limitless like chunk when i want to teleport need to be rendered on client side and if teleport far away or on unexplored world .. this approach do not function.
For second try i think to read somehow position of Z direct from chunk data, but here i am stuck i don't have idea how i can do that. Moreover what happen if i want to work with a chunk which was not yet generated by server ...
Thx in advance for hints!
It's the case yahwho say. Survival. I make like other time: just planted and go away in other zone for a few days. When i come back nothing grow, but in same time i collect apples from some wild apple tree and they already have another apples in less 24h. I plant again a apple tree to see tomorrow if grow. BTW all apples tree are one protected area if this matter. And i collect some corn too. This, same like apple tree, don't make another corn. And apple tree and corn are planted at least from Sunday if remember correctly.
EDIT: I just check and apple tree, planted yesterday, are mature now with apples. That in around 12h. Still others, stuck on grow, apple tree and corn are the same: apple tree in some stage of grow and mature apple tree and corn not make another apple, corn.
It's like in some cases plants forget to grow. it happens to remains in sap stage, or in some grow stage. In first case collect sap and replant usually fix grow but in latter you lose sap if plant is apple tree for example. And this happen too with mature apple tree or corn. Collect it and it's a chance to not start to make apple or corn again.
This will be wonderfully. Just append a line to file, not replace all file and all will be fine.
Wow, this is amazing and a very creative solution! Well done!
Hi!
In meantime i found a solution for windows too. Same OCR software and awk for cleaning, but another setup for capture.
I just dreams , as red51, put a configurabile key bind who just throw a line with x,y,z into a file when player press it!
Bamse