temporary fix to the missing region bug

This commit is contained in:
Leonardo
2021-08-31 18:08:02 +02:00
parent 78d6481a49
commit e65579f346
3 changed files with 21 additions and 5 deletions
@@ -105,8 +105,8 @@ public class LodBufferBuilder
*/
private ReentrantLock bufferLock = new ReentrantLock();
private Object[][] setsToRender;
private RegionPos center;
private volatile Object[][] setsToRender;
private volatile RegionPos center;
public LodBufferBuilder()
{
@@ -346,7 +346,7 @@ public class LodBufferBuilder
* <p>
* Synchronized to prevent multiple moves happening on top of each other.
*/
public synchronized void move(RegionPos regionOffset, int width)
public void move(RegionPos regionOffset, int width)
{
int xOffset = regionOffset.x;
int zOffset = regionOffset.z;
@@ -522,6 +522,10 @@ public class LodDimension
{
LodRegion region = getRegion(regionPos);
region.getDataToRender(dataToRender, playerPosX, playerPosZ);
} catch (NullPointerException e)
{
System.out.println(regionPos);
e.printStackTrace();
} catch (Exception e)
{
//e.printStackTrace();
@@ -313,7 +313,14 @@ public class LodRegion implements Serializable
if (dataToRender.containsKey(levelPos))
{
levelPos.changeParameters(detailLevel, posX + regionPosX * size, posZ + regionPosZ * size);
dataToRender.get(levelPos).setTrue();
try
{
dataToRender.get(levelPos).setTrue();
}catch (Exception e){
/*TODO Fix this exception*/
System.out.println("error happened " + levelPos.getRegionPos());
dataToRender.put(new LevelPos(detailLevel, posX + regionPosX * size, posZ + regionPosZ * size), new MutableBoolean(true));
}
} else
{
dataToRender.put(new LevelPos(detailLevel, posX + regionPosX * size, posZ + regionPosZ * size), new MutableBoolean(true));
@@ -348,9 +355,14 @@ public class LodRegion implements Serializable
levelPos.changeParameters(detailLevel, posX + regionPosX * size, posZ + regionPosZ * size);
if (dataToRender.containsKey(levelPos))
{
if (dataToRender.get(levelPos) == null)
dataToRender.replace(levelPos, new MutableBoolean());
dataToRender.get(levelPos).setTrue();
else
} else
{
dataToRender.put(new LevelPos(detailLevel, posX + regionPosX * size, posZ + regionPosZ * size), new MutableBoolean(true));
}
}
}
}