Skip to content

Commit da42d29

Browse files
committed
Kdone
1 parent cc9800b commit da42d29

1 file changed

Lines changed: 121 additions & 4 deletions

File tree

src/main/java/com/volmit/rift/Rift.java

Lines changed: 121 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,12 @@
1010
import org.bukkit.WorldType;
1111
import org.bukkit.command.Command;
1212
import org.bukkit.command.CommandSender;
13+
import org.bukkit.configuration.file.FileConfiguration;
14+
import org.bukkit.configuration.file.YamlConfiguration;
1315
import org.bukkit.entity.Player;
16+
import org.bukkit.plugin.Plugin;
1417
import org.bukkit.plugin.java.JavaPlugin;
18+
import org.checkerframework.checker.units.qual.C;
1519

1620
import java.io.BufferedReader;
1721
import 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

Comments
 (0)