181 lines
5.3 KiB
Java
181 lines
5.3 KiB
Java
package amidst.mojangapi.world;
|
|
|
|
import java.util.List;
|
|
import java.util.function.Consumer;
|
|
|
|
import amidst.documentation.ThreadSafe;
|
|
import amidst.fragment.IBiomeDataOracle;
|
|
import amidst.mojangapi.minecraftinterface.RecognisedVersion;
|
|
import amidst.mojangapi.world.icon.WorldIcon;
|
|
import amidst.mojangapi.world.icon.producer.CachedWorldIconProducer;
|
|
import amidst.mojangapi.world.icon.producer.WorldIconProducer;
|
|
import amidst.mojangapi.world.oracle.BiomeDataOracle;
|
|
import amidst.mojangapi.world.oracle.EndIsland;
|
|
import amidst.mojangapi.world.oracle.EndIslandOracle;
|
|
import amidst.mojangapi.world.oracle.SlimeChunkOracle;
|
|
import amidst.mojangapi.world.player.MovablePlayerList;
|
|
import amidst.mojangapi.world.versionfeatures.VersionFeatures;
|
|
|
|
@ThreadSafe
|
|
public class World {
|
|
private final Consumer<World> onDisposeWorld;
|
|
|
|
private final WorldSeed worldSeed;
|
|
private final WorldType worldType;
|
|
private final String generatorOptions;
|
|
private final MovablePlayerList movablePlayerList;
|
|
private final RecognisedVersion recognisedVersion;
|
|
private final VersionFeatures versionFeatures;
|
|
|
|
private final IBiomeDataOracle biomeDataOracle;
|
|
private final EndIslandOracle endIslandOracle;
|
|
private final SlimeChunkOracle slimeChunkOracle;
|
|
private final CachedWorldIconProducer spawnProducer;
|
|
private final CachedWorldIconProducer strongholdProducer;
|
|
private final CachedWorldIconProducer playerProducer;
|
|
private final WorldIconProducer<Void> villageProducer;
|
|
private final WorldIconProducer<Void> templeProducer;
|
|
private final WorldIconProducer<Void> mineshaftProducer;
|
|
private final WorldIconProducer<Void> oceanMonumentProducer;
|
|
private final WorldIconProducer<Void> netherFortressProducer;
|
|
private final WorldIconProducer<List<EndIsland>> endCityProducer;
|
|
|
|
public World(
|
|
Consumer<World> onDisposeWorld,
|
|
WorldSeed worldSeed,
|
|
WorldType worldType,
|
|
String generatorOptions,
|
|
MovablePlayerList movablePlayerList,
|
|
RecognisedVersion recognisedVersion,
|
|
VersionFeatures versionFeatures,
|
|
IBiomeDataOracle biomeDataOracle,
|
|
EndIslandOracle endIslandOracle,
|
|
SlimeChunkOracle slimeChunkOracle,
|
|
CachedWorldIconProducer spawnProducer,
|
|
CachedWorldIconProducer strongholdProducer,
|
|
CachedWorldIconProducer playerProducer,
|
|
WorldIconProducer<Void> villageProducer,
|
|
WorldIconProducer<Void> templeProducer,
|
|
WorldIconProducer<Void> mineshaftProducer,
|
|
WorldIconProducer<Void> oceanMonumentProducer,
|
|
WorldIconProducer<Void> netherFortressProducer,
|
|
WorldIconProducer<List<EndIsland>> endCityProducer) {
|
|
this.onDisposeWorld = onDisposeWorld;
|
|
this.worldSeed = worldSeed;
|
|
this.worldType = worldType;
|
|
this.generatorOptions = generatorOptions;
|
|
this.movablePlayerList = movablePlayerList;
|
|
this.recognisedVersion = recognisedVersion;
|
|
this.versionFeatures = versionFeatures;
|
|
this.biomeDataOracle = biomeDataOracle;
|
|
this.endIslandOracle = endIslandOracle;
|
|
this.slimeChunkOracle = slimeChunkOracle;
|
|
this.spawnProducer = spawnProducer;
|
|
this.strongholdProducer = strongholdProducer;
|
|
this.playerProducer = playerProducer;
|
|
this.villageProducer = villageProducer;
|
|
this.templeProducer = templeProducer;
|
|
this.mineshaftProducer = mineshaftProducer;
|
|
this.oceanMonumentProducer = oceanMonumentProducer;
|
|
this.netherFortressProducer = netherFortressProducer;
|
|
this.endCityProducer = endCityProducer;
|
|
}
|
|
|
|
public WorldSeed getWorldSeed() {
|
|
return worldSeed;
|
|
}
|
|
|
|
public WorldType getWorldType() {
|
|
return worldType;
|
|
}
|
|
|
|
public String getGeneratorOptions() {
|
|
return generatorOptions;
|
|
}
|
|
|
|
public MovablePlayerList getMovablePlayerList() {
|
|
return movablePlayerList;
|
|
}
|
|
|
|
public RecognisedVersion getRecognisedVersion() {
|
|
return recognisedVersion;
|
|
}
|
|
|
|
public VersionFeatures getVersionFeatures() {
|
|
return versionFeatures;
|
|
}
|
|
|
|
public IBiomeDataOracle getBiomeDataOracle() {
|
|
return biomeDataOracle;
|
|
}
|
|
|
|
public EndIslandOracle getEndIslandOracle() {
|
|
return endIslandOracle;
|
|
}
|
|
|
|
public SlimeChunkOracle getSlimeChunkOracle() {
|
|
return slimeChunkOracle;
|
|
}
|
|
|
|
public WorldIconProducer<Void> getSpawnProducer() {
|
|
return spawnProducer;
|
|
}
|
|
|
|
public WorldIconProducer<Void> getStrongholdProducer() {
|
|
return strongholdProducer;
|
|
}
|
|
|
|
public WorldIconProducer<Void> getPlayerProducer() {
|
|
return playerProducer;
|
|
}
|
|
|
|
public WorldIconProducer<Void> getVillageProducer() {
|
|
return villageProducer;
|
|
}
|
|
|
|
public WorldIconProducer<Void> getTempleProducer() {
|
|
return templeProducer;
|
|
}
|
|
|
|
public WorldIconProducer<Void> getMineshaftProducer() {
|
|
return mineshaftProducer;
|
|
}
|
|
|
|
public WorldIconProducer<Void> getOceanMonumentProducer() {
|
|
return oceanMonumentProducer;
|
|
}
|
|
|
|
public WorldIconProducer<Void> getNetherFortressProducer() {
|
|
return netherFortressProducer;
|
|
}
|
|
|
|
public WorldIconProducer<List<EndIsland>> getEndCityProducer() {
|
|
return endCityProducer;
|
|
}
|
|
|
|
public WorldIcon getSpawnWorldIcon() {
|
|
return spawnProducer.getFirstWorldIcon();
|
|
}
|
|
|
|
public List<WorldIcon> getStrongholdWorldIcons() {
|
|
return strongholdProducer.getWorldIcons();
|
|
}
|
|
|
|
public List<WorldIcon> getPlayerWorldIcons() {
|
|
return playerProducer.getWorldIcons();
|
|
}
|
|
|
|
public void reloadPlayerWorldIcons() {
|
|
playerProducer.resetCache();
|
|
}
|
|
|
|
/**
|
|
* Unlocks the RunningLauncherProfile to allow the creation of another
|
|
* world. However, this does not actually prevent the usage of this world.
|
|
* If you keep using it, something will break.
|
|
*/
|
|
public void dispose() {
|
|
onDisposeWorld.accept(this);
|
|
}
|
|
}
|