Initial work to add maxMembers upgrade

This commit is contained in:
Fabrizio La Rosa 2020-06-16 19:17:28 +02:00
parent 781b716783
commit 4b9f543b0a
9 changed files with 757 additions and 19 deletions

View File

@ -46,6 +46,7 @@ public class Island {
private UUID ownerUUID;
private IslandLevel level;
private int size;
private int maxMembers;
private boolean deleted = false;
public Island(OfflinePlayer player) {
@ -57,6 +58,8 @@ public class Island {
this.ownerUUID = player.getUniqueId();
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);
if (this.size > 1000) {
this.size = 50;
@ -99,6 +102,12 @@ public class Island {
configLoad.set("UUID", islandUUID.toString());
}
if (configLoad.getString("MaxMembers") != null) {
maxMembers = configLoad.getInt("MaxMembers");
} else {
configLoad.set("MaxMembers", maxMembers);
}
if (configLoad.getString("Size") != null) {
size = configLoad.getInt("Size");
}
@ -256,6 +265,21 @@ public class Island {
.getFileConfiguration().getString("Ownership.Original"));
}
public int getMaxMembers() {
return maxMembers;
}
public void setMaxMembers(int maxMembers) {
if (maxMembers > 100000 || maxMembers < 0) {
maxMembers = 2;
}
this.maxMembers = maxMembers;
skyblock.getFileManager().getConfig(
new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml"))
.getFileConfiguration().set("MaxMembers", maxMembers);
}
public int getSize() {
return size;
}

View File

@ -346,10 +346,8 @@ public class Information {
new Placeholder[]{
new Placeholder("%island_members",
"" + (islandMembers.size() + islandOperators.size() + 1)),
new Placeholder("%island_capacity",
"" + skyblock.getFileManager()
.getConfig(new File(skyblock.getDataFolder(), "config.yml"))
.getFileConfiguration().getInt("Island.Member.Capacity")),
new Placeholder("%island_maxMembers", // %island_capacity
"" + island.getMaxMembers()),
new Placeholder("%members", "" + islandMembers.size()),
new Placeholder("%operators", "" + islandOperators.size())},
null, null),

View File

@ -355,6 +355,59 @@ public class Upgrade {
event.setWillDestroy(false);
}
}
} else if ((is.getType() == Material.BOOKSHELF) && (is.hasItemMeta())) {
List<com.songoda.skyblock.upgrade.Upgrade> upgrades = upgradeManager
.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Members);
if (upgrades != null && upgrades.size() > 0) {
for (int i = 0; i < upgrades.size(); i++) {
com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(i);
int tier = i + 1;
if (is.getItemMeta().getDisplayName()
.equals(ChatColor.translateAlternateColorCodes('&',
configLoad.getString("Menu.Upgrade.Item.Members.Displayname")
.replace("%tier", "" + tier)))) {
if (upgrade.getValue() > island.getMaxMembers()
&& upgrade.getValue() != island.getMaxMembers()) {
if (EconomyManager.hasBalance(player, upgrade.getCost())) {
messageManager.sendMessage(player,
configLoad.getString("Island.Upgrade.Bought.Message").replace(
"%upgrade", is.getItemMeta().getDisplayName()));
soundManager.playSound(player, CompatibleSound.ENTITY_PLAYER_LEVELUP.getSound(), 1.0F,
1.0F);
EconomyManager.withdrawBalance(player, upgrade.getCost());
island.setMaxMembers(upgrade.getValue());
Bukkit.getServer().getPluginManager().callEvent(new IslandUpgradeEvent(
island.getAPIWrapper(), player, APIUtil.fromImplementation(
com.songoda.skyblock.upgrade.Upgrade.Type.Members)));
Bukkit.getServer().getScheduler().runTaskLater(skyblock,
() -> open(player), 1L);
} else {
messageManager.sendMessage(player,
configLoad.getString("Island.Upgrade.Money.Message"));
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F,
1.0F);
event.setWillClose(false);
event.setWillDestroy(false);
}
return;
}
}
}
messageManager.sendMessage(player,
configLoad.getString("Island.Upgrade.Claimed.Message"));
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
event.setWillClose(false);
event.setWillDestroy(false);
}
} else if ((is.getType() == Material.BEACON) && (is.hasItemMeta())) {
List<com.songoda.skyblock.upgrade.Upgrade> upgrades = upgradeManager
.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Size);
@ -678,6 +731,66 @@ public class Upgrade {
}
}
upgrades = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Members);
if (upgrades != null && upgrades.size() > 0) {
for (int i = 0; i < upgrades.size(); i++) {
com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(i);
int tier = i + 1;
if (tier != upgrades.size()) {
if (upgrade.getValue() <= island.getMaxMembers()) {
continue;
}
}
if (island.getMaxMembers() >= upgrade.getValue()) {
nInv.addItem(nInv.createItem(new ItemStack(Material.BOOKSHELF),
ChatColor.translateAlternateColorCodes('&',
configLoad.getString("Menu.Upgrade.Item.Members.Displayname").replace("%tier",
"" + tier)),
configLoad.getStringList("Menu.Upgrade.Item.Members.Claimed.Lore"),
new Placeholder[]{
new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())),
new Placeholder("%tier", "" + tier),
new Placeholder("%maxMembers", "" + upgrade.getValue())},
null, null), 6);
} else {
if (EconomyManager.hasBalance(player, upgrade.getCost())) {
nInv.addItem(
nInv.createItem(new ItemStack(Material.BOOKSHELF),
ChatColor.translateAlternateColorCodes('&',
configLoad.getString("Menu.Upgrade.Item.Members.Displayname")
.replace("%tier", "" + tier)),
configLoad.getStringList("Menu.Upgrade.Item.Members.Claimable.Lore"),
new Placeholder[]{
new Placeholder("%cost",
NumberUtil.formatNumberByDecimal(upgrade.getCost())),
new Placeholder("%tier", "" + tier),
new Placeholder("%maxMembers", "" + upgrade.getValue())},
null, null),
6);
} else {
nInv.addItem(
nInv.createItem(new ItemStack(Material.BOOKSHELF),
ChatColor.translateAlternateColorCodes('&',
configLoad.getString("Menu.Upgrade.Item.Members.Displayname")
.replace("%tier", "" + tier)),
configLoad.getStringList("Menu.Upgrade.Item.Members.Unclaimable.Lore"),
new Placeholder[]{
new Placeholder("%cost",
NumberUtil.formatNumberByDecimal(upgrade.getCost())),
new Placeholder("%tier", "" + tier),
new Placeholder("%maxMembers", "" + upgrade.getValue())},
null, null),
6);
}
}
break;
}
}
upgrades = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Size);
if (upgrades != null && upgrades.size() > 0) {

View File

@ -118,6 +118,15 @@ public class Upgrade {
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_BUTTON_CLICK_ON.getSound(), 1.0F, 1.0F);
Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L);
} else if ((is.getType() == Material.BOOKSHELF) && (is.hasItemMeta())
&& (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&',
configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Members.Displayname"))))) {
viewer.setType(Viewer.Type.Members);
viewer.setUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Members);
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_BUTTON_CLICK_ON.getSound(), 1.0F, 1.0F);
Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L);
} else if ((is.getType() == CompatibleMaterial.SPAWNER.getMaterial()) && (is.hasItemMeta())
&& (is.getItemMeta().getDisplayName()
@ -270,7 +279,7 @@ public class Upgrade {
new Placeholder[]{
new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())),
new Placeholder("%status", getStatus(upgrade))},
null, new ItemFlag[]{ItemFlag.HIDE_POTION_EFFECTS}), 1);
null, new ItemFlag[]{ItemFlag.HIDE_POTION_EFFECTS}), 0);
if (NMSVersion > 12) {
PotionMeta pm = (PotionMeta) jumpPotion.getItemMeta();
@ -288,7 +297,7 @@ public class Upgrade {
new Placeholder[]{
new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())),
new Placeholder("%status", getStatus(upgrade))},
null, new ItemFlag[]{ItemFlag.HIDE_POTION_EFFECTS}), 2);
null, new ItemFlag[]{ItemFlag.HIDE_POTION_EFFECTS}), 1);
upgrade = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Crop).get(0);
nInv.addItem(nInv.createItem(CompatibleMaterial.WHEAT_SEEDS.getItem(),
@ -298,7 +307,7 @@ public class Upgrade {
new Placeholder[]{
new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())),
new Placeholder("%status", getStatus(upgrade))},
null, null), 3);
null, null), 2);
upgrade = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Fly).get(0);
nInv.addItem(nInv.createItem(new ItemStack(Material.FEATHER),
@ -308,7 +317,7 @@ public class Upgrade {
new Placeholder[]{
new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())),
new Placeholder("%status", getStatus(upgrade))},
null, null), 4);
null, null), 3);
upgrade = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Drops).get(0);
nInv.addItem(nInv.createItem(new ItemStack(Material.SPIDER_EYE),
@ -318,21 +327,37 @@ public class Upgrade {
new Placeholder[]{
new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())),
new Placeholder("%status", getStatus(upgrade))},
null, null), 5);
null, null), 4);
List<com.songoda.skyblock.upgrade.Upgrade> upgrades = upgradeManager
// Size
List<com.songoda.skyblock.upgrade.Upgrade> upgradesSize = upgradeManager
.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Size);
int upgradeTiers = 0;
int upgradeTiersSize = 0;
if (upgrades != null) {
upgradeTiers = upgrades.size();
if (upgradesSize != null) {
upgradeTiersSize = upgradesSize.size();
}
nInv.addItem(nInv.createItem(new ItemStack(Material.BEACON),
ChatColor.translateAlternateColorCodes('&',
configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Size.Displayname")),
configLoad.getStringList("Menu.Admin.Upgrade.Upgrades.Item.Size.Lore"),
new Placeholder[]{new Placeholder("%tiers", "" + upgradeTiers)}, null, null), 6);
new Placeholder[]{new Placeholder("%tiers", "" + upgradeTiersSize)}, null, null), 5);
// Members
List<com.songoda.skyblock.upgrade.Upgrade> upgradesMembers = upgradeManager
.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Members);
int upgradeTiersMembers = 0;
if (upgradesMembers != null) {
upgradeTiersMembers = upgradesMembers.size();
}
nInv.addItem(nInv.createItem(CompatibleMaterial.BOOKSHELF.getItem(),
ChatColor.translateAlternateColorCodes('&',
configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Members.Displayname")),
configLoad.getStringList("Menu.Admin.Upgrade.Upgrades.Item.Members.Lore"),
new Placeholder[]{new Placeholder("%tiers", "" + upgradeTiersMembers)}, null, null), 4);
upgrade = upgradeManager.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Spawner).get(0);
nInv.addItem(nInv.createItem(CompatibleMaterial.SPAWNER.getItem(),
@ -342,12 +367,12 @@ public class Upgrade {
new Placeholder[]{
new Placeholder("%cost", NumberUtil.formatNumberByDecimal(upgrade.getCost())),
new Placeholder("%status", getStatus(upgrade))},
null, null), 7);
null, null), 6);
nInv.addItem(nInv.createItem(CompatibleMaterial.OAK_FENCE_GATE.getItem(),
ChatColor.translateAlternateColorCodes('&',
configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Exit.Displayname")),
null, null, null, null), 0, 8);
null, null, null, null), 8);
nInv.setTitle(ChatColor.translateAlternateColorCodes('&',
configLoad.getString("Menu.Admin.Upgrade.Upgrades.Title")));
@ -780,6 +805,433 @@ public class Upgrade {
configLoad.getString("Menu.Admin.Upgrade.Size.Title")));
nInv.setRows(1);
Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open());
} else if (viewer.getType() == Viewer.Type.Members) {
nInventoryUtil nInv = new nInventoryUtil(player, event -> {
if (!(player.hasPermission("fabledskyblock.admin.upgrade") || player.hasPermission("fabledskyblock.admin.*")
|| player.hasPermission("fabledskyblock.*"))) {
messageManager.sendMessage(player,
configLoad.getString("Island.Admin.Upgrade.Permission.Message"));
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
return;
}
if (playerDataManager.hasPlayerData(player)) {
PlayerData playerData = playerDataManager.getPlayerData(player);
ItemStack is = event.getItem();
if ((is.getType() == CompatibleMaterial.OAK_FENCE_GATE.getMaterial()) && (is.hasItemMeta())
&& (is.getItemMeta().getDisplayName()
.equals(ChatColor.translateAlternateColorCodes('&', configLoad
.getString("Menu.Admin.Upgrade.Members.Item.Return.Displayname"))))) {
playerData.setViewer(new Viewer(Viewer.Type.Upgrades, null));
soundManager.playSound(player, CompatibleSound.ENTITY_ARROW_HIT.getSound(), 1.0F, 1.0F);
Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L);
} else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) && (is.getItemMeta()
.getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad
.getString("Menu.Admin.Upgrade.Members.Item.Information.Displayname"))))) {
List<com.songoda.skyblock.upgrade.Upgrade> upgrades = upgradeManager
.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Members);
if (upgrades != null && upgrades.size() >= 5) {
messageManager.sendMessage(player,
configLoad.getString("Island.Admin.Upgrade.Tier.Limit.Message"));
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
event.setWillClose(false);
event.setWillDestroy(false);
} else {
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_BUTTON_CLICK_ON.getSound(), 1.0F, 1.0F);
Bukkit.getServer().getScheduler().runTaskLater(skyblock,
() -> {
AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> {
if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) {
if (playerDataManager.hasPlayerData(player)
&& playerDataManager
.getPlayerData(player) != null) {
if (!event1.getName().matches("[0-9]+")) {
messageManager.sendMessage(player,
configLoad.getString(
"Island.Admin.Upgrade.Numerical.Message"));
soundManager.playSound(player,
CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F,
1.0F);
event1.setWillClose(false);
event1.setWillDestroy(false);
return;
} else {
List<com.songoda.skyblock.upgrade.Upgrade> upgrades1 = upgradeManager
.getUpgrades(
com.songoda.skyblock.upgrade.Upgrade.Type.Members);
if (upgrades1 != null && upgrades1.size() >= 5) {
messageManager.sendMessage(player,
configLoad.getString(
"Island.Admin.Upgrade.Tier.Limit.Message"));
soundManager.playSound(player,
CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F,
1.0F);
Bukkit.getServer().getScheduler()
.runTaskLater(skyblock,
() -> open(player), 1L);
return;
}
}
int size = Integer.valueOf(event1.getName());
if (size > 1000) {
messageManager.sendMessage(player,
configLoad.getString(
"Island.Admin.Upgrade.Tier.Members.Message"));
soundManager.playSound(player,
CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F,
1.0F);
event.setWillClose(false);
event.setWillDestroy(false);
return;
} else if (upgradeManager.hasUpgrade(
com.songoda.skyblock.upgrade.Upgrade.Type.Members,
size)) {
messageManager.sendMessage(player,
configLoad.getString(
"Island.Admin.Upgrade.Tier.Exist.Message"));
soundManager.playSound(player,
CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F,
1.0F);
event1.setWillClose(false);
event1.setWillDestroy(false);
return;
}
soundManager.playSound(player,
CompatibleSound.BLOCK_ANVIL_USE.getSound(), 1.0F, 1.0F);
upgradeManager.addUpgrade(
com.songoda.skyblock.upgrade.Upgrade.Type.Members,
size);
Bukkit.getServer().getScheduler()
.runTaskLater(skyblock,
() -> open(player), 1L);
}
event1.setWillClose(true);
event1.setWillDestroy(true);
} else {
event1.setWillClose(false);
event1.setWillDestroy(false);
}
});
ItemStack is12 = new ItemStack(Material.NAME_TAG);
ItemMeta im = is12.getItemMeta();
im.setDisplayName(configLoad
.getString("Menu.Admin.Upgrade.Members.Item.Word.Members.Enter"));
is12.setItemMeta(im);
gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is12);
gui.open();
}, 1L);
}
} else if ((is.getType() == CompatibleMaterial.BLACK_STAINED_GLASS_PANE.getMaterial())
&& (is.hasItemMeta())
&& (is.getItemMeta().getDisplayName()
.equals(ChatColor.translateAlternateColorCodes('&', configLoad
.getString("Menu.Admin.Upgrade.Members.Item.Barrier.Displayname"))))) {
soundManager.playSound(player, CompatibleSound.BLOCK_GLASS_BREAK.getSound(), 1.0F, 1.0F);
event.setWillClose(false);
event.setWillDestroy(false);
} else if ((is.getType() == Material.PAPER) && (is.hasItemMeta())) {
int slot = event.getSlot();
int tier = slot - 3;
com.songoda.skyblock.upgrade.Upgrade upgrade = upgradeManager
.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Members).get(tier);
if (upgrade != null) {
if (event.getClick() == ClickType.LEFT) {
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_BUTTON_CLICK_ON.getSound(), 1.0F, 1.0F);
Bukkit.getServer().getScheduler().runTaskLater(skyblock,
() -> {
AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> {
if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) {
if (!(player.hasPermission("fabledskyblock.admin.upgrade")
|| player.hasPermission("fabledskyblock.admin.*")
|| player.hasPermission("fabledskyblock.*"))) {
messageManager.sendMessage(player,
configLoad.getString(
"Island.Admin.Upgrade.Permission.Message"));
soundManager.playSound(player,
CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F,
1.0F);
return;
}
if (playerDataManager.hasPlayerData(player)
&& playerDataManager
.getPlayerData(player) != null) {
if (!event1.getName().matches("[0-9]+")) {
messageManager.sendMessage(player,
configLoad.getString(
"Island.Admin.Upgrade.Numerical.Message"));
soundManager.playSound(player,
CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F,
1.0F);
event1.setWillClose(false);
event1.setWillDestroy(false);
return;
} else if (upgradeManager.getUpgrades(
com.songoda.skyblock.upgrade.Upgrade.Type.Members)
.get(tier) == null) {
messageManager.sendMessage(player,
configLoad.getString(
"Island.Admin.Upgrade.Tier.Selected.Message"));
soundManager.playSound(player,
CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F,
1.0F);
Bukkit.getServer().getScheduler()
.runTaskLater(skyblock,
() -> open(player), 1L);
return;
}
int size = Integer.valueOf(event1.getName());
if (size > 1000) {
messageManager.sendMessage(player,
configLoad.getString(
"Island.Admin.Upgrade.Tier.Members.Message"));
soundManager.playSound(player,
CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F,
1.0F);
event.setWillClose(false);
event.setWillDestroy(false);
return;
} else if (upgradeManager.hasUpgrade(
com.songoda.skyblock.upgrade.Upgrade.Type.Members,
size)) {
messageManager.sendMessage(player,
configLoad.getString(
"Island.Admin.Upgrade.Tier.Exist.Message"));
soundManager.playSound(player,
CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F,
1.0F);
event.setWillClose(false);
event.setWillDestroy(false);
return;
}
soundManager.playSound(player,
CompatibleSound.BLOCK_ANVIL_USE.getSound(), 1.0F, 1.0F);
upgradeManager.getUpgrades(
com.songoda.skyblock.upgrade.Upgrade.Type.Members)
.get(tier).setValue(size);
fileManager
.getConfig(
new File(skyblock.getDataFolder(),
"upgrades.yml"))
.getFileConfiguration()
.set("Upgrades.Members." + tier + ".Value",
size);
Bukkit.getServer().getScheduler()
.runTaskLater(skyblock,
() -> open(player), 1L);
}
event1.setWillClose(true);
event1.setWillDestroy(true);
} else {
event1.setWillClose(false);
event1.setWillDestroy(false);
}
});
ItemStack is13 = new ItemStack(Material.NAME_TAG);
ItemMeta im = is13.getItemMeta();
im.setDisplayName(configLoad.getString(
"Menu.Admin.Upgrade.Members.Item.Word.Members.Enter"));
is13.setItemMeta(im);
gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is13);
gui.open();
}, 1L);
return;
} else if (event.getClick() == ClickType.MIDDLE) {
soundManager.playSound(player, CompatibleSound.ENTITY_IRON_GOLEM_ATTACK.getSound(), 1.0F, 1.0F);
upgradeManager.removeUpgrade(com.songoda.skyblock.upgrade.Upgrade.Type.Members,
upgrade.getCost(), upgrade.getValue());
} else if (event.getClick() == ClickType.RIGHT) {
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_BUTTON_CLICK_ON.getSound(), 1.0F, 1.0F);
Bukkit.getServer().getScheduler().runTaskLater(skyblock,
() -> {
AbstractAnvilGUI gui = new AbstractAnvilGUI(player, event1 -> {
if (event1.getSlot() == AbstractAnvilGUI.AnvilSlot.OUTPUT) {
if (!(player.hasPermission("fabledskyblock.admin.upgrade")
|| player.hasPermission("fabledskyblock.admin.*")
|| player.hasPermission("fabledskyblock.*"))) {
messageManager.sendMessage(player,
configLoad.getString(
"Island.Admin.Upgrade.Permission.Message"));
soundManager.playSound(player,
CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F,
1.0F);
return;
}
if (playerDataManager.hasPlayerData(player)
&& playerDataManager
.getPlayerData(player) != null) {
if (!(event1.getName().matches("[0-9]+")
|| event1.getName().matches(
"([0-9]*)\\.([0-9]{2}$)"))) {
messageManager.sendMessage(player,
configLoad.getString(
"Island.Admin.Upgrade.Numerical.Message"));
soundManager.playSound(player,
CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F,
1.0F);
event1.setWillClose(false);
event1.setWillDestroy(false);
return;
} else if (upgradeManager.getUpgrades(
com.songoda.skyblock.upgrade.Upgrade.Type.Members)
.get(tier) == null) {
messageManager.sendMessage(player,
configLoad.getString(
"Island.Admin.Upgrade.Tier.Selected.Message"));
soundManager.playSound(player,
CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F,
1.0F);
Bukkit.getServer().getScheduler()
.runTaskLater(skyblock,
() -> open(player), 1L);
return;
}
double cost = Double.valueOf(event1.getName());
soundManager.playSound(player,
CompatibleSound.BLOCK_ANVIL_USE.getSound(), 1.0F, 1.0F);
upgradeManager.getUpgrades(
com.songoda.skyblock.upgrade.Upgrade.Type.Members)
.get(tier).setCost(cost);
fileManager
.getConfig(
new File(skyblock.getDataFolder(),
"upgrades.yml"))
.getFileConfiguration()
.set("Upgrades.Members." + tier + ".Cost",
cost);
Bukkit.getServer().getScheduler()
.runTaskLater(skyblock,
() -> open(player), 1L);
}
event1.setWillClose(true);
event1.setWillDestroy(true);
} else {
event1.setWillClose(false);
event1.setWillDestroy(false);
}
});
ItemStack is14 = new ItemStack(Material.NAME_TAG);
ItemMeta im = is14.getItemMeta();
im.setDisplayName(configLoad.getString(
"Menu.Admin.Upgrade.Members.Item.Word.Cost.Enter"));
is14.setItemMeta(im);
gui.setSlot(AbstractAnvilGUI.AnvilSlot.INPUT_LEFT, is14);
gui.open();
}, 1L);
return;
} else {
event.setWillClose(false);
event.setWillDestroy(false);
return;
}
}
Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player), 1L);
}
}
});
nInv.addItem(nInv.createItem(CompatibleMaterial.OAK_FENCE_GATE.getItem(),
ChatColor.translateAlternateColorCodes('&',
configLoad.getString("Menu.Admin.Upgrade.Members.Item.Return.Displayname")),
null, null, null, null), 0);
nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING),
ChatColor.translateAlternateColorCodes('&',
configLoad.getString("Menu.Admin.Upgrade.Members.Item.Information.Displayname")),
configLoad.getStringList("Menu.Admin.Upgrade.Members.Item.Information.Lore"), null, null, null),
1);
nInv.addItem(nInv.createItem(CompatibleMaterial.BLACK_STAINED_GLASS_PANE.getItem(),
ChatColor.translateAlternateColorCodes('&',
configLoad.getString("Menu.Admin.Upgrade.Members.Item.Barrier.Displayname")),
null, null, null, null), 2);
List<com.songoda.skyblock.upgrade.Upgrade> upgrades = upgradeManager
.getUpgrades(com.songoda.skyblock.upgrade.Upgrade.Type.Members);
if (upgrades != null) {
for (int i = 0; i < 5; i++) {
if (upgrades.size() >= i + 1) {
com.songoda.skyblock.upgrade.Upgrade upgrade = upgrades.get(i);
int tier = i + 1;
if (upgrade != null) {
nInv.addItem(nInv.createItem(new ItemStack(Material.PAPER, tier),
ChatColor.translateAlternateColorCodes('&',
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("%cost",
NumberUtil.formatNumberByDecimal(upgrade.getCost()))},
null, null), i + 3);
}
}
}
}
nInv.setTitle(ChatColor.translateAlternateColorCodes('&',
configLoad.getString("Menu.Admin.Upgrade.Members.Title")));
nInv.setRows(1);
Bukkit.getServer().getScheduler().runTask(skyblock, () -> nInv.open());
}
}
@ -825,7 +1277,7 @@ public class Upgrade {
public enum Type {
Upgrades, Size
Upgrades, Size, Members
}
}

