Add DhWorld.GetAllLevels() and ILevel.GetLevelWrapper()

This commit is contained in:
James Seibel
2022-08-23 22:43:08 -05:00
parent f203679de4
commit d1126afc44
8 changed files with 91 additions and 10 deletions
@@ -81,7 +81,13 @@ public class DhClientLevel implements IClientLevel {
public IClientLevelWrapper getClientLevelWrapper() {
return level;
}
@Override
public ILevelWrapper getLevelWrapper()
{
return this.level;
}
@Override
public int getMinY() {
return level.getMinHeight();
@@ -97,4 +103,5 @@ public class DhClientLevel implements IClientLevel {
renderFileHandler.close();
LOGGER.info("Closed DHLevel for {}", level);
}
}
@@ -22,6 +22,7 @@ import com.seibel.lod.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import com.seibel.lod.core.wrapperInterfaces.minecraft.IProfilerWrapper;
import com.seibel.lod.core.wrapperInterfaces.world.IBiomeWrapper;
import com.seibel.lod.core.wrapperInterfaces.world.IClientLevelWrapper;
import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper;
import com.seibel.lod.core.wrapperInterfaces.world.IServerLevelWrapper;
import org.apache.logging.log4j.Logger;
@@ -129,7 +130,13 @@ public class DhClientServerLevel implements IClientLevel, IServerLevel {
public IClientLevelWrapper getClientLevelWrapper() {
return clientLevel;
}
@Override
public ILevelWrapper getLevelWrapper()
{
return this.serverLevel;
}
@Override
public void dumpRamUsage() {
//TODO
@@ -4,12 +4,14 @@ import com.seibel.lod.core.a7.util.FileScanner;
import com.seibel.lod.core.a7.save.io.file.DataFileHandler;
import com.seibel.lod.core.a7.save.structure.LocalSaveStructure;
import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper;
import com.seibel.lod.core.wrapperInterfaces.world.IServerLevelWrapper;
import org.apache.logging.log4j.Logger;
import java.util.concurrent.CompletableFuture;
public class DhServerLevel implements IServerLevel {
public class DhServerLevel implements IServerLevel
{
private static final Logger LOGGER = DhLoggerBuilder.getLogger();
public final LocalSaveStructure save;
@@ -57,4 +59,11 @@ public class DhServerLevel implements IServerLevel {
public IServerLevelWrapper getServerLevelWrapper() {
return level;
}
@Override
public ILevelWrapper getLevelWrapper()
{
return this.level;
}
}
@@ -4,9 +4,14 @@ import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper;
import java.util.concurrent.CompletableFuture;
public interface ILevel extends AutoCloseable {
public interface ILevel extends AutoCloseable
{
int getMinY();
CompletableFuture<Void> save();
void dumpRamUsage();
/** May return either a client or server level wrapper. */
ILevelWrapper getLevelWrapper();
}
@@ -1,6 +1,7 @@
package com.seibel.lod.core.a7.world;
import com.seibel.lod.core.a7.level.DhClientServerLevel;
import com.seibel.lod.core.a7.level.ILevel;
import com.seibel.lod.core.a7.save.structure.LocalSaveStructure;
import com.seibel.lod.core.config.Config;
import com.seibel.lod.core.util.EventLoop;
@@ -16,7 +17,8 @@ import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
public class DhClientServerWorld extends DhWorld implements IClientWorld, IServerWorld {
public class DhClientServerWorld extends DhWorld implements IClientWorld, IServerWorld
{
private final HashMap<ILevelWrapper, DhClientServerLevel> levels;
public final LocalSaveStructure saveStructure;
public ExecutorService dhTickerThread = LodUtil.makeSingleThreadPool("DHTickerThread", 2);
@@ -54,7 +56,22 @@ public class DhClientServerWorld extends DhWorld implements IClientWorld, IServe
public DhClientServerLevel getLevel(ILevelWrapper wrapper) {
return levels.get(wrapper);
}
@Override
public ILevel[] getAllLoadedLevels()
{
ILevel[] array = new ILevel[this.levels.size()];
int i = 0;
for (ILevel level : this.levels.values())
{
array[i] = level;
i++;
}
return array;
}
@Override
public void unloadLevel(ILevelWrapper wrapper) {
if (levels.containsKey(wrapper)) {
@@ -2,6 +2,7 @@ package com.seibel.lod.core.a7.world;
import com.seibel.lod.core.a7.level.DhClientLevel;
import com.seibel.lod.core.a7.level.DhClientServerLevel;
import com.seibel.lod.core.a7.level.ILevel;
import com.seibel.lod.core.a7.save.structure.ClientOnlySaveStructure;
import com.seibel.lod.core.config.Config;
import com.seibel.lod.core.util.DetailDistanceUtil;
@@ -16,7 +17,8 @@ import java.util.Iterator;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
public class DhClientWorld extends DhWorld implements IClientWorld {
public class DhClientWorld extends DhWorld implements IClientWorld
{
private final HashMap<IClientLevelWrapper, DhClientLevel> levels;
public final ClientOnlySaveStructure saveStructure;
public ExecutorService dhTickerThread = LodUtil.makeSingleThreadPool("DHTickerThread", 2);
@@ -45,6 +47,21 @@ public class DhClientWorld extends DhWorld implements IClientWorld {
if (!(wrapper instanceof IClientLevelWrapper)) return null;
return levels.get(wrapper);
}
@Override
public ILevel[] getAllLoadedLevels()
{
ILevel[] array = new ILevel[this.levels.size()];
int i = 0;
for (ILevel level : this.levels.values())
{
array[i] = level;
i++;
}
return array;
}
@Override
public void unloadLevel(ILevelWrapper wrapper) {
@@ -1,6 +1,7 @@
package com.seibel.lod.core.a7.world;
import com.seibel.lod.core.a7.level.DhServerLevel;
import com.seibel.lod.core.a7.level.ILevel;
import com.seibel.lod.core.a7.save.structure.LocalSaveStructure;
import com.seibel.lod.core.util.LodUtil;
import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper;
@@ -10,7 +11,8 @@ import java.io.File;
import java.util.HashMap;
import java.util.concurrent.CompletableFuture;
public class DhServerWorld extends DhWorld implements IServerWorld {
public class DhServerWorld extends DhWorld implements IServerWorld
{
private final HashMap<IServerLevelWrapper, DhServerLevel> levels;
public final LocalSaveStructure saveStructure;
@@ -36,6 +38,21 @@ public class DhServerWorld extends DhWorld implements IServerWorld {
if (!(wrapper instanceof IServerLevelWrapper)) return null;
return levels.get(wrapper);
}
@Override
public ILevel[] getAllLoadedLevels()
{
ILevel[] array = new ILevel[this.levels.size()];
int i = 0;
for (ILevel level : this.levels.values())
{
array[i] = level;
i++;
}
return array;
}
@Override
public void unloadLevel(ILevelWrapper wrapper) {
@@ -8,7 +8,8 @@ import org.apache.logging.log4j.Logger;
import java.io.Closeable;
import java.util.concurrent.CompletableFuture;
public abstract class DhWorld implements Closeable {
public abstract class DhWorld implements Closeable
{
protected static final Logger LOGGER = DhLoggerBuilder.getLogger();
public final WorldEnvironment environment;
@@ -19,7 +20,8 @@ public abstract class DhWorld implements Closeable {
public abstract ILevel getOrLoadLevel(ILevelWrapper wrapper);
public abstract ILevel getLevel(ILevelWrapper wrapper);
public abstract ILevel[] getAllLoadedLevels();
public abstract void unloadLevel(ILevelWrapper wrapper);
public abstract CompletableFuture<Void> saveAndFlush();