Skip to content

Commit 3d9d651

Browse files
committed
Rewrite how the commands work with Aikar FW.
The basic /bmv command no longer requires any permission. The /bmv list command now displays all worlds, including those not currently loaded by BulMultiverse.
1 parent 52f9b08 commit 3d9d651

15 files changed

Lines changed: 74 additions & 51 deletions

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<name>BulMultiverse</name>
1010
<description>BulMultiverse is a Minecraft plugin, ultra light and optimized world manager</description>
1111
<url>https://github.com/BulPlugins/BulMultiverse</url>
12-
<version>1.0</version>
12+
<version>1.1</version>
1313

1414
<properties>
1515
<maven.compiler.source>8</maven.compiler.source>

src/main/java/com/alihaine/bulmultiverse/BulMultiverse.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.alihaine.bulmultiverse;
22

3+
import co.aikar.commands.BaseCommand;
34
import co.aikar.commands.PaperCommandManager;
45
import com.alihaine.bulmultiverse.addon.AddonManager;
56
import com.alihaine.bulmultiverse.addon.BulMultiverseAddon;
@@ -21,11 +22,11 @@ public class BulMultiverse extends JavaPlugin {
2122
public static final String line = "------------------------------------------------------------------";
2223

2324
private static BulMultiverse bulMultiverse;
24-
private WorldsFile worldsFile;
25-
private WorldOptionManager worldOptionManager;
26-
private WorldDataManager worldDataManager;
27-
private AddonManager addonManager;
28-
private PaperCommandManager commandManager;
25+
private static WorldsFile worldsFile;
26+
private static WorldOptionManager worldOptionManager;
27+
private static WorldDataManager worldDataManager;
28+
private static AddonManager addonManager;
29+
private static PaperCommandManager commandManager;
2930

3031

3132
@Override
@@ -63,6 +64,7 @@ public void onDisable() {
6364
}
6465

6566
private void setupDefaultCommands() {
67+
commandManager.registerCommand(new BaseBmvCommand());
6668
commandManager.registerCommand(new AddonsCommand());
6769
commandManager.registerCommand(new InfoCommand());
6870
commandManager.registerCommand(new ListCommand());
@@ -92,24 +94,24 @@ public static BulMultiverse getBulMultiverse() {
9294
return bulMultiverse;
9395
}
9496

95-
public WorldsFile getWorldsFile() {
97+
public static WorldsFile getWorldsFile() {
9698
return worldsFile;
9799
}
98100

99-
public WorldOptionManager getWorldOptionManager() {
101+
public static WorldOptionManager getWorldOptionManager() {
100102
return worldOptionManager;
101103
}
102104

103-
public WorldDataManager getWorldDataManager() {
105+
public static WorldDataManager getWorldDataManager() {
104106
return worldDataManager;
105107
}
106108

107-
public AddonManager getAddonManager() { return addonManager; }
109+
public static AddonManager getAddonManager() { return addonManager; }
108110

109111
/*
110112
* Addons must use this function to register additional commands.
111113
*/
112-
public void registerCommand(BaseBmvCommand newCommand) {
114+
public void registerCommand(BaseCommand newCommand) {
113115
commandManager.registerCommand(newCommand);
114116
}
115117
}

src/main/java/com/alihaine/bulmultiverse/command/AddonsCommand.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
package com.alihaine.bulmultiverse.command;
22

3+
import co.aikar.commands.BaseCommand;
34
import co.aikar.commands.annotation.*;
45
import com.alihaine.bulmultiverse.BulMultiverse;
56
import com.alihaine.bulmultiverse.addon.BulMultiverseAddon;
67
import org.bukkit.command.CommandSender;
78

89
@CommandAlias(BaseBmvCommand.commandRootAlias)
910
@CommandPermission("bulmultiverse.addon")
10-
public class AddonsCommand extends BaseBmvCommand {
11+
public class AddonsCommand extends BaseCommand {
1112
@Subcommand("addon|addons")
1213
@Description("Display loaded addons")
1314
@Syntax("/bmv addon")
1415
public void onAddonList(CommandSender sender) {
1516
sender.sendMessage("§eLoaded addons: ");
16-
for (BulMultiverseAddon addon : addonManager.getAddonsList())
17+
for (BulMultiverseAddon addon : BulMultiverse.getAddonManager().getAddonsList())
1718
sender.sendMessage("§e" + addon.getName());
1819

1920
}
@@ -22,7 +23,7 @@ public void onAddonList(CommandSender sender) {
2223
@Description("Display infos about a specified addon")
2324
@Syntax("/bmv addon [addon_name]")
2425
public void onAddonTarget(CommandSender sender, String addonName) {
25-
BulMultiverseAddon addon = BulMultiverse.getBulMultiverse().getAddonManager().getAddonFromName(addonName);
26+
BulMultiverseAddon addon = BulMultiverse.getAddonManager().getAddonFromName(addonName);
2627
if (addon == null) {
2728
sender.sendMessage("Addon with name: " + addonName + " not found");
2829
return;

src/main/java/com/alihaine/bulmultiverse/command/BaseBmvCommand.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,14 @@
44
import co.aikar.commands.annotation.CommandAlias;
55
import co.aikar.commands.annotation.Default;
66
import com.alihaine.bulmultiverse.BulMultiverse;
7-
import com.alihaine.bulmultiverse.addon.AddonManager;
8-
import com.alihaine.bulmultiverse.file.WorldsFile;
9-
import com.alihaine.bulmultiverse.world.WorldDataManager;
10-
import com.alihaine.bulmultiverse.world.WorldOptionManager;
117
import org.bukkit.command.CommandSender;
128

139
@CommandAlias(BaseBmvCommand.commandRootAlias)
1410
public class BaseBmvCommand extends BaseCommand {
11+
1512
/*
16-
* Commands may need to use these instances frequently
17-
* To improve readability and make access easier, they are defined here.
13+
* All commands must use this variable as the root alias.
1814
*/
19-
protected final WorldDataManager worldDataManager = BulMultiverse.getBulMultiverse().getWorldDataManager();
20-
protected final WorldsFile worldsFile = BulMultiverse.getBulMultiverse().getWorldsFile();
21-
protected final WorldOptionManager worldOptionManager = BulMultiverse.getBulMultiverse().getWorldOptionManager();
22-
protected final AddonManager addonManager = BulMultiverse.getBulMultiverse().getAddonManager();
23-
2415
public static final String commandRootAlias = "bmv|bulmv|bulmultiverse";
2516

2617
@Default

src/main/java/com/alihaine/bulmultiverse/command/CreateCommand.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.alihaine.bulmultiverse.command;
22

3+
import co.aikar.commands.BaseCommand;
34
import co.aikar.commands.annotation.*;
45
import com.alihaine.bulmultiverse.BulMultiverse;
56
import com.alihaine.bulmultiverse.file.ConfigFile;
@@ -14,7 +15,7 @@
1415

1516
@CommandAlias(BaseBmvCommand.commandRootAlias)
1617
@CommandPermission("bulmultiverse.create")
17-
public class CreateCommand extends BaseBmvCommand {
18+
public class CreateCommand extends BaseCommand {
1819
@Subcommand("create")
1920
@Description("Create a new world")
2021
@Syntax("/bmv create [World Name] (Flags)")
@@ -26,15 +27,15 @@ public void onCreate(CommandSender sender, String worldName, String[] flags) {
2627
return;
2728
}
2829

29-
if (BulMultiverse.getBulMultiverse().getWorldDataManager().isWorldAlreadyCreated(worldName) || worldName.equalsIgnoreCase("overworld") ) {
30+
if (BulMultiverse.getWorldDataManager().isWorldAlreadyCreated(worldName) || worldName.equalsIgnoreCase("overworld") ) {
3031
new Message("world_already_exist").sendMessage(sender);
3132
return;
3233
}
3334

3435
for (int i = 0; i < flags.length - 1; i+=2) {
3536
String flag = flags[i];
3637
try {
37-
convertToOptionString.put(worldOptionManager.getOption(flag), flags[i+1]);
38+
convertToOptionString.put(BulMultiverse.getWorldOptionManager().getOption(flag), flags[i+1]);
3839
} catch (Exception exception) {
3940
new Message("flag_not_found")
4041
.withPlaceHolder("name", flag)
@@ -44,6 +45,6 @@ public void onCreate(CommandSender sender, String worldName, String[] flags) {
4445

4546
WorldData worldData = new WorldData(worldName, convertToOptionString);
4647
worldData.createWorld(sender);
47-
BulMultiverse.getBulMultiverse().getWorldsFile().saveWorldDataToFile(worldData);
48+
BulMultiverse.getWorldsFile().saveWorldDataToFile(worldData);
4849
}
4950
}

src/main/java/com/alihaine/bulmultiverse/command/FlagsCommand.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
package com.alihaine.bulmultiverse.command;
22

3+
import co.aikar.commands.BaseCommand;
34
import co.aikar.commands.annotation.*;
5+
import com.alihaine.bulmultiverse.BulMultiverse;
46
import com.alihaine.bulmultiverse.file.Message;
57
import org.bukkit.command.CommandSender;
68

79
@CommandAlias(BaseBmvCommand.commandRootAlias)
810
@CommandPermission("bulmultiverse.flags")
9-
public class FlagsCommand extends BaseBmvCommand {
11+
public class FlagsCommand extends BaseCommand {
1012
@Subcommand("flag|flags")
1113
@Description("Display all the available flags")
1214
@Syntax("/bmv flags")
1315
public void onFlags(CommandSender sender) {
14-
worldOptionManager.getAvailableOptionsList().forEach((value) -> {
16+
BulMultiverse.getWorldOptionManager().getAvailableOptionsList().forEach((value) -> {
1517
new Message("flags_pattern").
1618
withPlaceHolder("usage", value.getUsage()).
1719
withPlaceHolder("description", value.getDescription()).

src/main/java/com/alihaine/bulmultiverse/command/HelpCommand.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package com.alihaine.bulmultiverse.command;
22

3+
import co.aikar.commands.BaseCommand;
34
import co.aikar.commands.CommandHelp;
45
import co.aikar.commands.HelpEntry;
56
import co.aikar.commands.annotation.*;
67
import com.alihaine.bulmultiverse.file.Message;
78
import org.bukkit.command.CommandSender;
89

910
@CommandAlias(BaseBmvCommand.commandRootAlias)
10-
public class HelpCommand extends BaseBmvCommand {
11+
public class HelpCommand extends BaseCommand {
1112

1213
@Subcommand("help")
1314
@Description("Display the help menu")

src/main/java/com/alihaine/bulmultiverse/command/InfoCommand.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.alihaine.bulmultiverse.command;
22

3+
import co.aikar.commands.BaseCommand;
34
import co.aikar.commands.annotation.*;
45
import com.alihaine.bulmultiverse.BulMultiverse;
56
import com.alihaine.bulmultiverse.file.Message;
@@ -9,9 +10,9 @@
910

1011
@CommandAlias(BaseBmvCommand.commandRootAlias)
1112
@CommandPermission("bulmultiverse.info")
12-
public class InfoCommand extends BaseBmvCommand {
13+
public class InfoCommand extends BaseCommand {
1314
private WorldData getWorldData(String worldName, CommandSender sender) {
14-
WorldData worldData = worldDataManager.getWorldDataFromWorldName(worldName);
15+
WorldData worldData = BulMultiverse.getWorldDataManager().getWorldDataFromWorldName(worldName);
1516
if (worldData == null) {
1617
new Message("world_not_found").withPlaceHolder("name", worldName).sendMessage(sender);
1718
return null;
Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,36 @@
11
package com.alihaine.bulmultiverse.command;
22

3+
import co.aikar.commands.BaseCommand;
34
import co.aikar.commands.annotation.*;
5+
import com.alihaine.bulmultiverse.BulMultiverse;
6+
import com.alihaine.bulmultiverse.world.WorldData;
7+
import org.bukkit.Bukkit;
48
import org.bukkit.command.CommandSender;
59

10+
import java.util.ArrayList;
11+
import java.util.List;
12+
import java.util.Set;
13+
import java.util.stream.Collectors;
14+
615
@CommandAlias(BaseBmvCommand.commandRootAlias)
716
@CommandPermission("bulmultiverse.list")
8-
public class ListCommand extends BaseBmvCommand {
17+
public class ListCommand extends BaseCommand {
918
@Subcommand("l|list|lists")
1019
@Description("List all the loaded worlds")
1120
@Syntax("/bmv list")
1221
public void onList(CommandSender commandSender) {
1322
commandSender.sendMessage("§aLoaded worlds");
14-
worldDataManager.getWorldsData().forEach(worldData -> {
15-
commandSender.sendMessage(worldData.getWorldName());
23+
Set<String> loadedWorlds = BulMultiverse.getWorldDataManager()
24+
.getWorldsData()
25+
.stream()
26+
.map(WorldData::getWorldName)
27+
.collect(Collectors.toSet());
28+
29+
Bukkit.getWorlds().forEach(world -> {
30+
if (loadedWorlds.contains(world.getName()))
31+
commandSender.sendMessage("§e" + world.getName());
32+
else
33+
commandSender.sendMessage("§e" + world.getName() + " §o§cnot loaded with BulMultiverse");
1634
});
1735
}
1836
}
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.alihaine.bulmultiverse.command;
22

3+
import co.aikar.commands.BaseCommand;
34
import co.aikar.commands.annotation.*;
5+
import com.alihaine.bulmultiverse.BulMultiverse;
46
import com.alihaine.bulmultiverse.file.Message;
57
import com.alihaine.bulmultiverse.world.WorldData;
68
import org.bukkit.Bukkit;
@@ -10,19 +12,19 @@
1012

1113
@CommandAlias(BaseBmvCommand.commandRootAlias)
1214
@CommandPermission("bulmultiverse.load")
13-
public class LoadCommand extends BaseBmvCommand {
15+
public class LoadCommand extends BaseCommand {
1416
@Subcommand("load")
1517
@Description("Load existing world")
1618
@Syntax("/bmv load [world_name]")
1719
public void onLoad(CommandSender sender, String targetWorld) {
1820
Bukkit.getConsoleSender().sendMessage(targetWorld);
1921

20-
if (!worldsFile.isWorldFolderExisting(targetWorld)) {
22+
if (!BulMultiverse.getWorldsFile().isWorldFolderExisting(targetWorld)) {
2123
new Message("world_not_found").withPlaceHolder("name", targetWorld).sendMessage(sender);
2224
return;
2325
}
2426
WorldData worldData = new WorldData(targetWorld, new HashMap<>());
2527
worldData.createWorld(sender);
26-
worldsFile.saveWorldDataToFile(worldData);
28+
BulMultiverse.getWorldsFile().saveWorldDataToFile(worldData);
2729
}
2830
}

0 commit comments

Comments
 (0)