Add DhWorld.GetAllLevels() and ILevel.GetLevelWrapper()
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user