refactor DhClientServerLevel
This commit is contained in:
@@ -55,6 +55,11 @@ public class DhClientServerLevel extends AbstractDhClientLevel implements IDhCli
|
|||||||
this.serverLevelWrapper = serverLevelWrapper;
|
this.serverLevelWrapper = serverLevelWrapper;
|
||||||
this.f3Message = new F3Screen.NestedMessage(super::f3Log);
|
this.f3Message = new F3Screen.NestedMessage(super::f3Log);
|
||||||
|
|
||||||
|
if (this.fullDataFileHandler != null)
|
||||||
|
{
|
||||||
|
// done since the super() constructor creates a FullDataFileHandler first that we don't want // TODO in the future it would be nice if we didn't have to overwrite an existing object like this
|
||||||
|
this.fullDataFileHandler.close();
|
||||||
|
}
|
||||||
this.generatedFullDataFileHandler = new GeneratedFullDataFileHandler(this, saveStructure.getFullDataFolder(serverLevelWrapper));
|
this.generatedFullDataFileHandler = new GeneratedFullDataFileHandler(this, saveStructure.getFullDataFolder(serverLevelWrapper));
|
||||||
this.fullDataFileHandler = this.generatedFullDataFileHandler;
|
this.fullDataFileHandler = this.generatedFullDataFileHandler;
|
||||||
|
|
||||||
@@ -89,13 +94,13 @@ public class DhClientServerLevel extends AbstractDhClientLevel implements IDhCli
|
|||||||
@Override
|
@Override
|
||||||
public void doWorldGen()
|
public void doWorldGen()
|
||||||
{
|
{
|
||||||
WorldGenState wgs = this.worldGenStateRef.get();
|
WorldGenState worldGenState = this.worldGenStateRef.get();
|
||||||
|
|
||||||
// if the world generator config changes, add/remove the world generator
|
// if the world generator config changes, add/remove the world generator
|
||||||
if (this.worldGeneratorEnabledConfig.pollNewValue())
|
if (this.worldGeneratorEnabledConfig.pollNewValue())
|
||||||
{
|
{
|
||||||
boolean shouldDoWorldGen = this.worldGeneratorEnabledConfig.get() && this.ClientRenderStateRef.get() != null;
|
boolean shouldDoWorldGen = this.worldGeneratorEnabledConfig.get() && this.ClientRenderStateRef.get() != null;
|
||||||
if (shouldDoWorldGen && wgs == null)
|
if (shouldDoWorldGen && worldGenState == null)
|
||||||
{
|
{
|
||||||
// create the new world generator
|
// create the new world generator
|
||||||
WorldGenState newWgs = new WorldGenState(this);
|
WorldGenState newWgs = new WorldGenState(this);
|
||||||
@@ -105,27 +110,27 @@ public class DhClientServerLevel extends AbstractDhClientLevel implements IDhCli
|
|||||||
newWgs.closeAsync(false);
|
newWgs.closeAsync(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!shouldDoWorldGen && wgs != null)
|
else if (!shouldDoWorldGen && worldGenState != null)
|
||||||
{
|
{
|
||||||
// shut down the world generator
|
// shut down the world generator
|
||||||
while (!this.worldGenStateRef.compareAndSet(wgs, null))
|
while (!this.worldGenStateRef.compareAndSet(worldGenState, null))
|
||||||
{
|
{
|
||||||
wgs = this.worldGenStateRef.get();
|
worldGenState = this.worldGenStateRef.get();
|
||||||
if (wgs == null)
|
if (worldGenState == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wgs.closeAsync(true).join(); //TODO: Make it async.
|
worldGenState.closeAsync(true).join(); //TODO: Make it async.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (wgs != null)
|
if (worldGenState != null)
|
||||||
{
|
{
|
||||||
// queue new world generation requests
|
// queue new world generation requests
|
||||||
wgs.chunkGenerator.preGeneratorTaskStart();
|
worldGenState.chunkGenerator.preGeneratorTaskStart();
|
||||||
wgs.worldGenerationQueue.runCurrentGenTasksUntilBusy(new DhBlockPos2D(MC_CLIENT.getPlayerBlockPos()));
|
worldGenState.worldGenerationQueue.runCurrentGenTasksUntilBusy(new DhBlockPos2D(MC_CLIENT.getPlayerBlockPos()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user