View File

@ -41,7 +41,7 @@ public class Upgrade {
public enum Type {
Crop, Spawner, Fly, Drops, Size, Speed, Jump
Crop, Spawner, Fly, Drops, Size, Speed, Jump, Members
}
}

View File

@ -54,6 +54,23 @@ public class UpgradeManager {
upgradeStorage.put(Upgrade.Type.Size, upgrades);
}
if (configLoad.getString("Upgrades.Members") != null) {
List<Upgrade> upgrades = new ArrayList<>();
for (String tierList : configLoad.getConfigurationSection("Upgrades.Members").getKeys(false)) {
if (configLoad.getString("Upgrades.Members." + tierList + ".Value") != null) {
if (configLoad.getInt("Upgrades.Members." + tierList + ".Value") > 1000) {
continue;
}
}
upgrades.add(new Upgrade(configLoad.getDouble("Upgrades.Members." + tierList + ".Cost"),
configLoad.getInt("Upgrades.Members." + tierList + ".Value")));
}
upgradeStorage.put(Upgrade.Type.Members, upgrades);
}
// Task for applying the speed & jump boost upgrades if the player is on an island that has them
Bukkit.getScheduler().scheduleSyncRepeatingTask(SkyBlock.getInstance(), this::applyUpgrades, 5L, 20L);
}
@ -85,6 +102,22 @@ public class UpgradeManager {
configLoad.set("Upgrades.Size." + i + ".Cost", upgrade.getCost());
}
if (configLoad.getString("Upgrades.Members") != null) {
for (String tierList : configLoad.getConfigurationSection("Upgrades.Members").getKeys(false)) {
upgrades.add(new Upgrade(configLoad.getDouble("Upgrades.Members." + tierList + ".Cost"),
configLoad.getInt("Upgrades.Members." + tierList + ".Value")));
}
}
upgrades.add(new Upgrade(0, value));
configLoad.set("Upgrades.Members", null);
for (int i = 0; i < upgrades.size(); i++) {
Upgrade upgrade = upgrades.get(i);
configLoad.set("Upgrades.Members." + i + ".Value", upgrade.getValue());
configLoad.set("Upgrades.Members." + i + ".Cost", upgrade.getCost());
}
upgradeStorage.put(type, upgrades);
try {
@ -111,6 +144,14 @@ public class UpgradeManager {
configLoad.set("Upgrades.Size." + i + ".Cost", upgrade.getCost());
}
configLoad.set("Upgrades.Members", null);
for (int i = 0; i < upgrades.size(); i++) {
Upgrade upgrade = upgrades.get(i);
configLoad.set("Upgrades.Members." + i + ".Value", upgrade.getValue());
configLoad.set("Upgrades.Members." + i + ".Cost", upgrade.getCost());
}
try {
configLoad.save(config.getFile());
} catch (IOException e) {

View File

@ -9,6 +9,7 @@ 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.

View File

@ -273,6 +273,25 @@ Command:
Message: '&bSkyBlock &8| &cError&8: &eYou must enter a numerical value.'
Invalid:
Message: '&bSkyBlock &8| &cError&8: &eInvalid: /island admin setsize <player> <size>'
SetMaxMembers:
Set:
Message: '&bSkyBlock &8| &aInfo&8: &eYou have set &d%player''s &eIsland max members amount to &d%maxMembers&e.'
Members:
Less:
Message: '&bSkyBlock &8| &cError&8: &eThe max members amount of the Island must be less than 100000.'
Greater:
Message: '&bSkyBlock &8| &cError&8: &eThe max members amount of the Island must be greater than 0.'
Info:
Message: '&f&oSets the max members amount of a player''s Island.'
Island:
Owner:
Message: '&bSkyBlock &8| &cError&8: &eThat player is not a Member of or does not own an Island.'
Data:
Message: '&bSkyBlock &8| &cError&8: &eThe Island data for that player''s Island does not exist.'
Numerical:
Message: '&bSkyBlock &8| &cError&8: &eYou must enter a numerical value.'
Invalid:
Message: '&bSkyBlock &8| &cError&8: &eInvalid: /island admin setmaxmembers <player> <value>'
SetAlwaysLoaded:
IsOn:
Message: '&bSkyBlock &8| &aInfo&8: &eThis island will not unload.'
@ -1708,6 +1727,15 @@ Menu:
- '&7Tiers&8: &f%tiers'
- ''
- '&eClick to manage tiers!'
Members:
Displayname: '&aBorder Size'
Lore:
- '&7Increases the max amount'
- '&7of Island members.'
- ''
- '&7Tiers&8: &f%tiers'
- ''
- '&eClick to manage tiers!'
Fly:
Displayname: '&aFlight'
Lore:
@ -1784,6 +1812,35 @@ Menu:
- '&eRight-Click to set cost!'
Displayname: '&bTier #%tier'
Title: '&8Upgrade Editor - Size'
Members:
Item:
Information:
Displayname: '&aInformation'
Lore:
- '&7Create tiers, and decide the'
- '&7cost and what upgrade Islands'
- '&7receive from them.'
- ''
- '&eClick to create a tier!'
Return:
Displayname: '&cReturn to Upgrade Editor'
Word:
Size:
Enter: Enter Members
Cost:
Enter: Enter Cost
Barrier:
Displayname: '&cMax members Tiers'
Tier:
Lore:
- '&7Max members&8: &f%maxMembers'
- '&7Cost&8: &f$%cost'
- ''
- '&eLeft-Click to set size!'
- '&eMiddle-Click to remove!'
- '&eRight-Click to set cost!'
Displayname: '&bTier #%tier'
Title: '&8Upgrade Editor - Members'
Generator:
Generator:
Item:
@ -2067,7 +2124,7 @@ Menu:
Statistics:
Lore:
- '&bIsland Members:'
- '&e%island_members/%island_capacity'
- '&e%island_members/%island_maxMembers'
- ''
- '&bMembers:'
- '&e%members'
@ -2806,6 +2863,41 @@ Menu:
- ''
- '&cYou don''t have enough money!'
Displayname: '&bBorder Size [Tier #%tier]'
Members:
Claimable:
Lore:
- '&7Increases the max members'
- '&7amount of your Island.'
- ''
- '&7Max members&8: &f%maxMembers'
- '&7Cost&8: &f$%cost'
- ''
- '&7Status&8: &6&lCLAIMABLE'
- ''
- '&eClick to unlock this upgrade!'
Claimed:
Lore:
- '&7Increases the max members'
- '&7amount of your Island.'
- ''
- '&7Max members&8: &f%maxMembers'
- '&7Cost&8: &f$%cost'
- ''
- '&7Status&8: &a&lCLAIMED'
- ''
- '&cYou have unlocked this upgrade!'
Unclaimable:
Lore:
- '&7Increases the max members'
- '&7amount of your Island.'
- ''
- '&7Max members&8: &f%maxMembers'
- '&7Cost&8: &f$%cost'
- ''
- '&7Status&8: &c&lLOCKED'
- ''
- '&cYou don''t have enough money!'
Displayname: '&bMax Members [Tier #%tier]'
Word:
Enable: Enable
Disable: Disable
@ -3241,6 +3333,11 @@ Placeholder:
Message: '&c0'
Non-empty:
Message: '&f%placeholder'
fabledskyblock_island_maxmembers:
Empty:
Message: '&c0'
Non-empty:
Message: '&f%placeholder'
fabledskyblock_island_time:
Non-empty:
Message: '&f%placeholder'
@ -3432,6 +3529,8 @@ Island:
Tier:
Size:
Message: '&bSkyBlock &8| &cError&8: &eThe size of the tier must be less than 1000.'
Members:
Message: '&bSkyBlock &8| &cError&8: &eThe size of the tier must be less than 100000.'
Limit:
Message: '&bSkyBlock &8| &cError&8: &eYou have reached the limit of tiers for this upgrade.'
Selected:

View File

@ -30,6 +30,16 @@ Upgrades:
4:
Value: 350
Cost: 500000
Members:
0:
Value: 5
Cost: 10000
1:
Value: 7
Cost: 20000
2:
Value: 10
Cost: 30000
Spawner:
Enable: true
Cost: 100000