Use level's ResourceLocation instead of dimension type's
This commit is contained in:
+1
-3
@@ -28,10 +28,8 @@ import com.seibel.distanthorizons.api.interfaces.IDhApiUnsafeWrapper;
|
||||
*/
|
||||
public interface IDhApiDimensionTypeWrapper extends IDhApiUnsafeWrapper
|
||||
{
|
||||
String getDimensionName();
|
||||
|
||||
boolean hasCeiling();
|
||||
|
||||
boolean hasSkyLight();
|
||||
|
||||
}
|
||||
}
|
||||
+3
-1
@@ -34,6 +34,8 @@ public interface IDhApiLevelWrapper extends IDhApiUnsafeWrapper
|
||||
{
|
||||
IDhApiDimensionTypeWrapper getDimensionType();
|
||||
|
||||
String getDimensionName();
|
||||
|
||||
EDhApiLevelType getLevelType();
|
||||
|
||||
boolean hasCeiling();
|
||||
@@ -49,4 +51,4 @@ public interface IDhApiLevelWrapper extends IDhApiUnsafeWrapper
|
||||
*/
|
||||
default int getMinHeight() { return 0; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -177,7 +177,7 @@ public class ClientApi
|
||||
{
|
||||
try
|
||||
{
|
||||
LOGGER.info("Unloading client level [" + level + "]-["+level.getDimensionType().getDimensionName()+"].");
|
||||
LOGGER.info("Unloading client level [" + level + "]-["+level.getDimensionName()+"].");
|
||||
|
||||
if (level instanceof IServerKeyedClientLevel && !respawn)
|
||||
{
|
||||
@@ -206,7 +206,7 @@ public class ClientApi
|
||||
{
|
||||
try
|
||||
{
|
||||
LOGGER.info("Loading client level [" + level + "]-["+level.getDimensionType().getDimensionName()+"].");
|
||||
LOGGER.info("Loading client level [" + level + "]-["+level.getDimensionName()+"].");
|
||||
|
||||
AbstractDhWorld world = SharedApi.getAbstractDhWorld();
|
||||
if (world != null)
|
||||
|
||||
+2
-2
@@ -55,7 +55,7 @@ public class ClientPluginChannelApi
|
||||
|
||||
private void onCurrentLevelKeyMessage(CurrentLevelKeyMessage msg)
|
||||
{
|
||||
if (!msg.levelKey.matches("[a-zA-Z0-9_]{1,50}"))
|
||||
if (!msg.levelKey.matches("^(?=.{1,50}$)([a-zA-Z0-9-_]+@)?[a-zA-Z0-9-_]+(:[a-zA-Z0-9-_]+)?$"))
|
||||
{
|
||||
throw new IllegalArgumentException("Server sent invalid level key.");
|
||||
}
|
||||
@@ -80,7 +80,7 @@ public class ClientPluginChannelApi
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGGER.info("Unloading non-keyed level: " + clientLevel.getDimensionType().getDimensionName());
|
||||
LOGGER.info("Unloading non-keyed level: " + clientLevel.getDimensionName());
|
||||
this.levelUnloadHandler.accept(clientLevel);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -215,7 +215,7 @@ public class FullDataToRenderDataTransformer
|
||||
if (!brokenPos.contains(fullDataMapping.getPos()))
|
||||
{
|
||||
brokenPos.add(fullDataMapping.getPos());
|
||||
String dimName = level.getLevelWrapper().getDimensionType().getDimensionName();
|
||||
String dimName = level.getLevelWrapper().getDimensionName();
|
||||
LOGGER.warn("Unable to get data point with id ["+id+"] " +
|
||||
"(Max possible ID: ["+fullDataMapping.getMaxValidId()+"]) " +
|
||||
"for pos ["+fullDataMapping.getPos()+"] in dimension ["+dimName+"]. " +
|
||||
@@ -321,4 +321,4 @@ public class FullDataToRenderDataTransformer
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -124,7 +124,7 @@ public class FullDataSourceProviderV2
|
||||
|
||||
DebugRenderer.register(this, Config.Client.Advanced.Debugging.DebugWireframe.showFullDataUpdateStatus);
|
||||
|
||||
String dimensionName = level.getLevelWrapper().getDimensionType().getDimensionName();
|
||||
String dimensionName = level.getLevelWrapper().getDimensionName();
|
||||
|
||||
// start migrating any legacy data sources present in the background
|
||||
this.migrationThreadPool = ThreadUtil.makeRateLimitedThreadPool(1, MIGRATION_THREAD_NAME_PREFIX + "[" + dimensionName + "]", Config.Client.Advanced.MultiThreading.runTimeRatioForUpdatePropagatorThreads.get(), Thread.MIN_PRIORITY, (Semaphore) null);
|
||||
@@ -376,7 +376,7 @@ public class FullDataSourceProviderV2
|
||||
|
||||
private void convertLegacyDataSources()
|
||||
{
|
||||
String dimensionName = this.level.getLevelWrapper().getDimensionType().getDimensionName();
|
||||
String dimensionName = this.level.getLevelWrapper().getDimensionName();
|
||||
LOGGER.info("Attempting to migrate data sources for: [" + dimensionName + "]-[" + this.saveDir + "]...");
|
||||
|
||||
|
||||
@@ -559,7 +559,7 @@ public class FullDataSourceProviderV2
|
||||
}
|
||||
this.migrationStartMessageQueued = true;
|
||||
|
||||
String dimName = this.level.getLevelWrapper().getDimensionType().getDimensionName();
|
||||
String dimName = this.level.getLevelWrapper().getDimensionName();
|
||||
ClientApi.INSTANCE.showChatMessageNextFrame(
|
||||
"Old Distant Horizons data is being migrated for ["+dimName+"]. \n" +
|
||||
"While migrating LODs may load slowly \n" +
|
||||
@@ -570,7 +570,7 @@ public class FullDataSourceProviderV2
|
||||
|
||||
private void showMigrationEndMessage(boolean success)
|
||||
{
|
||||
String dimName = this.level.getLevelWrapper().getDimensionType().getDimensionName();
|
||||
String dimName = this.level.getLevelWrapper().getDimensionName();
|
||||
|
||||
if (success)
|
||||
{
|
||||
|
||||
+1
-1
@@ -143,7 +143,7 @@ public class GeneratedFullDataSourceProvider extends FullDataSourceProviderV2 im
|
||||
{
|
||||
boolean oldQueueExists = this.worldGenQueueRef.compareAndSet(null, newWorldGenQueue);
|
||||
LodUtil.assertTrue(oldQueueExists, "previous world gen queue is still here!");
|
||||
LOGGER.info("Set world gen queue for level [" + this.level.getLevelWrapper().getDimensionType().getDimensionName() + "].");
|
||||
LOGGER.info("Set world gen queue for level [" + this.level.getLevelWrapper().getDimensionName() + "].");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+9
-9
@@ -84,7 +84,7 @@ public class ClientOnlySaveStructure extends AbstractSaveStructure
|
||||
if (newLevelWrapper instanceof IServerKeyedClientLevel)
|
||||
{
|
||||
IServerKeyedClientLevel keyedClientLevel = (IServerKeyedClientLevel) newLevelWrapper;
|
||||
LOGGER.info("Loading level " + newLevelWrapper.getDimensionType().getDimensionName() + " with key: " + keyedClientLevel.getServerLevelKey());
|
||||
LOGGER.info("Loading level " + newLevelWrapper.getDimensionName() + " with key: " + keyedClientLevel.getServerLevelKey());
|
||||
// This world was identified by the server directly, so we can know for sure which folder to use.
|
||||
return new File(getSaveStructureFolderPath() + File.separatorChar + keyedClientLevel.getServerLevelKey());
|
||||
}
|
||||
@@ -98,9 +98,9 @@ public class ClientOnlySaveStructure extends AbstractSaveStructure
|
||||
// create the matcher if one doesn't exist
|
||||
if (this.subDimMatcher == null || !this.subDimMatcher.isFindingLevel(newClientLevelWrapper))
|
||||
{
|
||||
LOGGER.info("Loading level " + newClientLevelWrapper.getDimensionType().getDimensionName());
|
||||
LOGGER.info("Loading level " + newClientLevelWrapper.getDimensionName());
|
||||
|
||||
List<File> levelFolders = this.getDhDataFoldersForDimension(newClientLevelWrapper.getDimensionType());
|
||||
List<File> levelFolders = this.getDhDataFoldersForDimension(newClientLevelWrapper);
|
||||
this.subDimMatcher = new SubDimensionLevelMatcher(newClientLevelWrapper, this.folder, levelFolders);
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ public class ClientOnlySaveStructure extends AbstractSaveStructure
|
||||
|
||||
private File getLevelFolderWithoutSimilarityMatching(ILevelWrapper level)
|
||||
{
|
||||
List<File> folders = this.getDhDataFoldersForDimension(level.getDimensionType());
|
||||
List<File> folders = this.getDhDataFoldersForDimension(level);
|
||||
if (!folders.isEmpty() && folders.get(0) != null)
|
||||
{
|
||||
// use the first existing sub-dimension
|
||||
@@ -140,12 +140,12 @@ public class ClientOnlySaveStructure extends AbstractSaveStructure
|
||||
else
|
||||
{
|
||||
// no valid sub dimension was found, create a new one
|
||||
LOGGER.info("Default Sub Dimension not found. Creating: [" + level.getDimensionType().getDimensionName() + "]");
|
||||
return new File(this.folder, level.getDimensionType().getDimensionName());
|
||||
LOGGER.info("Default Sub Dimension not found. Creating: [" + level.getDimensionName() + "]");
|
||||
return new File(this.folder, level.getDimensionName());
|
||||
}
|
||||
}
|
||||
|
||||
public List<File> getDhDataFoldersForDimension(IDimensionTypeWrapper dimensionType)
|
||||
public List<File> getDhDataFoldersForDimension(ILevelWrapper level)
|
||||
{
|
||||
File[] folders = this.folder.listFiles();
|
||||
if (folders == null)
|
||||
@@ -154,7 +154,7 @@ public class ClientOnlySaveStructure extends AbstractSaveStructure
|
||||
}
|
||||
|
||||
// filter by dimension name
|
||||
String expectedDimName = dimensionType.getDimensionName();
|
||||
String expectedDimName = level.getDimensionName();
|
||||
ArrayList<File> possibleDimFolders = new ArrayList<>();
|
||||
for (File dimFolder : folders)
|
||||
{
|
||||
@@ -297,4 +297,4 @@ public class ClientOnlySaveStructure extends AbstractSaveStructure
|
||||
@Override
|
||||
public String toString() { return "[" + this.getClass().getSimpleName() + "@" + this.folder.getName() + "]"; }
|
||||
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -200,7 +200,7 @@ public class SubDimensionLevelMatcher implements AutoCloseable
|
||||
//================================//
|
||||
|
||||
// log the start of this attempt
|
||||
LOGGER.info("Attempting to determine sub-dimension for [" + MC_CLIENT.getWrappedClientLevel().getDimensionType().getDimensionName() + "]");
|
||||
LOGGER.info("Attempting to determine sub-dimension for [" + MC_CLIENT.getWrappedClientLevel().getDimensionName() + "]");
|
||||
LOGGER.info("Player block pos in dimension: [" + this.playerData.playerBlockPos.x + "," + this.playerData.playerBlockPos.y + "," + this.playerData.playerBlockPos.z + "]");
|
||||
LOGGER.info("Potential Sub Dimension folders: [" + this.potentialLevelFolders.size() + "]");
|
||||
|
||||
@@ -379,7 +379,7 @@ public class SubDimensionLevelMatcher implements AutoCloseable
|
||||
}
|
||||
|
||||
|
||||
private File CreateSubDimFolder(String subDimId) { return new File(this.levelsFolder.getPath() + File.separatorChar + this.currentClientLevel.getDimensionType().getDimensionName(), subDimId); }
|
||||
private File CreateSubDimFolder(String subDimId) { return new File(this.levelsFolder.getPath() + File.separatorChar + this.currentClientLevel.getDimensionName(), subDimId); }
|
||||
|
||||
@Override
|
||||
public void close() { this.matcherThread.shutdownNow(); }
|
||||
|
||||
@@ -252,7 +252,7 @@ public class DhClientLevel extends AbstractDhLevel implements IDhClientLevel
|
||||
@Override
|
||||
public void addDebugMenuStringsToList(List<String> messageList)
|
||||
{
|
||||
String dimName = this.levelWrapper.getDimensionType().getDimensionName();
|
||||
String dimName = this.levelWrapper.getDimensionName();
|
||||
boolean rendering = this.clientside.isRendering();
|
||||
messageList.add("["+dimName+"] rendering: "+(rendering ? "yes" : "no"));
|
||||
|
||||
|
||||
@@ -165,13 +165,13 @@ public class DhClientServerLevel extends AbstractDhLevel implements IDhClientLev
|
||||
@Override
|
||||
public void clearRenderCache()
|
||||
{
|
||||
clientside.clearRenderCache();
|
||||
this.clientside.clearRenderCache();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IServerLevelWrapper getServerLevelWrapper() { return serverLevelWrapper; }
|
||||
public IServerLevelWrapper getServerLevelWrapper() { return this.serverLevelWrapper; }
|
||||
@Override
|
||||
public ILevelWrapper getLevelWrapper() { return getServerLevelWrapper(); }
|
||||
public ILevelWrapper getLevelWrapper() { return this.getServerLevelWrapper(); }
|
||||
|
||||
@Override
|
||||
public FullDataSourceProviderV2 getFullDataProvider() { return this.serverside.fullDataFileHandler; }
|
||||
@@ -179,7 +179,7 @@ public class DhClientServerLevel extends AbstractDhLevel implements IDhClientLev
|
||||
@Override
|
||||
public AbstractSaveStructure getSaveStructure()
|
||||
{
|
||||
return serverside.saveStructure;
|
||||
return this.serverside.saveStructure;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -201,7 +201,7 @@ public class DhClientServerLevel extends AbstractDhLevel implements IDhClientLev
|
||||
public void addDebugMenuStringsToList(List<String> messageList)
|
||||
{
|
||||
// header
|
||||
String dimName = this.serverLevelWrapper.getDimensionType().getDimensionName();
|
||||
String dimName = this.serverLevelWrapper.getDimensionName();
|
||||
boolean rendering = this.clientside.isRendering();
|
||||
messageList.add("["+dimName+"] rendering: "+(rendering ? "yes" : "no"));
|
||||
|
||||
|
||||
@@ -184,7 +184,7 @@ public class DhServerLevel extends AbstractDhLevel implements IDhServerLevel
|
||||
LodUtil.assertTrue(msg instanceof ILevelRelatedMessage, MessageFormat.format("Received message does not implement {0}: {1}", ILevelRelatedMessage.class.getSimpleName(), msg.getClass().getSimpleName()));
|
||||
|
||||
// Handle only in requested dimension
|
||||
if (!((ILevelRelatedMessage) msg).isSameLevelAs(this.getLevelWrapper()))
|
||||
if (!((ILevelRelatedMessage) msg).isSameLevelAs(this.getServerLevelWrapper()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -199,8 +199,8 @@ public class DhServerLevel extends AbstractDhLevel implements IDhServerLevel
|
||||
((TrackableMessage) msg).sendResponse(new InvalidLevelException(MessageFormat.format(
|
||||
"Generation not allowed. Requested dimension: {0}, player dimension: {1}, handler dimension: {2}",
|
||||
((ILevelRelatedMessage) msg).getLevelName(),
|
||||
msg.session.serverPlayer.getLevel().getDimensionType().getDimensionName(),
|
||||
this.getLevelWrapper().getDimensionType().getDimensionName()
|
||||
msg.session.serverPlayer.getLevel().getDimensionName(),
|
||||
this.getLevelWrapper().getDimensionName()
|
||||
)));
|
||||
}
|
||||
|
||||
@@ -392,7 +392,7 @@ public class DhServerLevel extends AbstractDhLevel implements IDhServerLevel
|
||||
@Override
|
||||
public void addDebugMenuStringsToList(List<String> messageList)
|
||||
{
|
||||
String dimName = this.serverLevelWrapper.getDimensionType().getDimensionName();
|
||||
String dimName = this.serverLevelWrapper.getDimensionName();
|
||||
messageList.add("["+dimName+"]");
|
||||
}
|
||||
|
||||
|
||||
@@ -78,9 +78,9 @@ public class F3Screen
|
||||
Parent Update #: 12 <br><br>
|
||||
|
||||
Client_Server World with 3 levels <br>
|
||||
[overworld] rendering: Active <br>
|
||||
[the_end] rendering: Inactive <br>
|
||||
[the_nether] rendering: Inactive <br><br>
|
||||
[minecraft:overworld] rendering: Active <br>
|
||||
[minecraft:the_end] rendering: Inactive <br>
|
||||
[minecraft:the_nether] rendering: Inactive <br><br>
|
||||
|
||||
VBO Render Count: 199/374 <br>
|
||||
</code>
|
||||
|
||||
+1
-1
@@ -241,7 +241,7 @@ public abstract class AbstractFullDataRequestQueue implements IDebugRenderable,
|
||||
return;
|
||||
}
|
||||
|
||||
messageList.add(this.getQueueName() + " [" + this.level.getClientLevelWrapper().getDimensionType().getDimensionName() + "]");
|
||||
messageList.add(this.getQueueName() + " [" + this.level.getClientLevelWrapper().getDimensionName() + "]");
|
||||
messageList.add("Requests: " + this.finishedRequests + " / " + (this.getWaitingTaskCount() + this.finishedRequests.get()) + " (failed: " + this.failedRequests + ", rate limit: " + this.getRequestConcurrencyLimit() + ")");
|
||||
}
|
||||
|
||||
|
||||
+18
-25
@@ -1,5 +1,6 @@
|
||||
package com.seibel.distanthorizons.core.multiplayer.server;
|
||||
|
||||
import com.seibel.distanthorizons.core.config.listeners.ConfigChangeListener;
|
||||
import com.seibel.distanthorizons.core.level.DhServerLevel;
|
||||
import com.seibel.distanthorizons.core.multiplayer.config.MultiplayerConfig;
|
||||
import com.seibel.distanthorizons.core.multiplayer.config.MultiplayerConfigChangeListener;
|
||||
@@ -25,8 +26,10 @@ public class ServerPlayerState
|
||||
@NotNull
|
||||
public ConstrainedMultiplayerConfig config = new ConstrainedMultiplayerConfig();
|
||||
private final MultiplayerConfigChangeListener configChangeListener = new MultiplayerConfigChangeListener(this::onConfigChanged);
|
||||
|
||||
private String lastLevelKey = "";
|
||||
|
||||
private final ConfigChangeListener<String> levelKeyPrefixChangeListener = new ConfigChangeListener<>(ServerNetworking.levelKeyPrefix, this::sendLevelKey);
|
||||
|
||||
private final ConcurrentHashMap<DhServerLevel, RateLimiterSet> rateLimiterSets = new ConcurrentHashMap<>();
|
||||
public RateLimiterSet getRateLimiterSet(DhServerLevel level)
|
||||
{
|
||||
@@ -46,29 +49,7 @@ public class ServerPlayerState
|
||||
this.session.registerHandler(RemotePlayerConfigMessage.class, remotePlayerConfigMessage ->
|
||||
{
|
||||
this.config.clientConfig = (MultiplayerConfig) remotePlayerConfigMessage.payload;
|
||||
|
||||
if (ServerNetworking.sendLevelKeys.get())
|
||||
{
|
||||
String levelKeyPrefix = ServerNetworking.levelKeyPrefix.get();
|
||||
String dimensionName = serverPlayer.getLevel().getDimensionType().getDimensionName();
|
||||
|
||||
String levelKey;
|
||||
if (!levelKeyPrefix.isEmpty())
|
||||
{
|
||||
levelKey = levelKeyPrefix + "_" + dimensionName;
|
||||
}
|
||||
else
|
||||
{
|
||||
levelKey = dimensionName;
|
||||
}
|
||||
|
||||
if (!levelKey.equals(this.lastLevelKey))
|
||||
{
|
||||
this.lastLevelKey = levelKey;
|
||||
this.session.sendMessage(new CurrentLevelKeyMessage(levelKey));
|
||||
}
|
||||
}
|
||||
|
||||
this.sendLevelKey(null);
|
||||
this.session.sendMessage(new RemotePlayerConfigMessage(this.config));
|
||||
});
|
||||
|
||||
@@ -78,7 +59,18 @@ public class ServerPlayerState
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void sendLevelKey(String ignored)
|
||||
{
|
||||
if (ServerNetworking.sendLevelKeys.get())
|
||||
{
|
||||
String levelKey = this.serverPlayer().getLevel().getKeyedLevelDimensionName();
|
||||
if (!levelKey.equals(this.lastLevelKey))
|
||||
{
|
||||
this.lastLevelKey = levelKey;
|
||||
this.session.sendMessage(new CurrentLevelKeyMessage(levelKey));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void onConfigChanged()
|
||||
{
|
||||
@@ -87,6 +79,7 @@ public class ServerPlayerState
|
||||
|
||||
public void close()
|
||||
{
|
||||
this.levelKeyPrefixChangeListener.close();
|
||||
this.configChangeListener.close();
|
||||
this.session.close();
|
||||
}
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
package com.seibel.distanthorizons.core.network.messages;
|
||||
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IServerLevelWrapper;
|
||||
|
||||
public interface ILevelRelatedMessage
|
||||
{
|
||||
@@ -10,9 +10,9 @@ public interface ILevelRelatedMessage
|
||||
* Checks whether the message's level matches the given level.
|
||||
*/
|
||||
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
|
||||
default boolean isSameLevelAs(ILevelWrapper levelWrapper)
|
||||
default boolean isSameLevelAs(IServerLevelWrapper levelWrapper)
|
||||
{
|
||||
return this.getLevelName().equals(levelWrapper.getDimensionType().getDimensionName());
|
||||
return this.getLevelName().equals(levelWrapper.getKeyedLevelDimensionName());
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -44,7 +44,7 @@ public class FullDataPartialUpdateMessage extends NetworkMessage implements ILev
|
||||
public FullDataPartialUpdateMessage() { }
|
||||
public FullDataPartialUpdateMessage(ILevelWrapper level, FullDataSourceV2 fullDataSource)
|
||||
{
|
||||
this.levelName = level.getDimensionType().getDimensionName();
|
||||
this.levelName = level.getDimensionName();
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ public class FullDataSourceRequestMessage extends TrackableMessage implements IL
|
||||
public FullDataSourceRequestMessage() {}
|
||||
public FullDataSourceRequestMessage(ILevelWrapper levelWrapper, long sectionPos, @Nullable Long clientTimestamp)
|
||||
{
|
||||
this.levelName = levelWrapper.getDimensionType().getDimensionName();
|
||||
this.levelName = levelWrapper.getDimensionName();
|
||||
this.sectionPos = sectionPos;
|
||||
this.clientTimestamp = clientTimestamp;
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@ public class LodQuadTree extends QuadTree<LodRenderSection> implements IDebugRen
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOGGER.error("Quad Tree tick exception for dimension: " + this.level.getClientLevelWrapper().getDimensionType().getDimensionName() + ", exception: " + e.getMessage(), e);
|
||||
LOGGER.error("Quad Tree tick exception for dimension: " + this.level.getClientLevelWrapper().getDimensionName() + ", exception: " + e.getMessage(), e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -690,4 +690,4 @@ public class LodQuadTree extends QuadTree<LodRenderSection> implements IDebugRen
|
||||
LOGGER.info("Finished shutting down " + LodQuadTree.class.getSimpleName());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -130,7 +130,7 @@ public class DhApiWorldProxy implements IDhApiWorldProxy
|
||||
for (IDhLevel dhLevel : world.getAllLoadedLevels())
|
||||
{
|
||||
ILevelWrapper levelWrapper = dhLevel.getLevelWrapper();
|
||||
String levelDimName = levelWrapper.getDimensionType().getDimensionName().toLowerCase();
|
||||
String levelDimName = levelWrapper.getDimensionName().toLowerCase();
|
||||
if (levelDimName.contains(soughtDimName))
|
||||
{
|
||||
returnList.add(levelWrapper);
|
||||
@@ -140,4 +140,4 @@ public class DhApiWorldProxy implements IDhApiWorldProxy
|
||||
return returnList;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -87,7 +87,7 @@ public class DhClientServerWorld extends AbstractDhWorld implements IDhClientWor
|
||||
LodUtil.assertTrue(serverLevelWrapper != null);
|
||||
if (!clientLevelWrapper.getDimensionType().equals(serverLevelWrapper.getDimensionType()))
|
||||
{
|
||||
LodUtil.assertNotReach("tryGetServerSideWrapper returned a level for a different dimension. ClientLevelWrapper dim: " + clientLevelWrapper.getDimensionType().getDimensionName() + " ServerLevelWrapper dim: " + serverLevelWrapper.getDimensionType().getDimensionName());
|
||||
LodUtil.assertNotReach("tryGetServerSideWrapper returned a level for a different dimension. ClientLevelWrapper dim: " + clientLevelWrapper.getDimensionName() + " ServerLevelWrapper dim: " + serverLevelWrapper.getDimensionName());
|
||||
}
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@ public class DhClientServerWorld extends AbstractDhWorld implements IDhClientWor
|
||||
// close each level
|
||||
for (DhClientServerLevel level : levelsToClose)
|
||||
{
|
||||
LOGGER.info("Unloading level " + level.getServerLevelWrapper().getDimensionType().getDimensionName());
|
||||
LOGGER.info("Unloading level " + level.getServerLevelWrapper().getDimensionName());
|
||||
|
||||
// level wrapper shouldn't be null, but just in case
|
||||
IServerLevelWrapper serverLevelWrapper = level.getServerLevelWrapper();
|
||||
@@ -184,4 +184,4 @@ public class DhClientServerWorld extends AbstractDhWorld implements IDhClientWor
|
||||
LOGGER.info("Closed DhWorld of type " + this.environment);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -145,7 +145,7 @@ public class DhClientWorld extends AbstractDhWorld implements IDhClientWorld
|
||||
|
||||
for (DhClientLevel dhClientLevel : this.levels.values())
|
||||
{
|
||||
LOGGER.info("Unloading level " + dhClientLevel.getLevelWrapper().getDimensionType().getDimensionName());
|
||||
LOGGER.info("Unloading level " + dhClientLevel.getLevelWrapper().getDimensionName());
|
||||
|
||||
// level wrapper shouldn't be null, but just in case
|
||||
IClientLevelWrapper clientLevelWrapper = dhClientLevel.getClientLevelWrapper();
|
||||
|
||||
@@ -159,7 +159,7 @@ public class DhServerWorld extends AbstractDhWorld implements IDhServerWorld
|
||||
{
|
||||
for (DhServerLevel level : this.levels.values())
|
||||
{
|
||||
LOGGER.info("Unloading level " + level.getLevelWrapper().getDimensionType().getDimensionName());
|
||||
LOGGER.info("Unloading level " + level.getLevelWrapper().getDimensionName());
|
||||
|
||||
// level wrapper shouldn't be null, but just in case
|
||||
IServerLevelWrapper serverLevelWrapper = level.getServerLevelWrapper();
|
||||
|
||||
+2
-6
@@ -24,18 +24,14 @@ import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IBindab
|
||||
|
||||
public interface IDimensionTypeWrapper extends IDhApiDimensionTypeWrapper, IBindable
|
||||
{
|
||||
@Override
|
||||
String getDimensionName();
|
||||
|
||||
@Override
|
||||
boolean hasCeiling();
|
||||
|
||||
@Override
|
||||
boolean hasSkyLight();
|
||||
|
||||
// there's definitely a better way of doing this, but it should work well enough for now
|
||||
default boolean isTheEnd() { return this.getDimensionName().equalsIgnoreCase("the_end"); }
|
||||
boolean isTheEnd();
|
||||
|
||||
double getTeleportationScale(IDimensionTypeWrapper to);
|
||||
|
||||
}
|
||||
}
|
||||
+3
@@ -37,6 +37,9 @@ public interface ILevelWrapper extends IDhApiLevelWrapper, IBindable
|
||||
@Override
|
||||
IDimensionTypeWrapper getDimensionType();
|
||||
|
||||
@Override
|
||||
String getDimensionName();
|
||||
|
||||
@Override
|
||||
boolean hasCeiling();
|
||||
|
||||
|
||||
+20
-1
@@ -22,11 +22,30 @@ package com.seibel.distanthorizons.core.wrapperInterfaces.world;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import java.io.File;
|
||||
|
||||
import static com.seibel.distanthorizons.core.config.Config.Client.Advanced.Multiplayer.ServerNetworking;
|
||||
|
||||
public interface IServerLevelWrapper extends ILevelWrapper
|
||||
{
|
||||
@Nullable
|
||||
IClientLevelWrapper tryGetClientLevelWrapper();
|
||||
|
||||
File getSaveFolder();
|
||||
|
||||
default String getKeyedLevelDimensionName()
|
||||
{
|
||||
String dimensionName = this.getDimensionName();
|
||||
|
||||
if (ServerNetworking.sendLevelKeys.get())
|
||||
{
|
||||
String levelKeyPrefix = ServerNetworking.levelKeyPrefix.get();
|
||||
|
||||
if (!levelKeyPrefix.isEmpty())
|
||||
{
|
||||
return levelKeyPrefix + "@" + dimensionName;
|
||||
}
|
||||
}
|
||||
|
||||
return dimensionName;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user