Advertisement
Guest User

Untitled

a guest
Jul 24th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.74 KB | None | 0 0
  1. package pl.eldzi.core.util.v1_12_R1;
  2.  
  3. import java.io.File;
  4.  
  5. import org.bukkit.Bukkit;
  6. import org.bukkit.World;
  7. import org.bukkit.WorldCreator;
  8. import org.bukkit.craftbukkit.v1_12_R1.CraftServer;
  9. import org.bukkit.craftbukkit.v1_12_R1.CraftWorld;
  10. import org.bukkit.event.world.WorldInitEvent;
  11. import org.bukkit.event.world.WorldLoadEvent;
  12. import org.bukkit.generator.ChunkGenerator;
  13.  
  14. import net.minecraft.server.v1_12_R1.Convertable;
  15. import net.minecraft.server.v1_12_R1.EntityTracker;
  16. import net.minecraft.server.v1_12_R1.EnumDifficulty;
  17. import net.minecraft.server.v1_12_R1.EnumGamemode;
  18. import net.minecraft.server.v1_12_R1.IDataManager;
  19. import net.minecraft.server.v1_12_R1.IProgressUpdate;
  20. import net.minecraft.server.v1_12_R1.IWorldAccess;
  21. import net.minecraft.server.v1_12_R1.MinecraftServer;
  22. import net.minecraft.server.v1_12_R1.ServerNBTManager;
  23. import net.minecraft.server.v1_12_R1.WorldData;
  24. import net.minecraft.server.v1_12_R1.WorldLoaderServer;
  25. import net.minecraft.server.v1_12_R1.WorldManager;
  26. import net.minecraft.server.v1_12_R1.WorldServer;
  27. import net.minecraft.server.v1_12_R1.WorldSettings;
  28. import net.minecraft.server.v1_12_R1.WorldType;
  29.  
  30. public class WorldUtils extends pl.eldzi.core.util.WorldUtils {
  31.  
  32.     public World loadWorld(WorldCreator creator) {
  33.         CraftServer server = (CraftServer) Bukkit.getServer();
  34.         if (creator == null) {
  35.             throw new IllegalArgumentException("Creator may not be null");
  36.         }
  37.  
  38.         String name = creator.name();
  39.         System.out.println("Loading world '" + name + "'");
  40.         ChunkGenerator generator = creator.generator();
  41.         File folder = new File(server.getWorldContainer(), name);
  42.         World world = server.getWorld(name);
  43.         WorldType type = WorldType.getType(creator.type().getName());
  44.         boolean generateStructures = creator.generateStructures();
  45.  
  46.         if (world != null) {
  47.             return world;
  48.         }
  49.  
  50.         if ((folder.exists()) && (!folder.isDirectory())) {
  51.             throw new IllegalArgumentException("File exists with the name '" + name + "' and isn't a folder");
  52.         }
  53.  
  54.         if (generator == null) {
  55.             generator = server.getGenerator(name);
  56.         }
  57.         net.minecraft.server.v1_12_R1.World w = ((CraftWorld) world).getHandle();
  58.         MinecraftServer ms = ((CraftServer) Bukkit.getServer()).getServer();
  59.         Convertable converter = new WorldLoaderServer(server.getWorldContainer(), ms.dataConverterManager);
  60.  
  61.         if (converter.isConvertable(name)) {
  62.             server.getLogger().info("Converting world '" + name + "'");
  63.             converter.convert(name, new IProgressUpdate() {
  64.  
  65.                 @Override
  66.                 public void c(String arg0) {
  67.  
  68.                 }
  69.  
  70.                 @Override
  71.                 public void a(int i) {
  72.                 }
  73.  
  74.                 @Override
  75.                 public void a(String arg0) {
  76.  
  77.                 }
  78.             });
  79.         }
  80.  
  81.         int dimension = server.getWorlds().size() + 1;
  82.         boolean used = false;
  83.         do {
  84.             for (WorldServer worldServer : server.getServer().worlds) {
  85.                 used = worldServer.dimension == dimension;
  86.                 if (used) {
  87.                     dimension++;
  88.                     break;
  89.                 }
  90.             }
  91.         } while (used);
  92.         boolean hardcore = false;
  93.  
  94.         System.out.println("Loaded world with dimension : " + dimension);
  95.         IDataManager sdm = new ServerNBTManager(server.getWorldContainer(), name, true, ms.dataConverterManager);
  96.         WorldData worlddata = sdm.getWorldData();
  97.         WorldSettings worldSettings = null;
  98.         if (worlddata == null) {
  99.             worldSettings = new WorldSettings(creator.seed(), EnumGamemode.SURVIVAL, generateStructures, hardcore,
  100.                     type);
  101.             worldSettings.setGeneratorSettings(creator.generatorSettings());
  102.             worlddata = new WorldData(worldSettings, name);
  103.         }
  104.         WorldServer internal = (WorldServer) new WorldServer(ms, sdm, worlddata, dimension, ms.methodProfiler,
  105.                 creator.environment(), generator);
  106.  
  107.         boolean containsWorld = false;
  108.         for (World otherWorld : server.getWorlds()) {
  109.             if (otherWorld.getName().equalsIgnoreCase(name.toLowerCase())) {
  110.                 containsWorld = true;
  111.                 break;
  112.             }
  113.         }
  114.  
  115.         if (!containsWorld)
  116.             return null;
  117.  
  118.         System.out.println("Created world with dimension : " + dimension);
  119.  
  120.         internal.scoreboard = server.getScoreboardManager().getMainScoreboard().getHandle();
  121.         internal.worldMaps = server.getServer().worlds.get(0).worldMaps;
  122.         internal.tracker = new EntityTracker(internal); // CraftBukkit
  123.         internal.addIWorldAccess((IWorldAccess) new WorldManager(server.getServer(), internal));
  124.         internal.worldData.setDifficulty(EnumDifficulty.HARD);
  125.         internal.setSpawnFlags(true, true);
  126.         internal.savingDisabled = true;
  127.         server.getServer().worlds.add(internal);
  128.  
  129.         if (generator != null) {
  130.             internal.getWorld().getPopulators().addAll(generator.getDefaultPopulators(internal.getWorld()));
  131.         }
  132.  
  133.         server.getPluginManager().callEvent(new WorldInitEvent(internal.getWorld()));
  134.         server.getPluginManager().callEvent(new WorldLoadEvent(internal.getWorld()));
  135.  
  136.         return internal.getWorld();
  137.     }
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement