Renamed RegionPos to DHRegionPos as per the suggestion
This commit is contained in:
@@ -26,7 +26,7 @@ import com.seibel.lod.core.handlers.dependencyInjection.SingletonHandler;
|
||||
import com.seibel.lod.core.logging.DhLoggerBuilder;
|
||||
import com.seibel.lod.core.objects.DHChunkPos;
|
||||
import com.seibel.lod.core.objects.lod.LodDimension;
|
||||
import com.seibel.lod.core.objects.lod.RegionPos;
|
||||
import com.seibel.lod.core.objects.DHRegionPos;
|
||||
import com.seibel.lod.core.render.GLProxy;
|
||||
import com.seibel.lod.core.render.LodRenderer;
|
||||
import com.seibel.lod.core.util.DetailDistanceUtil;
|
||||
@@ -217,9 +217,9 @@ public class EventApi
|
||||
public void playerMoveEvent(LodDimension lodDim)
|
||||
{
|
||||
// make sure the dimension is centered
|
||||
RegionPos playerRegionPos = new RegionPos(MC.getPlayerBlockPos());
|
||||
RegionPos center = lodDim.getCenterRegionPos();
|
||||
RegionPos worldRegionOffset = new RegionPos(playerRegionPos.x - center.x, playerRegionPos.z - center.z);
|
||||
DHRegionPos playerRegionPos = new DHRegionPos(MC.getPlayerBlockPos());
|
||||
DHRegionPos center = lodDim.getCenterRegionPos();
|
||||
DHRegionPos worldRegionOffset = new DHRegionPos(playerRegionPos.x - center.x, playerRegionPos.z - center.z);
|
||||
if (worldRegionOffset.x != 0 || worldRegionOffset.z != 0)
|
||||
{
|
||||
lodDim.move(worldRegionOffset);
|
||||
|
||||
+2
-3
@@ -24,13 +24,12 @@ import java.time.Duration;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
import com.seibel.lod.core.api.internal.InternalApiShared;
|
||||
import com.seibel.lod.core.handlers.dependencyInjection.SingletonHandler;
|
||||
import com.seibel.lod.core.logging.DhLoggerBuilder;
|
||||
import com.seibel.lod.core.logging.SpamReducedLogger;
|
||||
import com.seibel.lod.core.objects.Pos2D;
|
||||
import com.seibel.lod.core.objects.lod.LodDimension;
|
||||
import com.seibel.lod.core.objects.lod.RegionPos;
|
||||
import com.seibel.lod.core.objects.DHRegionPos;
|
||||
import com.seibel.lod.core.objects.opengl.RenderRegion;
|
||||
import com.seibel.lod.core.render.LodRenderer;
|
||||
import com.seibel.lod.core.render.objects.GLBuffer;
|
||||
@@ -227,7 +226,7 @@ public class LodBufferBuilderFactory {
|
||||
for (int regX = minPos.x; regX < maxPos.x; regX++) {
|
||||
for (int regZ = minPos.y; regZ < maxPos.y; regZ++) {
|
||||
RenderRegion r = renderRegions.get(regX, regZ);
|
||||
RegionPos regPos = new RegionPos(regX, regZ);
|
||||
DHRegionPos regPos = new DHRegionPos(regX, regZ);
|
||||
if (r != null && !r.canRender(lodDim, regPos)) {
|
||||
renderRegions.set(regX, regZ, null);
|
||||
r.close();
|
||||
|
||||
@@ -45,7 +45,7 @@ import com.seibel.lod.core.enums.config.VerticalQuality;
|
||||
import com.seibel.lod.core.objects.lod.LevelContainer;
|
||||
import com.seibel.lod.core.objects.lod.LodDimension;
|
||||
import com.seibel.lod.core.objects.lod.LodRegion;
|
||||
import com.seibel.lod.core.objects.lod.RegionPos;
|
||||
import com.seibel.lod.core.objects.DHRegionPos;
|
||||
import com.seibel.lod.core.objects.lod.VerticalLevelContainer;
|
||||
import com.seibel.lod.core.util.LodThreadFactory;
|
||||
import com.seibel.lod.core.util.LodUtil;
|
||||
@@ -117,7 +117,7 @@ public class LodDimensionFileHandler
|
||||
private ExecutorService fileWritingThreadPool = Executors.newSingleThreadExecutor(
|
||||
new LodThreadFactory(this.getClass().getSimpleName(), Thread.NORM_PRIORITY + 1));
|
||||
|
||||
private final ConcurrentHashMap<RegionPos, LodRegion> regionToSave = new ConcurrentHashMap<RegionPos, LodRegion>();
|
||||
private final ConcurrentHashMap<DHRegionPos, LodRegion> regionToSave = new ConcurrentHashMap<DHRegionPos, LodRegion>();
|
||||
|
||||
|
||||
public LodDimensionFileHandler(File newSaveFolder, LodDimension newLodDimension)
|
||||
@@ -199,7 +199,7 @@ public class LodDimensionFileHandler
|
||||
* Returns a new LodRegion at the given coordinates.
|
||||
* Returns an empty region if the file doesn't exist.
|
||||
*/
|
||||
public LodRegion loadRegionFromFile(byte detailLevel, RegionPos regionPos, VerticalQuality verticalQuality)
|
||||
public LodRegion loadRegionFromFile(byte detailLevel, DHRegionPos regionPos, VerticalQuality verticalQuality)
|
||||
{
|
||||
// Get one from the region hot cache
|
||||
LodRegion region = regionToSave.get(regionPos);
|
||||
|
||||
@@ -33,7 +33,7 @@ import com.seibel.lod.core.logging.ConfigBasedLogger;
|
||||
import com.seibel.lod.core.objects.DHChunkPos;
|
||||
import com.seibel.lod.core.objects.lod.LodDimension;
|
||||
import com.seibel.lod.core.objects.lod.LodRegion;
|
||||
import com.seibel.lod.core.objects.lod.RegionPos;
|
||||
import com.seibel.lod.core.objects.DHRegionPos;
|
||||
import com.seibel.lod.core.util.DataPointUtil;
|
||||
import com.seibel.lod.core.util.LodUtil;
|
||||
import com.seibel.lod.core.wrapperInterfaces.IWrapperFactory;
|
||||
@@ -226,7 +226,7 @@ public class LodDimensionFinder
|
||||
DHChunkPos playerChunkPos = new DHChunkPos(playerData.playerBlockPos);
|
||||
int startingBlockPosX = playerChunkPos.getMinBlockX();
|
||||
int startingBlockPosZ = playerChunkPos.getMinBlockZ();
|
||||
RegionPos playerRegionPos = new RegionPos(playerChunkPos);
|
||||
DHRegionPos playerRegionPos = new DHRegionPos(playerChunkPos);
|
||||
|
||||
|
||||
// chunk from the newly loaded dimension
|
||||
|
||||
+10
-11
@@ -30,12 +30,11 @@ import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
import com.seibel.lod.core.api.internal.InternalApiShared;
|
||||
import com.seibel.lod.core.logging.DhLoggerBuilder;
|
||||
import org.apache.commons.compress.compressors.xz.XZCompressorInputStream;
|
||||
|
||||
import com.seibel.lod.core.enums.config.VerticalQuality;
|
||||
import com.seibel.lod.core.objects.lod.RegionPos;
|
||||
import com.seibel.lod.core.objects.DHRegionPos;
|
||||
import com.seibel.lod.core.objects.lod.VerticalLevelContainer;
|
||||
import com.seibel.lod.core.util.LodUtil;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@@ -76,7 +75,7 @@ public class LodDimensionOldFileStructureHandler
|
||||
final VerticalQuality vertQual;
|
||||
final int posX;
|
||||
final int posZ;
|
||||
TempLodRegion(VerticalQuality vertQual, RegionPos pos) {
|
||||
TempLodRegion(VerticalQuality vertQual, DHRegionPos pos) {
|
||||
this.vertQual = vertQual;
|
||||
posX = pos.x;
|
||||
posZ = pos.z;
|
||||
@@ -166,7 +165,7 @@ public class LodDimensionOldFileStructureHandler
|
||||
}
|
||||
}
|
||||
|
||||
private void loadAndMergeAndSaveRegion(VerticalQuality verticalQuality, RegionPos regionPos)
|
||||
private void loadAndMergeAndSaveRegion(VerticalQuality verticalQuality, DHRegionPos regionPos)
|
||||
{
|
||||
LOGGER.info("Merging region "+regionPos+" at "+verticalQuality+"...");
|
||||
TempLodRegion region = new TempLodRegion(verticalQuality, regionPos);
|
||||
@@ -184,20 +183,20 @@ public class LodDimensionOldFileStructureHandler
|
||||
|
||||
|
||||
|
||||
private RegionPos parseFileName(String fileName) {
|
||||
private DHRegionPos parseFileName(String fileName) {
|
||||
if (!fileName.endsWith(FILE_EXTENSION)) return null;
|
||||
if (!fileName.startsWith(FILE_NAME_PREFIX)) return null;
|
||||
String[] array = fileName.split("\\."); // Array content: "lod", "-1", "1", ".xz"
|
||||
if (array.length!=4) return null;
|
||||
try {
|
||||
return new RegionPos(Integer.parseInt(array[1]), Integer.parseInt(array[2]));
|
||||
return new DHRegionPos(Integer.parseInt(array[1]), Integer.parseInt(array[2]));
|
||||
} catch (NumberFormatException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private HashSet<RegionPos> scanOldRegionFiles(VerticalQuality vertQual, OldDistanceGenerationMode genMode) {
|
||||
HashSet<RegionPos> result = new HashSet<RegionPos>();
|
||||
private HashSet<DHRegionPos> scanOldRegionFiles(VerticalQuality vertQual, OldDistanceGenerationMode genMode) {
|
||||
HashSet<DHRegionPos> result = new HashSet<DHRegionPos>();
|
||||
File baseBaseFolder = new File(getFileBasePath() + vertQual + File.separatorChar + genMode);
|
||||
if (!baseBaseFolder.exists()) return result;
|
||||
for (byte detail=0; detail <= LodUtil.REGION_DETAIL_LEVEL; detail++) {
|
||||
@@ -209,7 +208,7 @@ public class LodDimensionOldFileStructureHandler
|
||||
for (File subFile : subFiles) {
|
||||
if (!subFile.isFile()) continue;
|
||||
if (!subFile.canRead()) continue;
|
||||
RegionPos pos = parseFileName(subFile.getName());
|
||||
DHRegionPos pos = parseFileName(subFile.getName());
|
||||
if (pos != null) result.add(pos);
|
||||
}
|
||||
}
|
||||
@@ -226,7 +225,7 @@ public class LodDimensionOldFileStructureHandler
|
||||
File baseFile = new File(getFileBasePath() + vertQual);
|
||||
if (!baseFile.exists()) return;
|
||||
if (!baseFile.isDirectory()) return;
|
||||
HashSet<RegionPos> totalPos = new HashSet<RegionPos>();
|
||||
HashSet<DHRegionPos> totalPos = new HashSet<DHRegionPos>();
|
||||
totalPos.addAll(scanOldRegionFiles(vertQual, OldDistanceGenerationMode.NONE));
|
||||
totalPos.addAll(scanOldRegionFiles(vertQual, OldDistanceGenerationMode.BIOME_ONLY));
|
||||
totalPos.addAll(scanOldRegionFiles(vertQual, OldDistanceGenerationMode.BIOME_ONLY_SIMULATE_HEIGHT));
|
||||
@@ -234,7 +233,7 @@ public class LodDimensionOldFileStructureHandler
|
||||
totalPos.addAll(scanOldRegionFiles(vertQual, OldDistanceGenerationMode.FEATURES));
|
||||
totalPos.addAll(scanOldRegionFiles(vertQual, OldDistanceGenerationMode.FULL));
|
||||
ArrayList<Future<?>> futures = new ArrayList<Future<?>>();
|
||||
for (RegionPos pos : totalPos) {
|
||||
for (DHRegionPos pos : totalPos) {
|
||||
futures.add(mergerThreads.submit(() -> {
|
||||
loadAndMergeAndSaveRegion(vertQual, pos);
|
||||
return true;
|
||||
|
||||
+8
-10
@@ -17,10 +17,8 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.seibel.lod.core.objects.lod;
|
||||
package com.seibel.lod.core.objects;
|
||||
|
||||
import com.seibel.lod.core.objects.DHBlockPos;
|
||||
import com.seibel.lod.core.objects.DHChunkPos;
|
||||
import com.seibel.lod.core.util.LodUtil;
|
||||
/**
|
||||
* This object is similar to ChunkPos or BlockPos.
|
||||
@@ -28,35 +26,35 @@ import com.seibel.lod.core.util.LodUtil;
|
||||
* @author James Seibel
|
||||
* @version 8-21-2021
|
||||
*/
|
||||
public class RegionPos
|
||||
public class DHRegionPos
|
||||
{
|
||||
|
||||
public int x;
|
||||
public int z;
|
||||
|
||||
/** Sets x and z to 0 */
|
||||
public RegionPos()
|
||||
public DHRegionPos()
|
||||
{
|
||||
x = 0;
|
||||
z = 0;
|
||||
}
|
||||
|
||||
/** simple constructor that sets x and z to new x and z. */
|
||||
public RegionPos(int newX, int newZ)
|
||||
public DHRegionPos(int newX, int newZ)
|
||||
{
|
||||
x = newX;
|
||||
z = newZ;
|
||||
}
|
||||
|
||||
/** Converts from a BlockPos to a RegionPos */
|
||||
public RegionPos(DHBlockPos pos)
|
||||
public DHRegionPos(DHBlockPos pos)
|
||||
{
|
||||
x = Math.floorDiv(pos.x >> 4, LodUtil.REGION_WIDTH_IN_CHUNKS);
|
||||
z = Math.floorDiv(pos.z >> 4, LodUtil.REGION_WIDTH_IN_CHUNKS);
|
||||
}
|
||||
|
||||
/** Converts from a ChunkPos to a RegionPos */
|
||||
public RegionPos(DHChunkPos pos)
|
||||
public DHRegionPos(DHChunkPos pos)
|
||||
{
|
||||
x = Math.floorDiv(pos.getX(), LodUtil.REGION_WIDTH_IN_CHUNKS);
|
||||
z = Math.floorDiv(pos.getZ(), LodUtil.REGION_WIDTH_IN_CHUNKS);
|
||||
@@ -85,10 +83,10 @@ public class RegionPos
|
||||
return true;
|
||||
}
|
||||
// Check if o is an instance of RegionPos or not
|
||||
if (!(o instanceof RegionPos)) {
|
||||
if (!(o instanceof DHRegionPos)) {
|
||||
return false;
|
||||
}
|
||||
RegionPos c = (RegionPos) o;
|
||||
DHRegionPos c = (DHRegionPos) o;
|
||||
return c.x==x &&c.z==z;
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ import com.seibel.lod.core.logging.DhLoggerBuilder;
|
||||
import com.seibel.lod.core.logging.SpamReducedLogger;
|
||||
import com.seibel.lod.core.objects.Pos2D;
|
||||
import com.seibel.lod.core.objects.PosToGenerateContainer;
|
||||
import com.seibel.lod.core.objects.DHRegionPos;
|
||||
import com.seibel.lod.core.util.*;
|
||||
import com.seibel.lod.core.util.gridList.MovableGridRingList;
|
||||
import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton;
|
||||
@@ -77,7 +78,7 @@ public class LodDimension
|
||||
/** stores all the regions in this dimension */
|
||||
public MovableGridRingList<LodRegion> regions;
|
||||
//NOTE: This list pos is relative to center
|
||||
private volatile RegionPos[] iteratorList = null;
|
||||
private volatile DHRegionPos[] iteratorList = null;
|
||||
|
||||
|
||||
private LodDimensionFileHandler fileHandler = null;
|
||||
@@ -141,12 +142,12 @@ public class LodDimension
|
||||
private void generateIteratorList()
|
||||
{
|
||||
iteratorList = null;
|
||||
RegionPos[] list = new RegionPos[width*width];
|
||||
DHRegionPos[] list = new DHRegionPos[width*width];
|
||||
|
||||
int i = 0;
|
||||
for (int ix=-halfWidth; ix<=halfWidth; ix++) {
|
||||
for (int iz=-halfWidth; iz<=halfWidth; iz++) {
|
||||
list[i] = new RegionPos(ix, iz);
|
||||
list[i] = new DHRegionPos(ix, iz);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
@@ -167,7 +168,7 @@ public class LodDimension
|
||||
* <p>
|
||||
* Synchronized to prevent multiple moves happening on top of each other.
|
||||
*/
|
||||
public synchronized void move(RegionPos regionOffset)
|
||||
public synchronized void move(DHRegionPos regionOffset)
|
||||
{
|
||||
if (this.logEvents)
|
||||
LOGGER.info("LodDim MOVE. Offset: "+regionOffset);
|
||||
@@ -259,7 +260,7 @@ public class LodDimension
|
||||
}
|
||||
public void iterateByDistance(PosConsumer r) {
|
||||
if (iteratorList==null) return;
|
||||
for (RegionPos relativePos : iteratorList) {
|
||||
for (DHRegionPos relativePos : iteratorList) {
|
||||
r.run(relativePos.x+halfWidth, relativePos.z+halfWidth);
|
||||
}
|
||||
|
||||
@@ -373,7 +374,7 @@ public class LodDimension
|
||||
byte maxDetail;
|
||||
regionX = x + minPos.x;
|
||||
regionZ = z + minPos.y;
|
||||
final RegionPos regionPos = new RegionPos(regionX, regionZ);
|
||||
final DHRegionPos regionPos = new DHRegionPos(regionX, regionZ);
|
||||
region = regions.get(regionX, regionZ);
|
||||
if (region != null && region.isWriting.get()!=0) return; // FIXME: A crude attempt at lowering chance of race condition!
|
||||
|
||||
@@ -601,7 +602,7 @@ public class LodDimension
|
||||
* Loads the region at the given RegionPos from file,
|
||||
* if a file exists for that region.
|
||||
*/
|
||||
public LodRegion getRegionFromFile(RegionPos regionPos, byte detailLevel, VerticalQuality verticalQuality)
|
||||
public LodRegion getRegionFromFile(DHRegionPos regionPos, byte detailLevel, VerticalQuality verticalQuality)
|
||||
{
|
||||
return fileHandler != null ? fileHandler.loadRegionFromFile(detailLevel, regionPos, verticalQuality) :
|
||||
new LodRegion(detailLevel, regionPos, verticalQuality);
|
||||
@@ -658,9 +659,9 @@ public class LodDimension
|
||||
return regions.getCenter().y;
|
||||
}
|
||||
|
||||
public RegionPos getCenterRegionPos() {
|
||||
public DHRegionPos getCenterRegionPos() {
|
||||
Pos2D p = regions.getCenter();
|
||||
return new RegionPos(p.x, p.y);
|
||||
return new DHRegionPos(p.x, p.y);
|
||||
}
|
||||
|
||||
/** returns the width of the dimension in regions */
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
|
||||
package com.seibel.lod.core.objects.lod;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.ConcurrentModificationException;
|
||||
import java.util.Iterator;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
@@ -29,10 +28,7 @@ import com.seibel.lod.core.enums.config.DropoffQuality;
|
||||
import com.seibel.lod.core.enums.config.GenerationPriority;
|
||||
import com.seibel.lod.core.enums.config.VerticalQuality;
|
||||
import com.seibel.lod.core.handlers.dependencyInjection.SingletonHandler;
|
||||
import com.seibel.lod.core.objects.LodDataView;
|
||||
import com.seibel.lod.core.objects.Pos2D;
|
||||
import com.seibel.lod.core.objects.PosToGenerateContainer;
|
||||
import com.seibel.lod.core.objects.PosToRenderContainer;
|
||||
import com.seibel.lod.core.objects.*;
|
||||
import com.seibel.lod.core.util.DataPointUtil;
|
||||
import com.seibel.lod.core.util.DetailDistanceUtil;
|
||||
import com.seibel.lod.core.util.LevelPosUtil;
|
||||
@@ -91,7 +87,7 @@ public class LodRegion {
|
||||
return (byte)LodUtil.clamp(LodUtil.CHUNK_DETAIL_LEVEL+1, farModeLevel, LodUtil.DETAIL_OPTIONS - 1);
|
||||
}
|
||||
|
||||
public LodRegion(byte minDetailLevel, RegionPos regionPos, VerticalQuality verticalQuality) {
|
||||
public LodRegion(byte minDetailLevel, DHRegionPos regionPos, VerticalQuality verticalQuality) {
|
||||
this.minDetailLevel = minDetailLevel;
|
||||
this.regionPosX = regionPos.x;
|
||||
this.regionPosZ = regionPos.z;
|
||||
@@ -701,8 +697,8 @@ public class LodRegion {
|
||||
/**
|
||||
* return RegionPos of this lod region
|
||||
*/
|
||||
public RegionPos getRegionPos() {
|
||||
return new RegionPos(regionPosX, regionPosZ);
|
||||
public DHRegionPos getRegionPos() {
|
||||
return new DHRegionPos(regionPosX, regionPosZ);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -41,7 +41,7 @@ import com.seibel.lod.core.objects.LodDataView;
|
||||
import com.seibel.lod.core.objects.PosToRenderContainer;
|
||||
import com.seibel.lod.core.objects.lod.LodDimension;
|
||||
import com.seibel.lod.core.objects.lod.LodRegion;
|
||||
import com.seibel.lod.core.objects.lod.RegionPos;
|
||||
import com.seibel.lod.core.objects.DHRegionPos;
|
||||
import com.seibel.lod.core.objects.math.Vec3d;
|
||||
import com.seibel.lod.core.objects.math.Vec3f;
|
||||
import com.seibel.lod.core.render.GLProxy;
|
||||
@@ -75,7 +75,7 @@ public class RenderRegion implements AutoCloseable
|
||||
Invalidated,
|
||||
}
|
||||
|
||||
final RegionPos regionPos;
|
||||
final DHRegionPos regionPos;
|
||||
RenderBuffer renderBufferBack = null;
|
||||
AtomicReference<BackState> backState =
|
||||
new AtomicReference<BackState>(BackState.Unused);
|
||||
@@ -84,12 +84,12 @@ public class RenderRegion implements AutoCloseable
|
||||
RenderBuffer renderBufferFront = null;
|
||||
final LodDimension lodDim;
|
||||
|
||||
public RenderRegion(RegionPos regPos, LodDimension lodDim) {
|
||||
public RenderRegion(DHRegionPos regPos, LodDimension lodDim) {
|
||||
regionPos = regPos;
|
||||
this.lodDim = lodDim;
|
||||
}
|
||||
|
||||
public boolean canRender(LodDimension lodDim, RegionPos regPos) {
|
||||
public boolean canRender(LodDimension lodDim, DHRegionPos regPos) {
|
||||
return lodDim == this.lodDim && regPos.equals(regionPos);
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ import com.seibel.lod.core.objects.DHChunkPos;
|
||||
import com.seibel.lod.core.objects.ParsedIp;
|
||||
import com.seibel.lod.core.objects.Pos2D;
|
||||
import com.seibel.lod.core.objects.lod.LodDimension;
|
||||
import com.seibel.lod.core.objects.lod.RegionPos;
|
||||
import com.seibel.lod.core.objects.DHRegionPos;
|
||||
import com.seibel.lod.core.objects.opengl.DefaultLodVertexFormats;
|
||||
import com.seibel.lod.core.objects.opengl.LodVertexFormat;
|
||||
import com.seibel.lod.core.util.gridList.EdgeDistanceBooleanGrid;
|
||||
@@ -185,12 +185,12 @@ public class LodUtil
|
||||
}
|
||||
|
||||
/** Convert a 2D absolute position into a quad tree relative position. */
|
||||
public static RegionPos convertGenericPosToRegionPos(int x, int z, int detailLevel)
|
||||
public static DHRegionPos convertGenericPosToRegionPos(int x, int z, int detailLevel)
|
||||
{
|
||||
int relativePosX = Math.floorDiv(x, 1 << (LodUtil.REGION_DETAIL_LEVEL - detailLevel));
|
||||
int relativePosZ = Math.floorDiv(z, 1 << (LodUtil.REGION_DETAIL_LEVEL - detailLevel));
|
||||
|
||||
return new RegionPos(relativePosX, relativePosZ);
|
||||
return new DHRegionPos(relativePosX, relativePosZ);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -21,13 +21,9 @@ package com.seibel.lod.core.wrapperInterfaces.chunk;
|
||||
|
||||
import com.seibel.lod.core.enums.LodDirection;
|
||||
import com.seibel.lod.core.handlers.dependencyInjection.IBindable;
|
||||
import com.seibel.lod.core.objects.DHBlockPos;
|
||||
import com.seibel.lod.core.objects.DHChunkPos;
|
||||
import com.seibel.lod.core.objects.lod.RegionPos;
|
||||
import com.seibel.lod.core.util.LodUtil;
|
||||
import com.seibel.lod.core.wrapperInterfaces.block.IBlockDetailWrapper;
|
||||
import com.seibel.lod.core.wrapperInterfaces.world.IBiomeWrapper;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
|
||||
/**
|
||||
* @author James Seibel
|
||||
|
||||
Reference in New Issue
Block a user