diff --git a/pom.xml b/pom.xml
index b90c4dd9..a53bd0c3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
4.0.0
com.songoda
skyblock
- 2.3.3-DEV
+ 2.3.3-DEV2
jar
clean install
diff --git a/src/main/java/com/songoda/skyblock/command/CommandManager.java b/src/main/java/com/songoda/skyblock/command/CommandManager.java
index 7b8c53ef..5b844db1 100644
--- a/src/main/java/com/songoda/skyblock/command/CommandManager.java
+++ b/src/main/java/com/songoda/skyblock/command/CommandManager.java
@@ -114,7 +114,8 @@ public class CommandManager implements CommandExecutor, TabCompleter {
new StructureCommand(),
new com.songoda.skyblock.command.commands.admin.UpgradeCommand(),
new StackableCommand(),
- new AdminBank()
+ new AdminBank(),
+ new SetMaxMembers()
);
}
diff --git a/src/main/java/com/songoda/skyblock/command/commands/admin/SetMaxMembers.java b/src/main/java/com/songoda/skyblock/command/commands/admin/SetMaxMembers.java
new file mode 100644
index 00000000..238e7ed5
--- /dev/null
+++ b/src/main/java/com/songoda/skyblock/command/commands/admin/SetMaxMembers.java
@@ -0,0 +1,147 @@
+package com.songoda.skyblock.command.commands.admin;
+
+import com.songoda.core.compatibility.CompatibleSound;
+import com.songoda.skyblock.command.SubCommand;
+import com.songoda.skyblock.config.FileManager;
+import com.songoda.skyblock.config.FileManager.Config;
+import com.songoda.skyblock.island.Island;
+import com.songoda.skyblock.island.IslandManager;
+import com.songoda.skyblock.message.MessageManager;
+import com.songoda.skyblock.playerdata.PlayerDataManager;
+import com.songoda.skyblock.sound.SoundManager;
+import com.songoda.skyblock.utils.NumberUtil;
+import com.songoda.skyblock.utils.player.OfflinePlayer;
+import org.bukkit.Bukkit;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.ConsoleCommandSender;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.configuration.file.YamlConfiguration;
+import org.bukkit.entity.Player;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.UUID;
+
+public class SetMaxMembers extends SubCommand {
+
+ @Override
+ public void onCommandByPlayer(Player player, String[] args) {
+ onCommand(player, args);
+ }
+
+ @Override
+ public void onCommandByConsole(ConsoleCommandSender sender, String[] args) {
+ onCommand(sender, args);
+ }
+
+ public void onCommand(CommandSender sender, String[] args) {
+ PlayerDataManager playerDataManager = skyblock.getPlayerDataManager();
+ MessageManager messageManager = skyblock.getMessageManager();
+ IslandManager islandManager = skyblock.getIslandManager();
+ SoundManager soundManager = skyblock.getSoundManager();
+ FileManager fileManager = skyblock.getFileManager();
+
+ Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml"));
+ FileConfiguration configLoad = config.getFileConfiguration();
+
+ if (args.length == 2) {
+ if (args[1].matches("[0-9]+")) {
+ Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
+ UUID islandOwnerUUID;
+ String targetPlayerName;
+
+ if (targetPlayer == null) {
+ OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]);
+ islandOwnerUUID = targetPlayerOffline.getOwner();
+ targetPlayerName = targetPlayerOffline.getName();
+ } else {
+ islandOwnerUUID = playerDataManager.getPlayerData(targetPlayer).getOwner();
+ targetPlayerName = targetPlayer.getName();
+ }
+
+ int maxMembers = Integer.valueOf(args[1]);
+
+ if (islandOwnerUUID == null) {
+ messageManager.sendMessage(sender,
+ configLoad.getString("Command.Island.Admin.SetMaxMembers.Island.Owner.Message"));
+ soundManager.playSound(sender, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F);
+ } else if (maxMembers <= 0) {
+ messageManager.sendMessage(sender,
+ configLoad.getString("Command.Island.Admin.SetMaxMembers.Members.Greater.Message"));
+ soundManager.playSound(sender, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F);
+ } else if (maxMembers > 100000) {
+ messageManager.sendMessage(sender,
+ configLoad.getString("Command.Island.Admin.SetMaxMembers.Members.Less.Message"));
+ soundManager.playSound(sender, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F);
+ } else {
+ if (islandManager.containsIsland(islandOwnerUUID)) {
+ Island island = islandManager
+ .getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID));
+ island.setMaxMembers(maxMembers);
+
+ if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml"))
+ .getFileConfiguration().getBoolean("Island.WorldBorder.Enable")
+ && island.isBorder()) {
+ islandManager.updateBorder(island);
+ }
+ } else {
+ File islandDataFile = new File(skyblock.getDataFolder().toString() + "/island-data",
+ islandOwnerUUID.toString() + ".yml");
+
+ if (!fileManager.isFileExist(islandDataFile)) {
+ messageManager.sendMessage(sender,
+ configLoad.getString("Command.Island.Admin.SetMaxMembers.Island.Data.Message"));
+ soundManager.playSound(sender, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
+
+ return;
+ }
+
+ FileConfiguration islandDataConfigLoad = YamlConfiguration
+ .loadConfiguration(islandDataFile);
+ islandDataConfigLoad.set("MaxMembers", maxMembers);
+
+ try {
+ islandDataConfigLoad.save(islandDataFile);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ messageManager.sendMessage(sender,
+ configLoad.getString("Command.Island.Admin.SetMaxMembers.Set.Message")
+ .replace("%player", targetPlayerName)
+ .replace("%maxMembers", NumberUtil.formatNumberByDecimal(maxMembers)));
+ soundManager.playSound(sender, CompatibleSound.BLOCK_NOTE_BLOCK_PLING.getSound(), 1.0F, 1.0F);
+ }
+ } else {
+ messageManager.sendMessage(sender,
+ configLoad.getString("Command.Island.Admin.SetMaxMembers.Numerical.Message"));
+ soundManager.playSound(sender, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
+ }
+ } else {
+ messageManager.sendMessage(sender,
+ configLoad.getString("Command.Island.Admin.SetMaxMembers.Invalid.Message"));
+ soundManager.playSound(sender, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
+ }
+ }
+
+ @Override
+ public String getName() {
+ return "setmaxmembers";
+ }
+
+ @Override
+ public String getInfoMessagePath() {
+ return "Command.Island.Admin.SetMaxMembers.Info.Message";
+ }
+
+ @Override
+ public String[] getAliases() {
+ return new String[0];
+ }
+
+ @Override
+ public String[] getArguments() {
+ return new String[0];
+ }
+}
diff --git a/src/main/java/com/songoda/skyblock/island/Island.java b/src/main/java/com/songoda/skyblock/island/Island.java
index 5e3b9895..2340d574 100644
--- a/src/main/java/com/songoda/skyblock/island/Island.java
+++ b/src/main/java/com/songoda/skyblock/island/Island.java
@@ -60,7 +60,7 @@ public class Island {
this.size = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration()
.getInt("Island.Size.Minimum");
this.maxMembers = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration()
- .getInt("Island.InitialMaxMembers", 3);
+ .getInt("Island.Member.Capacity", 3);
if (this.size > 1000) {
this.size = 50;
diff --git a/src/main/java/com/songoda/skyblock/menus/Information.java b/src/main/java/com/songoda/skyblock/menus/Information.java
index e100aaa6..102ec961 100644
--- a/src/main/java/com/songoda/skyblock/menus/Information.java
+++ b/src/main/java/com/songoda/skyblock/menus/Information.java
@@ -346,7 +346,7 @@ public class Information {
new Placeholder[]{
new Placeholder("%island_members",
"" + (islandMembers.size() + islandOperators.size() + 1)),
- new Placeholder("%island_maxMembers", // %island_capacity
+ new Placeholder("%island_capacity", // %island_capacity
"" + island.getMaxMembers()),
new Placeholder("%members", "" + islandMembers.size()),
new Placeholder("%operators", "" + islandOperators.size())},
diff --git a/src/main/java/com/songoda/skyblock/menus/admin/Upgrade.java b/src/main/java/com/songoda/skyblock/menus/admin/Upgrade.java
index d0602168..8e45690e 100644
--- a/src/main/java/com/songoda/skyblock/menus/admin/Upgrade.java
+++ b/src/main/java/com/songoda/skyblock/menus/admin/Upgrade.java
@@ -1219,7 +1219,7 @@ public class Upgrade {
configLoad.getString("Menu.Admin.Upgrade.Members.Item.Tier.Displayname")
.replace("%tier", "" + tier)),
configLoad.getStringList("Menu.Admin.Upgrade.Members.Item.Tier.Lore"),
- new Placeholder[]{new Placeholder("%members", "" + upgrade.getValue()),
+ new Placeholder[]{new Placeholder("%maxMembers", "" + upgrade.getValue()),
new Placeholder("%cost",
NumberUtil.formatNumberByDecimal(upgrade.getCost()))},
null, null), i + 3);
diff --git a/src/main/java/com/songoda/skyblock/upgrade/UpgradeManager.java b/src/main/java/com/songoda/skyblock/upgrade/UpgradeManager.java
index 88580882..9a0f5814 100644
--- a/src/main/java/com/songoda/skyblock/upgrade/UpgradeManager.java
+++ b/src/main/java/com/songoda/skyblock/upgrade/UpgradeManager.java
@@ -26,7 +26,7 @@ public class UpgradeManager {
FileConfiguration configLoad = config.getFileConfiguration();
for (Upgrade.Type typeList : Upgrade.Type.values()) {
- if (typeList != Upgrade.Type.Size) {
+ if (typeList != Upgrade.Type.Size && typeList != Upgrade.Type.Members) {
List upgrades = new ArrayList<>();
Upgrade upgrade = new Upgrade(configLoad.getDouble("Upgrades." + typeList.name() + ".Cost"));
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 9deeb552..60818c68 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -9,7 +9,6 @@ Sound:
# When disabled all sounds will be disabled.
Enable: true
Island:
- InitialMaxMembers: 3
Size:
# [!] Do not go over 1000 for both of these options.
# The size of an Island when created.
@@ -91,6 +90,7 @@ Island:
Height: 60
Member:
# Max amount of players allowed to be in a team.
+ # Can be increased with Upgrades
Capacity: 12
Chat:
# If island chat should be output to console
diff --git a/src/main/resources/language.yml b/src/main/resources/language.yml
index facd7e89..055f79ea 100644
--- a/src/main/resources/language.yml
+++ b/src/main/resources/language.yml
@@ -1756,7 +1756,7 @@ Menu:
- ''
- '&eClick to manage tiers!'
Members:
- Displayname: '&aBorder Size'
+ Displayname: '&aMax Members'
Lore:
- '&7Increases the max amount'
- '&7of Island members.'
@@ -1864,7 +1864,7 @@ Menu:
- '&7Max members&8: &f%maxMembers'
- '&7Cost&8: &f$%cost'
- ''
- - '&eLeft-Click to set size!'
+ - '&eLeft-Click to set value!'
- '&eMiddle-Click to remove!'
- '&eRight-Click to set cost!'
Displayname: '&bTier #%tier'