1010import org .bukkit .WorldType ;
1111import org .bukkit .command .Command ;
1212import org .bukkit .command .CommandSender ;
13+ import org .bukkit .configuration .file .FileConfiguration ;
14+ import org .bukkit .configuration .file .YamlConfiguration ;
1315import org .bukkit .entity .Player ;
16+ import org .bukkit .plugin .Plugin ;
1417import org .bukkit .plugin .java .JavaPlugin ;
18+ import org .checkerframework .checker .units .qual .C ;
1519
1620import java .io .BufferedReader ;
1721import java .io .File ;
@@ -47,6 +51,44 @@ public void onEnable()
4751 }
4852
4953 configs .forEach (this ::init );
54+ checkForBukkitWorlds ();
55+ }
56+
57+ private void checkForBukkitWorlds () {
58+ FileConfiguration fc = new YamlConfiguration ();
59+ try {
60+ fc .load (new File ("bukkit.yml" ));
61+ searching : for (String i : fc .getKeys (true ))
62+ {
63+ if (i .startsWith ("worlds." )) {
64+ String worldName = i .split ("\\ Q.\\ E" )[1 ];
65+ String generator = i .endsWith (".generator" ) ? fc .getString (i ) : null ;
66+
67+ if (generator != null && generator .startsWith ("Iris" ))
68+ {
69+ info ("Skipping Iris world (hello!), because Iris is managing the bukkit.yml for itself." );
70+ continue ;
71+ }
72+
73+ for (World j : Bukkit .getWorlds ())
74+ {
75+ if (j .getName ().equals (worldName ))
76+ {
77+ continue searching ;
78+ }
79+ }
80+
81+ info ("Loading bukkit.yml " + worldName + " using generator " + generator );
82+ World world = new WorldCreator (worldName )
83+ .generator (generator )
84+ .type (generator != null ? generator .equalsIgnoreCase ("flat" ) ? WorldType .FLAT : generator .equalsIgnoreCase ("amplified" ) ? WorldType .AMPLIFIED : generator .equalsIgnoreCase ("largebiomes" ) ? WorldType .LARGE_BIOMES : WorldType .NORMAL : WorldType .NORMAL )
85+ .createWorld ();
86+ info ("Loaded bukkit.yml " + world .getName () + " using generator " + generator );
87+ }
88+ }
89+ } catch (Throwable e ) {
90+ e .printStackTrace ();
91+ }
5092 }
5193
5294 public void onDisable ()
@@ -72,7 +114,9 @@ private void init(RiftWorldConfig c) {
72114 return ;
73115 }
74116
75- WorldCreator .name (f .getName ()).generator (generator ).createWorld ();
117+ WorldCreator .name (f .getName ()).generator (generator )
118+ .type (generator .equalsIgnoreCase ("flat" ) ? WorldType .FLAT : generator .equalsIgnoreCase ("amplified" ) ? WorldType .AMPLIFIED : generator .equalsIgnoreCase ("largebiomes" ) ? WorldType .LARGE_BIOMES : WorldType .NORMAL )
119+ .createWorld ();
76120 }
77121
78122 @ Override
@@ -94,6 +138,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
94138 sender .sendMessage (ChatColor .LIGHT_PURPLE + "/rift delete" + ChatColor .GRAY +" <name>" );
95139 sender .sendMessage (ChatColor .LIGHT_PURPLE + "/rift to" + ChatColor .GRAY +" <world>" );
96140 sender .sendMessage (ChatColor .LIGHT_PURPLE + "/rift list" );
141+ sender .sendMessage (ChatColor .LIGHT_PURPLE + "/rift generators" );
97142 }
98143
99144 else if (args [0 ].equalsIgnoreCase ("create" )&& args .length >= 3 )
@@ -107,7 +152,9 @@ else if(args[0].equalsIgnoreCase("create")&& args.length >= 3)
107152 }
108153
109154 String generator = args [2 ];
110- WorldCreator w = WorldCreator .name (f .getName ()).generator (generator );
155+ WorldCreator w = WorldCreator .name (f .getName ())
156+ .type (generator .equalsIgnoreCase ("flat" ) ? WorldType .FLAT : generator .equalsIgnoreCase ("amplified" ) ? WorldType .AMPLIFIED : generator .equalsIgnoreCase ("largebiomes" ) ? WorldType .LARGE_BIOMES : WorldType .NORMAL )
157+ .generator (generator );
111158
112159 if (args .length > 3 )
113160 {
@@ -161,7 +208,9 @@ else if(args[0].equalsIgnoreCase("create")&& args.length >= 3)
161208 }
162209 }
163210
164- WorldCreator .name (f .getName ()).generator (generator ).createWorld ();
211+ WorldCreator .name (f .getName ())
212+ .type (generator .equalsIgnoreCase ("flat" ) ? WorldType .FLAT : generator .equalsIgnoreCase ("amplified" ) ? WorldType .AMPLIFIED : generator .equalsIgnoreCase ("largebiomes" ) ? WorldType .LARGE_BIOMES : WorldType .NORMAL )
213+ .generator (generator ).createWorld ();
165214 sender .sendMessage (tag + "Loaded " + args [1 ]);
166215 }else if (args [0 ].equalsIgnoreCase ("import" )&& args .length >= 3 )
167216 {
@@ -192,7 +241,9 @@ else if(args[0].equalsIgnoreCase("create")&& args.length >= 3)
192241 if (!loaded )
193242 {
194243 sender .sendMessage (tag + "Loading " + f .getName ());
195- World world = WorldCreator .name (f .getName ()).generator (generator ).createWorld ();
244+ World world = WorldCreator .name (f .getName ())
245+ .type (generator .equalsIgnoreCase ("flat" ) ? WorldType .FLAT : generator .equalsIgnoreCase ("amplified" ) ? WorldType .AMPLIFIED : generator .equalsIgnoreCase ("largebiomes" ) ? WorldType .LARGE_BIOMES : WorldType .NORMAL )
246+ .generator (generator ).createWorld ();
196247 RiftWorldConfig c = RiftWorldConfig .from (world , generator );
197248 configs .add (c );
198249 c .save ();
@@ -279,6 +330,7 @@ else if(args[0].equalsIgnoreCase("create")&& args.length >= 3)
279330 for (World i : Bukkit .getWorlds ())
280331 {
281332 boolean rift = false ;
333+ boolean bukkit = false ;
282334
283335 for (RiftWorldConfig j : configs )
284336 {
@@ -288,12 +340,37 @@ else if(args[0].equalsIgnoreCase("create")&& args.length >= 3)
288340 break ;
289341 }
290342 }
343+ FileConfiguration fc = new YamlConfiguration ();
344+ try {
345+ fc .load (new File ("bukkit.yml" ));
346+
347+ for (String j : fc .getKeys (true ))
348+ {
349+ if (j .startsWith ("worlds." )) {
350+ if (j .split ("\\ Q.\\ E" )[1 ].equals (i .getName ()))
351+ {
352+ bukkit = true ;
353+ break ;
354+ }
355+ }
356+ }
357+ }
358+
359+ catch (Throwable e )
360+ {
361+
362+ }
291363
292364 if (rift )
293365 {
294366 sender .sendMessage (ChatColor .GRAY + "- " + ChatColor .LIGHT_PURPLE + i .getName () + " " + ChatColor .GRAY + " (Managed)" );
295367 }
296368
369+ else if (bukkit )
370+ {
371+ sender .sendMessage (ChatColor .GRAY + "- " + ChatColor .AQUA + i .getName () + " " + ChatColor .GRAY + " (bukkit.yml)" );
372+ }
373+
297374 else
298375 {
299376 sender .sendMessage (ChatColor .GRAY + "- " + ChatColor .GREEN + i .getName () + " " + ChatColor .GRAY + " (Loaded)" );
@@ -315,11 +392,51 @@ else if(args[0].equalsIgnoreCase("create")&& args.length >= 3)
315392 sender .sendMessage (ChatColor .GRAY + "- " + ChatColor .WHITE + i .getName () + " " + ChatColor .GRAY + " (Not Loaded)" );
316393 }
317394 }
395+ }else if (args [0 ].equalsIgnoreCase ("generators" ))
396+ {
397+ sender .sendMessage (ChatColor .GRAY + "- " + ChatColor .WHITE + "normal " + ChatColor .GRAY + " by " + ChatColor .WHITE + "Minecraft" );
398+ sender .sendMessage (ChatColor .GRAY + "- " + ChatColor .WHITE + "flat " + ChatColor .GRAY + " by " + ChatColor .WHITE + "Minecraft" );
399+ sender .sendMessage (ChatColor .GRAY + "- " + ChatColor .WHITE + "amplified " + ChatColor .GRAY + " by " + ChatColor .WHITE + "Minecraft" );
400+ sender .sendMessage (ChatColor .GRAY + "- " + ChatColor .WHITE + "largebiomes " + ChatColor .GRAY + " by " + ChatColor .WHITE + "Minecraft" );
401+
402+ for (Plugin i : Bukkit .getPluginManager ().getPlugins ())
403+ {
404+ if (i .getName ().equals ("Iris" ))
405+ {
406+ sender .sendMessage (ChatColor .GRAY + "- " + ChatColor .GREEN + i .getName () + ChatColor .DARK_GREEN + ":[dimension]" + " " + ChatColor .GRAY + " by " + ChatColor .WHITE + printAuthors (i .getDescription ().getAuthors ()));
407+ }
408+
409+ else if (i .getDefaultWorldGenerator ("testworld" , null ) != null )
410+ {
411+ sender .sendMessage (ChatColor .GRAY + "- " + ChatColor .GREEN + i .getName () + " " + ChatColor .GRAY + " by " + ChatColor .WHITE + printAuthors (i .getDescription ().getAuthors ()));
412+ }
413+ }
318414 }
319415
320416 return true ;
321417 }
322418
419+ private String printAuthors (List <String > authors ) {
420+ if (authors == null || authors .isEmpty ())
421+ {
422+ return "Anonymous" ;
423+ }
424+
425+ if (authors .size () == 1 )
426+ {
427+ return authors .get (0 );
428+ }
429+
430+ StringBuilder s = new StringBuilder ();
431+
432+ for (String i : authors )
433+ {
434+ s .append (", " ).append (i );
435+ }
436+
437+ return s .substring (2 );
438+ }
439+
323440 private void deleteWorld (File f ) {
324441 System .gc (); // Windows is annoying
325442 deleteFiles (f );
0 commit comments