fixed server not overriding lower quality
This commit is contained in:
@@ -46,6 +46,7 @@ import net.minecraft.world.biome.Biome;
|
||||
import net.minecraft.world.chunk.ChunkSection;
|
||||
import net.minecraft.world.chunk.IChunk;
|
||||
import net.minecraft.world.gen.Heightmap;
|
||||
import org.lwjgl.system.CallbackI;
|
||||
|
||||
/**
|
||||
* This object is in charge of creating Lod related objects. (specifically: Lod
|
||||
@@ -190,10 +191,12 @@ public class LodBuilder
|
||||
chunk.getPos().x * 16 + startX,
|
||||
chunk.getPos().z * 16 + startZ);
|
||||
levelPos.convert(detail.detailLevel);
|
||||
boolean isServer = config.distanceGenerationMode == DistanceGenerationMode.SERVER;
|
||||
data = DataPoint.createDataPoint(height, depth, color[0], color[1], color[2]);
|
||||
lodDim.addData(levelPos,
|
||||
data,
|
||||
false);
|
||||
false,
|
||||
isServer);
|
||||
}
|
||||
//levelPos.changeParameters(LodUtil.CHUNK_DETAIL_LEVEL, chunk.getPos().x, chunk.getPos().z);
|
||||
|
||||
|
||||
@@ -173,7 +173,7 @@ public class LodConfig
|
||||
lodChunkRenderDistance = builder
|
||||
.comment("\n\n"
|
||||
+ " This is the render distance of the mod \n")
|
||||
.defineInRange("lodChunkRenderDistane", 128, 32, 512);
|
||||
.defineInRange("lodChunkRenderDistane", 128, 32, 256);
|
||||
|
||||
distanceGenerationMode = builder
|
||||
.comment("\n\n"
|
||||
|
||||
@@ -431,7 +431,7 @@ public class LodDimension
|
||||
* stored in the LOD. If an LOD already exists at the given
|
||||
* coordinates it will be overwritten.
|
||||
*/
|
||||
public synchronized Boolean addData(LevelPos levelPos, short[] lodDataPoint, boolean dontSave)
|
||||
public synchronized Boolean addData(LevelPos levelPos, short[] lodDataPoint, boolean dontSave, boolean serverQuality)
|
||||
{
|
||||
|
||||
// don't continue if the region can't be saved
|
||||
@@ -443,7 +443,7 @@ public class LodDimension
|
||||
|
||||
LodRegion region = getRegion(levelPos);
|
||||
|
||||
boolean nodeAdded = region.addData(levelPos, lodDataPoint);
|
||||
boolean nodeAdded = region.addData(levelPos, lodDataPoint, serverQuality);
|
||||
// only save valid LODs to disk
|
||||
if (!dontSave && fileHandler != null)
|
||||
{
|
||||
|
||||
@@ -41,6 +41,7 @@ public class LodRegion implements Serializable
|
||||
|
||||
private boolean[][][] dataExistence;
|
||||
|
||||
|
||||
public final int regionPosX;
|
||||
public final int regionPosZ;
|
||||
|
||||
@@ -124,10 +125,10 @@ public class LodRegion implements Serializable
|
||||
* @param dataPoint
|
||||
* @return
|
||||
*/
|
||||
public boolean addData(LevelPos levelPos, short[] dataPoint)
|
||||
public boolean addData(LevelPos levelPos, short[] dataPoint, boolean serverQuality)
|
||||
{
|
||||
levelPos.performRegionModule();
|
||||
if (!doesDataExist(levelPos))
|
||||
if (!doesDataExist(levelPos) || serverQuality)
|
||||
{
|
||||
|
||||
//update the number of node present
|
||||
@@ -147,25 +148,6 @@ public class LodRegion implements Serializable
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public short[] getData(ChunkPos chunkPos)
|
||||
{
|
||||
return getData(new LevelPos(LodUtil.CHUNK_DETAIL_LEVEL, chunkPos.x, chunkPos.z));
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will return the data in the position relative to the level of detail
|
||||
*
|
||||
* @param lod
|
||||
* @return the data at the relative pos and level
|
||||
*/
|
||||
public short[] getData(byte lod, BlockPos blockPos)
|
||||
{
|
||||
int posX = Math.floorMod(blockPos.getX(), (int) Math.pow(2, lod));
|
||||
int posZ = Math.floorMod(blockPos.getZ(), (int) Math.pow(2, lod));
|
||||
return getData(new LevelPos(lod, posX, posZ));
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will return the data in the position relative to the level of detail
|
||||
*
|
||||
@@ -458,38 +440,6 @@ public class LodRegion implements Serializable
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param levelPos
|
||||
* @return
|
||||
*/
|
||||
private boolean[][] getChildren(LevelPos levelPos)
|
||||
{
|
||||
levelPos = levelPos.getRegionModuleLevelPos();
|
||||
boolean[][] children = new boolean[2][2];
|
||||
int numberOfChild = 0;
|
||||
if (minDetailLevel == levelPos.detailLevel)
|
||||
{
|
||||
return children;
|
||||
}
|
||||
for (int x = 0; x <= 1; x++)
|
||||
{
|
||||
for (int z = 0; z <= 1; z++)
|
||||
{
|
||||
children[x][z] = (dataExistence[levelPos.detailLevel - 1][2 * levelPos.posX + x][2 * levelPos.posZ + z]);
|
||||
}
|
||||
}
|
||||
return children;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param chunkPos
|
||||
* @return
|
||||
*/
|
||||
public boolean doesDataExist(ChunkPos chunkPos)
|
||||
{
|
||||
return doesDataExist(new LevelPos(LodUtil.CHUNK_DETAIL_LEVEL, chunkPos.x, chunkPos.z));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param levelPos
|
||||
* @return
|
||||
|
||||
Reference in New Issue
Block a user