Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package pl.eldzi.core.util.v1_12_R1;
- import java.io.File;
- import org.bukkit.Bukkit;
- import org.bukkit.World;
- import org.bukkit.WorldCreator;
- import org.bukkit.craftbukkit.v1_12_R1.CraftServer;
- import org.bukkit.craftbukkit.v1_12_R1.CraftWorld;
- import org.bukkit.event.world.WorldInitEvent;
- import org.bukkit.event.world.WorldLoadEvent;
- import org.bukkit.generator.ChunkGenerator;
- import net.minecraft.server.v1_12_R1.Convertable;
- import net.minecraft.server.v1_12_R1.EntityTracker;
- import net.minecraft.server.v1_12_R1.EnumDifficulty;
- import net.minecraft.server.v1_12_R1.EnumGamemode;
- import net.minecraft.server.v1_12_R1.IDataManager;
- import net.minecraft.server.v1_12_R1.IProgressUpdate;
- import net.minecraft.server.v1_12_R1.IWorldAccess;
- import net.minecraft.server.v1_12_R1.MinecraftServer;
- import net.minecraft.server.v1_12_R1.ServerNBTManager;
- import net.minecraft.server.v1_12_R1.WorldData;
- import net.minecraft.server.v1_12_R1.WorldLoaderServer;
- import net.minecraft.server.v1_12_R1.WorldManager;
- import net.minecraft.server.v1_12_R1.WorldServer;
- import net.minecraft.server.v1_12_R1.WorldSettings;
- import net.minecraft.server.v1_12_R1.WorldType;
- public class WorldUtils extends pl.eldzi.core.util.WorldUtils {
- public World loadWorld(WorldCreator creator) {
- CraftServer server = (CraftServer) Bukkit.getServer();
- if (creator == null) {
- throw new IllegalArgumentException("Creator may not be null");
- }
- String name = creator.name();
- System.out.println("Loading world '" + name + "'");
- ChunkGenerator generator = creator.generator();
- File folder = new File(server.getWorldContainer(), name);
- World world = server.getWorld(name);
- WorldType type = WorldType.getType(creator.type().getName());
- boolean generateStructures = creator.generateStructures();
- if (world != null) {
- return world;
- }
- if ((folder.exists()) && (!folder.isDirectory())) {
- throw new IllegalArgumentException("File exists with the name '" + name + "' and isn't a folder");
- }
- if (generator == null) {
- generator = server.getGenerator(name);
- }
- net.minecraft.server.v1_12_R1.World w = ((CraftWorld) world).getHandle();
- MinecraftServer ms = ((CraftServer) Bukkit.getServer()).getServer();
- Convertable converter = new WorldLoaderServer(server.getWorldContainer(), ms.dataConverterManager);
- if (converter.isConvertable(name)) {
- server.getLogger().info("Converting world '" + name + "'");
- converter.convert(name, new IProgressUpdate() {
- @Override
- public void c(String arg0) {
- }
- @Override
- public void a(int i) {
- }
- @Override
- public void a(String arg0) {
- }
- });
- }
- int dimension = server.getWorlds().size() + 1;
- boolean used = false;
- do {
- for (WorldServer worldServer : server.getServer().worlds) {
- used = worldServer.dimension == dimension;
- if (used) {
- dimension++;
- break;
- }
- }
- } while (used);
- boolean hardcore = false;
- System.out.println("Loaded world with dimension : " + dimension);
- IDataManager sdm = new ServerNBTManager(server.getWorldContainer(), name, true, ms.dataConverterManager);
- WorldData worlddata = sdm.getWorldData();
- WorldSettings worldSettings = null;
- if (worlddata == null) {
- worldSettings = new WorldSettings(creator.seed(), EnumGamemode.SURVIVAL, generateStructures, hardcore,
- type);
- worldSettings.setGeneratorSettings(creator.generatorSettings());
- worlddata = new WorldData(worldSettings, name);
- }
- WorldServer internal = (WorldServer) new WorldServer(ms, sdm, worlddata, dimension, ms.methodProfiler,
- creator.environment(), generator);
- boolean containsWorld = false;
- for (World otherWorld : server.getWorlds()) {
- if (otherWorld.getName().equalsIgnoreCase(name.toLowerCase())) {
- containsWorld = true;
- break;
- }
- }
- if (!containsWorld)
- return null;
- System.out.println("Created world with dimension : " + dimension);
- internal.scoreboard = server.getScoreboardManager().getMainScoreboard().getHandle();
- internal.worldMaps = server.getServer().worlds.get(0).worldMaps;
- internal.tracker = new EntityTracker(internal); // CraftBukkit
- internal.addIWorldAccess((IWorldAccess) new WorldManager(server.getServer(), internal));
- internal.worldData.setDifficulty(EnumDifficulty.HARD);
- internal.setSpawnFlags(true, true);
- internal.savingDisabled = true;
- server.getServer().worlds.add(internal);
- if (generator != null) {
- internal.getWorld().getPopulators().addAll(generator.getDefaultPopulators(internal.getWorld()));
- }
- server.getPluginManager().callEvent(new WorldInitEvent(internal.getWorld()));
- server.getPluginManager().callEvent(new WorldLoadEvent(internal.getWorld()));
- return internal.getWorld();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement