mirror of
https://github.com/songoda/FabledSkyBlock.git
synced 2025-02-04 05:41:30 +01:00
Build 37
# Added a Coop System (Allow players to access your island even if it's closed as long as an operator or owner is online). # Added the command '/island coop [<player>]' to open the 'Island Coop' menu or add/remove a coop player. # Added the option to the configuration file to remove islands the player has been banned from when they open the 'Island Visit' menu. # Added the setting 'CoopPlayers' to the 'Operator Settings' menu. # Fixed players not being teleported from an island when the island is closed or the player has been banned from the island when they join the server at the island. # Fixed players with bypass permission not being able to visit an Island from the 'Island Visit' menu if the island was closed after the player opened the menu. # Fixed island time not being synchronized when a player joins the server at a loaded island. # Fixed the 'Vote' leaderboard not showing the correct top 10 players. # Fixed Placeholders for PlaceholderAPI returning an empty string. # Fixed a memory leak issue when unloading islands. # Fixed falling blocks not falling at an Island. # Replaced statistics item in the 'Island Bans' menu with information item.
This commit is contained in:
parent
dd50421e2b
commit
d1a1988998
2
pom.xml
2
pom.xml
@ -2,7 +2,7 @@
|
||||
<groupId>com.songoda</groupId>
|
||||
<artifactId>SkyBlock</artifactId>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<version>36</version>
|
||||
<version>37</version>
|
||||
<build>
|
||||
<defaultGoal>clean package</defaultGoal>
|
||||
<plugins>
|
||||
|
@ -79,7 +79,7 @@ public class BanManager {
|
||||
Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
for (UUID visitorList : island.getVisitors()) {
|
||||
for (UUID visitorList : skyblock.getIslandManager().getVisitorsAtIsland(island)) {
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(visitorList);
|
||||
|
||||
LocationUtil.teleportPlayerToSpawn(targetPlayer);
|
||||
|
@ -26,6 +26,7 @@ import me.goodandevil.skyblock.command.commands.ChatCommand;
|
||||
import me.goodandevil.skyblock.command.commands.CloseCommand;
|
||||
import me.goodandevil.skyblock.command.commands.ConfirmCommand;
|
||||
import me.goodandevil.skyblock.command.commands.ControlPanelCommand;
|
||||
import me.goodandevil.skyblock.command.commands.CoopCommand;
|
||||
import me.goodandevil.skyblock.command.commands.CreateCommand;
|
||||
import me.goodandevil.skyblock.command.commands.CurrentCommand;
|
||||
import me.goodandevil.skyblock.command.commands.DeleteCommand;
|
||||
@ -115,6 +116,7 @@ public class CommandManager implements CommandExecutor, TabCompleter {
|
||||
subCommands.add(new LevelCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Command.Island.Level.Info.Message"))));
|
||||
subCommands.add(new SettingsCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Command.Island.Settings.Info.Message"))));
|
||||
subCommands.add(new InformationCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Command.Island.Information.Info.Message"))));
|
||||
subCommands.add(new CoopCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Command.Island.Coop.Info.Message"))));
|
||||
subCommands.add(new MembersCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Command.Island.Members.Info.Message"))));
|
||||
subCommands.add(new OwnerCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Command.Island.Ownership.Info.Message"))));
|
||||
subCommands.add(new ConfirmCommand(skyblock).setInfo(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Command.Island.Confirmation.Info.Message"))));
|
||||
|
@ -85,7 +85,7 @@ public class AcceptCommand extends SubCommand {
|
||||
|
||||
if (islandJoinEvent.isCancelled()) {
|
||||
if (unloadIsland) {
|
||||
islandManager.unloadIsland(invite.getOwnerUUID());
|
||||
islandManager.unloadIsland(island, null);
|
||||
}
|
||||
} else {
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(invite.getSenderUUID());
|
||||
@ -142,7 +142,7 @@ public class AcceptCommand extends SubCommand {
|
||||
scoreboard.cancel();
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Scoreboard.Island.Team.Displayname")));
|
||||
|
||||
if (island.getVisitors().size() == 0) {
|
||||
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
||||
scoreboard.setDisplayList(configLoad.getStringList("Scoreboard.Island.Team.Empty.Displaylines"));
|
||||
} else {
|
||||
scoreboard.setDisplayList(configLoad.getStringList("Scoreboard.Island.Team.Occupied.Displaylines"));
|
||||
@ -167,7 +167,7 @@ public class AcceptCommand extends SubCommand {
|
||||
scoreboard.cancel();
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Scoreboard.Island.Team.Displayname")));
|
||||
|
||||
if (island.getVisitors().size() == 0) {
|
||||
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
||||
scoreboard.setDisplayList(configLoad.getStringList("Scoreboard.Island.Team.Empty.Displaylines"));
|
||||
} else {
|
||||
scoreboard.setDisplayList(configLoad.getStringList("Scoreboard.Island.Team.Occupied.Displaylines"));
|
||||
|
@ -16,7 +16,6 @@ import me.goodandevil.skyblock.island.Role;
|
||||
import me.goodandevil.skyblock.island.Setting;
|
||||
import me.goodandevil.skyblock.message.MessageManager;
|
||||
import me.goodandevil.skyblock.playerdata.PlayerData;
|
||||
import me.goodandevil.skyblock.playerdata.PlayerDataManager;
|
||||
import me.goodandevil.skyblock.sound.SoundManager;
|
||||
import me.goodandevil.skyblock.utils.OfflinePlayer;
|
||||
import me.goodandevil.skyblock.utils.version.Sounds;
|
||||
@ -37,28 +36,27 @@ public class BanCommand extends SubCommand {
|
||||
|
||||
@Override
|
||||
public void onCommand(Player player, String[] args) {
|
||||
PlayerDataManager playerDataManager = skyblock.getPlayerDataManager();
|
||||
MessageManager messageManager = skyblock.getMessageManager();
|
||||
IslandManager islandManager = skyblock.getIslandManager();
|
||||
SoundManager soundManager = skyblock.getSoundManager();
|
||||
FileManager fileManager = skyblock.getFileManager();
|
||||
|
||||
PlayerData playerData = playerDataManager.getPlayerData(player);
|
||||
|
||||
Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player);
|
||||
|
||||
if (args.length == 1) {
|
||||
if (islandManager.hasIsland(player)) {
|
||||
if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Visitor.Banning")) {
|
||||
me.goodandevil.skyblock.island.Island island = islandManager.getIsland(playerData.getOwner());
|
||||
|
||||
if (island.isRole(Role.Owner, player.getUniqueId()) || (island.isRole(Role.Operator, player.getUniqueId()) && island.getSetting(Setting.Role.Operator, "Ban").getStatus())) {
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
|
||||
|
||||
UUID targetPlayerUUID = null;
|
||||
String targetPlayerName = null;
|
||||
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
|
||||
|
||||
if (targetPlayer == null) {
|
||||
OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]);
|
||||
targetPlayerUUID = targetPlayerOffline.getUniqueId();
|
||||
@ -84,6 +82,10 @@ public class BanCommand extends SubCommand {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Banned.Sender.Message").replace("%player", targetPlayerName));
|
||||
soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
if (island.isCoopPlayer(targetPlayerUUID)) {
|
||||
island.removeCoopPlayer(targetPlayerUUID);
|
||||
}
|
||||
|
||||
Ban ban = island.getBan();
|
||||
ban.addBan(targetPlayerUUID);
|
||||
ban.save();
|
||||
|
@ -0,0 +1,146 @@
|
||||
package me.goodandevil.skyblock.command.commands;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import me.goodandevil.skyblock.SkyBlock;
|
||||
import me.goodandevil.skyblock.command.CommandManager;
|
||||
import me.goodandevil.skyblock.command.SubCommand;
|
||||
import me.goodandevil.skyblock.command.CommandManager.Type;
|
||||
import me.goodandevil.skyblock.config.FileManager.Config;
|
||||
import me.goodandevil.skyblock.island.IslandManager;
|
||||
import me.goodandevil.skyblock.island.Role;
|
||||
import me.goodandevil.skyblock.island.Setting;
|
||||
import me.goodandevil.skyblock.menus.Coop;
|
||||
import me.goodandevil.skyblock.message.MessageManager;
|
||||
import me.goodandevil.skyblock.playerdata.PlayerData;
|
||||
import me.goodandevil.skyblock.sound.SoundManager;
|
||||
import me.goodandevil.skyblock.utils.OfflinePlayer;
|
||||
import me.goodandevil.skyblock.utils.version.Sounds;
|
||||
import me.goodandevil.skyblock.utils.world.LocationUtil;
|
||||
|
||||
public class CoopCommand extends SubCommand {
|
||||
|
||||
private final SkyBlock skyblock;
|
||||
private String info;
|
||||
|
||||
public CoopCommand(SkyBlock skyblock) {
|
||||
this.skyblock = skyblock;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCommand(Player player, String[] args) {
|
||||
MessageManager messageManager = skyblock.getMessageManager();
|
||||
IslandManager islandManager = skyblock.getIslandManager();
|
||||
SoundManager soundManager = skyblock.getSoundManager();
|
||||
|
||||
Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
PlayerData playerData = skyblock.getPlayerDataManager().getPlayerData(player);
|
||||
|
||||
if (islandManager.hasIsland(player)) {
|
||||
me.goodandevil.skyblock.island.Island island = islandManager.getIsland(playerData.getOwner());
|
||||
|
||||
if (island.isRole(Role.Owner, player.getUniqueId()) || (island.isRole(Role.Operator, player.getUniqueId()) && island.getSetting(Setting.Role.Operator, "CoopPlayers").getStatus())) {
|
||||
if (args.length == 1) {
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
|
||||
|
||||
UUID targetPlayerUUID = null;
|
||||
String targetPlayerName = null;
|
||||
|
||||
if (targetPlayer == null) {
|
||||
OfflinePlayer offlinePlayer = new OfflinePlayer(args[0]);
|
||||
targetPlayerUUID = offlinePlayer.getUniqueId();
|
||||
targetPlayerName = offlinePlayer.getName();
|
||||
} else {
|
||||
targetPlayerUUID = targetPlayer.getUniqueId();
|
||||
targetPlayerName = targetPlayer.getName();
|
||||
}
|
||||
|
||||
if (targetPlayerUUID == null) {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Found.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
} else if (targetPlayerUUID.equals(player.getUniqueId())) {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Yourself.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
} else if (island.isRole(Role.Member, targetPlayerUUID) || island.isRole(Role.Operator, targetPlayerUUID) || island.isRole(Role.Owner, targetPlayerUUID)) {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Member.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
} else if (island.getBan().isBanned(targetPlayerUUID)) {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Banned.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
} else if (island.isCoopPlayer(targetPlayerUUID)) {
|
||||
if (targetPlayer != null) {
|
||||
if (islandManager.getVisitorsAtIsland(island).contains(targetPlayerUUID)) {
|
||||
if (!island.isOpen()) {
|
||||
LocationUtil.teleportPlayerToSpawn(targetPlayer);
|
||||
|
||||
messageManager.sendMessage(targetPlayer, configLoad.getString("Command.Island.Coop.Removed.Target.Message"));
|
||||
soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
island.removeCoopPlayer(targetPlayerUUID);
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Removed.Sender.Message").replace("%player", targetPlayerName));
|
||||
soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F);
|
||||
} else {
|
||||
island.addCoopPlayer(targetPlayerUUID);
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Added.Message").replace("%player", targetPlayerName));
|
||||
soundManager.playSound(player, Sounds.NOTE_PLING.bukkitSound(), 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
return;
|
||||
} else if (args.length != 0) {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Invalid.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
Coop.getInstance().open(player);
|
||||
soundManager.playSound(player, Sounds.CHEST_OPEN.bukkitSound(), 1.0F, 1.0F);
|
||||
} else {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Permission.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
}
|
||||
} else {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Owner.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "coop";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInfo() {
|
||||
return info;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubCommand setInfo(String info) {
|
||||
this.info = info;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getAliases() {
|
||||
return new String[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public Type getType() {
|
||||
return CommandManager.Type.Default;
|
||||
}
|
||||
}
|
@ -50,7 +50,7 @@ public class KickAllCommand extends SubCommand {
|
||||
|
||||
if (island.isRole(Role.Owner, player.getUniqueId()) || (island.isRole(Role.Operator, player.getUniqueId()) && island.getSetting(Setting.Role.Operator, "Kick").getStatus())) {
|
||||
if (island.isOpen()) {
|
||||
List<UUID> islandVisitors = island.getVisitors();
|
||||
List<UUID> islandVisitors = islandManager.getVisitorsAtIsland(island);
|
||||
|
||||
if (islandVisitors.size() == 0) {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.KickAll.Visitors.Message"));
|
||||
|
@ -65,7 +65,7 @@ public class KickCommand extends SubCommand {
|
||||
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
|
||||
|
||||
List<UUID> islandMembers = island.getRole(Role.Member), islandOperators = island.getRole(Role.Operator), islandVisitors = island.getVisitors();
|
||||
List<UUID> islandMembers = island.getRole(Role.Member), islandOperators = island.getRole(Role.Operator), islandVisitors = islandManager.getVisitorsAtIsland(island);
|
||||
|
||||
if (targetPlayer == null) {
|
||||
OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]);
|
||||
@ -86,17 +86,22 @@ public class KickCommand extends SubCommand {
|
||||
messageManager.sendMessage(player, languageConfig.getFileConfiguration().getString("Command.Island.Kick.Role.Owner.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
} else if (isOpen && islandVisitors.contains(targetPlayerUUID) && targetPlayer != null) {
|
||||
IslandKickEvent islandKickEvent = new IslandKickEvent(island, Role.Visitor, targetPlayerUUID, player);
|
||||
Bukkit.getServer().getPluginManager().callEvent(islandKickEvent);
|
||||
if (island.isCoopPlayer(targetPlayerUUID)) {
|
||||
messageManager.sendMessage(player, languageConfig.getFileConfiguration().getString("Command.Island.Kick.Cooped.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
} else {
|
||||
IslandKickEvent islandKickEvent = new IslandKickEvent(island, Role.Visitor, targetPlayerUUID, player);
|
||||
Bukkit.getServer().getPluginManager().callEvent(islandKickEvent);
|
||||
|
||||
if (!islandKickEvent.isCancelled()) {
|
||||
LocationUtil.teleportPlayerToSpawn(targetPlayer);
|
||||
if (!islandKickEvent.isCancelled()) {
|
||||
LocationUtil.teleportPlayerToSpawn(targetPlayer);
|
||||
|
||||
messageManager.sendMessage(player, languageConfig.getFileConfiguration().getString("Command.Island.Kick.Kicked.Sender.Message").replace("%player", targetPlayerName));
|
||||
soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F);
|
||||
messageManager.sendMessage(player, languageConfig.getFileConfiguration().getString("Command.Island.Kick.Kicked.Sender.Message").replace("%player", targetPlayerName));
|
||||
soundManager.playSound(player, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
messageManager.sendMessage(targetPlayer, languageConfig.getFileConfiguration().getString("Command.Island.Kick.Kicked.Target.Message").replace("%player", player.getName()));
|
||||
soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F);
|
||||
messageManager.sendMessage(targetPlayer, languageConfig.getFileConfiguration().getString("Command.Island.Kick.Kicked.Target.Message").replace("%player", player.getName()));
|
||||
soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F);
|
||||
}
|
||||
}
|
||||
} else if (islandMembers.contains(targetPlayerUUID) || islandOperators.contains(targetPlayerUUID)) {
|
||||
Role islandRole = Role.Member;
|
||||
@ -183,7 +188,7 @@ public class KickCommand extends SubCommand {
|
||||
scoreboard.cancel();
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', languageConfig.getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname")));
|
||||
|
||||
if (island.getVisitors().size() == 0) {
|
||||
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
||||
scoreboard.setDisplayList(languageConfig.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Empty.Displaylines"));
|
||||
} else {
|
||||
scoreboard.setDisplayList(languageConfig.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Occupied.Displaylines"));
|
||||
|
@ -98,7 +98,8 @@ public class LeaveCommand extends SubCommand {
|
||||
}
|
||||
}
|
||||
|
||||
islandManager.unloadIsland(player.getUniqueId());
|
||||
// TODO Check if player has been teleported
|
||||
islandManager.unloadIsland(island, null);
|
||||
|
||||
for (Player all : Bukkit.getOnlinePlayers()) {
|
||||
if (!all.getUniqueId().equals(player.getUniqueId())) {
|
||||
@ -112,7 +113,7 @@ public class LeaveCommand extends SubCommand {
|
||||
scoreboard.cancel();
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', languageConfig.getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname")));
|
||||
|
||||
if (island.getVisitors().size() == 0) {
|
||||
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
||||
scoreboard.setDisplayList(languageConfig.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Empty.Displaylines"));
|
||||
} else {
|
||||
scoreboard.setDisplayList(languageConfig.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Occupied.Displaylines"));
|
||||
|
@ -64,8 +64,15 @@ public class TeleportCommand extends SubCommand {
|
||||
} else if (!islandOwnerUUID.equals(playerDataManager.getPlayerData(player).getOwner())) {
|
||||
if (visitManager.hasIsland(islandOwnerUUID)) {
|
||||
me.goodandevil.skyblock.visit.Visit visit = visitManager.getIsland(islandOwnerUUID);
|
||||
boolean isCoopPlayer = false;
|
||||
|
||||
if (player.hasPermission("skyblock.bypass") || player.hasPermission("skyblock.bypass.*") || player.hasPermission("skyblock.*") || visit.isOpen()) {
|
||||
if (islandManager.containsIsland(islandOwnerUUID)) {
|
||||
if (islandManager.getIsland(islandOwnerUUID).isCoopPlayer(player.getUniqueId())) {
|
||||
isCoopPlayer = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (isCoopPlayer || player.hasPermission("skyblock.bypass") || player.hasPermission("skyblock.bypass.*") || player.hasPermission("skyblock.*") || visit.isOpen()) {
|
||||
if (!islandManager.containsIsland(islandOwnerUUID)) {
|
||||
islandManager.loadIsland(islandOwnerUUID);
|
||||
}
|
||||
@ -74,6 +81,8 @@ public class TeleportCommand extends SubCommand {
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Teleport.Teleported.Other.Message").replace("%player", targetPlayerName));
|
||||
soundManager.playSound(player, Sounds.ENDERMAN_TELEPORT.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
return;
|
||||
} else {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Teleport.Island.Closed.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
|
@ -52,11 +52,11 @@ public class UnbanCommand extends SubCommand {
|
||||
me.goodandevil.skyblock.island.Island island = islandManager.getIsland(playerData.getOwner());
|
||||
|
||||
if (island.isRole(Role.Owner, player.getUniqueId()) || (island.isRole(Role.Operator, player.getUniqueId()) && island.getSetting(Setting.Role.Operator, "Unban").getStatus())) {
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
|
||||
|
||||
UUID targetPlayerUUID = null;
|
||||
String targetPlayerName = null;
|
||||
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
|
||||
|
||||
if (targetPlayer == null) {
|
||||
OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]);
|
||||
targetPlayerUUID = targetPlayerOffline.getUniqueId();
|
||||
|
@ -42,7 +42,7 @@ public class VisitorsCommand extends SubCommand {
|
||||
if (!island.isOpen()) {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Visitors.Closed.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
} else if (island.getVisitors().size() == 0) {
|
||||
} else if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Visitors.Visitors.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
} else {
|
||||
|
@ -108,7 +108,7 @@ public class VoteCommand extends SubCommand {
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
islandManager.unloadIsland(islandOwnerUUID);
|
||||
islandManager.unloadIsland(island, null);
|
||||
}
|
||||
} else {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Vote.Island.Closed.Message"));
|
||||
|
@ -40,8 +40,9 @@ public class Island {
|
||||
|
||||
private final SkyBlock skyblock;
|
||||
|
||||
private List<Location> islandLocations = new ArrayList<>();
|
||||
private Map<Setting.Role, List<Setting>> islandSettings = new HashMap<>();
|
||||
private List<Location> islandLocations = new ArrayList<>();
|
||||
private List<UUID> coopPlayers = new ArrayList<>();
|
||||
|
||||
private UUID ownerUUID;
|
||||
private Level level;
|
||||
@ -65,9 +66,12 @@ public class Island {
|
||||
islandLocations.add(new Location(Location.World.Nether, Location.Environment.Island, islandNetherLocation));
|
||||
|
||||
File configFile = new File(skyblock.getDataFolder().toString() + "/island-data");
|
||||
Config config = fileManager.getConfig(new File(configFile, ownerUUID + ".yml"));
|
||||
|
||||
Config config = fileManager.getConfig(new File(configFile, ownerUUID + ".yml"));
|
||||
Config defaultSettingsConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "settings.yml"));
|
||||
Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml"));
|
||||
|
||||
FileConfiguration mainConfigLoad = mainConfig.getFileConfiguration();
|
||||
|
||||
if (fileManager.isFileExist(new File(configFile, ownerUUID + ".yml"))) {
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
@ -94,20 +98,20 @@ public class Island {
|
||||
}
|
||||
}
|
||||
|
||||
Config islandSettingsConfig = null;
|
||||
Config settingsDataConfig = null;
|
||||
|
||||
if (fileManager.isFileExist(new File(skyblock.getDataFolder().toString() + "/setting-data", getOwnerUUID().toString() + ".yml"))) {
|
||||
islandSettingsConfig = fileManager.getConfig(new File(skyblock.getDataFolder().toString() + "/setting-data", getOwnerUUID().toString() + ".yml"));
|
||||
settingsDataConfig = fileManager.getConfig(new File(skyblock.getDataFolder().toString() + "/setting-data", getOwnerUUID().toString() + ".yml"));
|
||||
}
|
||||
|
||||
for (Setting.Role roleList : Setting.Role.values()) {
|
||||
List<Setting> settings = new ArrayList<>();
|
||||
|
||||
for (String settingList : defaultSettingsConfig.getFileConfiguration().getConfigurationSection("Settings." + roleList.name()).getKeys(false)) {
|
||||
if (islandSettingsConfig == null) {
|
||||
if (settingsDataConfig == null) {
|
||||
settings.add(new Setting(settingList, defaultSettingsConfig.getFileConfiguration().getBoolean("Settings." + roleList.name() + "." + settingList)));
|
||||
} else {
|
||||
settings.add(new Setting(settingList, islandSettingsConfig.getFileConfiguration().getBoolean("Settings." + roleList.name() + "." + settingList)));
|
||||
settings.add(new Setting(settingList, settingsDataConfig.getFileConfiguration().getBoolean("Settings." + roleList.name() + "." + settingList)));
|
||||
}
|
||||
}
|
||||
|
||||
@ -119,9 +123,6 @@ public class Island {
|
||||
islandLocations.add(new Location(Location.World.Normal, Location.Environment.Visitor, islandNormalLocation.clone().add(0.5D, 0.0D, 0.5D)));
|
||||
islandLocations.add(new Location(Location.World.Nether, Location.Environment.Visitor, islandNetherLocation.clone().add(0.5D, 0.0D, 0.5D)));
|
||||
|
||||
Config mainConfig = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml"));
|
||||
FileConfiguration mainConfigLoad = mainConfig.getFileConfiguration();
|
||||
|
||||
fileManager.setLocation(config, "Location.Normal.Island", islandNormalLocation, true);
|
||||
fileManager.setLocation(config, "Location.Nether.Island", islandNetherLocation, true);
|
||||
fileManager.setLocation(config, "Location.Normal.Spawn.Main", islandNormalLocation.clone().add(0.5D, 0.0D, 0.5D), true);
|
||||
@ -157,7 +158,7 @@ public class Island {
|
||||
playerData.setMemberSince(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new Date()));
|
||||
playerData.save();
|
||||
|
||||
if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Spawn.Protection")) {
|
||||
if (mainConfigLoad.getBoolean("Island.Spawn.Protection")) {
|
||||
Bukkit.getServer().getScheduler().runTask(skyblock, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@ -169,6 +170,21 @@ public class Island {
|
||||
}
|
||||
}
|
||||
|
||||
if (!mainConfigLoad.getBoolean("Island.Coop.Unload")) {
|
||||
File coopDataFile = new File(skyblock.getDataFolder().toString() + "/coop-data", getOwnerUUID().toString() + ".yml");
|
||||
|
||||
if (fileManager.isFileExist(coopDataFile)) {
|
||||
Config coopDataConfig = fileManager.getConfig(coopDataFile);
|
||||
FileConfiguration coopDataConfigLoad = coopDataConfig.getFileConfiguration();
|
||||
|
||||
if (coopDataConfigLoad.getString("CoopPlayers") != null) {
|
||||
for (String coopPlayerList : coopDataConfigLoad.getStringList("CoopPlayers")) {
|
||||
coopPlayers.add(UUID.fromString(coopPlayerList));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
level = new Level(getOwnerUUID(), skyblock);
|
||||
|
||||
VisitManager visitManager = skyblock.getVisitManager();
|
||||
@ -300,6 +316,22 @@ public class Island {
|
||||
skyblock.getFileManager().getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")).getFileConfiguration().set("Weather.Time", time);
|
||||
}
|
||||
|
||||
public List<UUID> getCoopPlayers() {
|
||||
return coopPlayers;
|
||||
}
|
||||
|
||||
public void addCoopPlayer(UUID uuid) {
|
||||
coopPlayers.add(uuid);
|
||||
}
|
||||
|
||||
public void removeCoopPlayer(UUID uuid) {
|
||||
coopPlayers.remove(uuid);
|
||||
}
|
||||
|
||||
public boolean isCoopPlayer(UUID uuid) {
|
||||
return coopPlayers.contains(uuid);
|
||||
}
|
||||
|
||||
public List<UUID> getRole(Role role) {
|
||||
Config config = skyblock.getFileManager().getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
@ -436,26 +468,6 @@ public class Island {
|
||||
return skyblock.getFileManager().getConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml")).getFileConfiguration().getBoolean("Visitor.Open");
|
||||
}
|
||||
|
||||
public List<UUID> getVisitors() {
|
||||
Map<UUID, PlayerData> playerDataStorage = skyblock.getPlayerDataManager().getPlayerData();
|
||||
List<UUID> islandVisitors = new ArrayList<>();
|
||||
|
||||
for (UUID playerDataStorageList : playerDataStorage.keySet()) {
|
||||
PlayerData playerData = playerDataStorage.get(playerDataStorageList);
|
||||
UUID islandOwnerUUID = playerData.getIsland();
|
||||
|
||||
if (islandOwnerUUID != null && islandOwnerUUID.equals(getOwnerUUID())) {
|
||||
if (playerData.getOwner() == null || !playerData.getOwner().equals(getOwnerUUID())) {
|
||||
if (Bukkit.getServer().getPlayer(playerDataStorageList) != null) {
|
||||
islandVisitors.add(playerDataStorageList);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return islandVisitors;
|
||||
}
|
||||
|
||||
public List<String> getMessage(Message message) {
|
||||
List<String> islandMessage = new ArrayList<>();
|
||||
|
||||
@ -529,9 +541,28 @@ public class Island {
|
||||
}
|
||||
|
||||
try {
|
||||
config.getFileConfiguration().save(config.getFile());
|
||||
configLoad.save(config.getFile());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Coop.Unload")) {
|
||||
config = fileManager.getConfig(new File(skyblock.getDataFolder().toString() + "/coop-data", ownerUUID.toString() + ".yml"));
|
||||
configLoad = config.getFileConfiguration();
|
||||
|
||||
List<String> coopPlayersAsString = new ArrayList<>();
|
||||
|
||||
for (UUID coopPlayerList : coopPlayers) {
|
||||
coopPlayersAsString.add(coopPlayerList.toString());
|
||||
}
|
||||
|
||||
configLoad.set("CoopPlayers", coopPlayersAsString);
|
||||
|
||||
try {
|
||||
configLoad.save(config.getFile());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -38,6 +38,7 @@ import me.goodandevil.skyblock.playerdata.PlayerData;
|
||||
import me.goodandevil.skyblock.playerdata.PlayerDataManager;
|
||||
import me.goodandevil.skyblock.scoreboard.Scoreboard;
|
||||
import me.goodandevil.skyblock.scoreboard.ScoreboardManager;
|
||||
import me.goodandevil.skyblock.sound.SoundManager;
|
||||
import me.goodandevil.skyblock.structure.Structure;
|
||||
import me.goodandevil.skyblock.upgrade.Upgrade;
|
||||
import me.goodandevil.skyblock.upgrade.UpgradeManager;
|
||||
@ -45,6 +46,7 @@ import me.goodandevil.skyblock.utils.OfflinePlayer;
|
||||
import me.goodandevil.skyblock.utils.structure.StructureUtil;
|
||||
import me.goodandevil.skyblock.utils.version.Materials;
|
||||
import me.goodandevil.skyblock.utils.version.NMSUtil;
|
||||
import me.goodandevil.skyblock.utils.version.Sounds;
|
||||
import me.goodandevil.skyblock.utils.world.LocationUtil;
|
||||
import me.goodandevil.skyblock.utils.world.WorldBorder;
|
||||
import me.goodandevil.skyblock.utils.world.block.BlockDegreesType;
|
||||
@ -77,8 +79,10 @@ public class IslandManager {
|
||||
}
|
||||
|
||||
public void onDisable() {
|
||||
for (Player all : Bukkit.getOnlinePlayers()) {
|
||||
unloadIsland(all.getUniqueId());
|
||||
for (int i = 0; i < islandStorage.size(); i++) {
|
||||
UUID islandOwnerUUID = (UUID) islandStorage.keySet().toArray()[i];
|
||||
Island island = islandStorage.get(islandOwnerUUID);
|
||||
island.save();
|
||||
}
|
||||
}
|
||||
|
||||
@ -273,6 +277,16 @@ public class IslandManager {
|
||||
island.setPassword(null);
|
||||
}
|
||||
|
||||
File oldCoopDataFile = new File(new File(skyblock.getDataFolder().toString() + "/coop-data"), islandOwnerUUID.toString() + ".yml");
|
||||
|
||||
if (fileManager.isFileExist(oldCoopDataFile)) {
|
||||
File newCoopDataFile = new File(new File(skyblock.getDataFolder().toString() + "/coop-data"), uuid.toString() + ".yml");
|
||||
|
||||
fileManager.unloadConfig(oldCoopDataFile);
|
||||
fileManager.unloadConfig(newCoopDataFile);
|
||||
oldCoopDataFile.renameTo(newCoopDataFile);
|
||||
}
|
||||
|
||||
File oldSettingDataFile = new File(new File(skyblock.getDataFolder().toString() + "/setting-data"), islandOwnerUUID.toString() + ".yml");
|
||||
File newSettingDataFile = new File(new File(skyblock.getDataFolder().toString() + "/setting-data"), uuid.toString() + ".yml");
|
||||
|
||||
@ -367,6 +381,7 @@ public class IslandManager {
|
||||
}
|
||||
}
|
||||
|
||||
fileManager.deleteConfig(new File(new File(skyblock.getDataFolder().toString() + "/coop-data"), island.getOwnerUUID().toString() + ".yml"));
|
||||
fileManager.deleteConfig(new File(new File(skyblock.getDataFolder().toString() + "/setting-data"), island.getOwnerUUID().toString() + ".yml"));
|
||||
fileManager.deleteConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), island.getOwnerUUID().toString() + ".yml"));
|
||||
|
||||
@ -415,89 +430,103 @@ public class IslandManager {
|
||||
}
|
||||
}
|
||||
|
||||
public void unloadIsland(UUID uuid) {
|
||||
public void unloadIsland(Island island, UUID uuid) {
|
||||
ScoreboardManager scoreboardManager = skyblock.getScoreboardManager();
|
||||
FileManager fileManager = skyblock.getFileManager();
|
||||
|
||||
if (hasIsland(uuid)) {
|
||||
UUID islandOwnerUUID = uuid;
|
||||
Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
if (!isIslandExist(uuid)) {
|
||||
Config config = fileManager.getConfig(new File(new File(skyblock.getDataFolder().toString() + "/player-data"), uuid.toString() + ".yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
island.save();
|
||||
|
||||
if (configLoad.getString("Island.Owner") != null) {
|
||||
islandOwnerUUID = UUID.fromString(configLoad.getString("Island.Owner"));
|
||||
}
|
||||
int islandMembers = island.getRole(Role.Member).size() + island.getRole(Role.Operator).size() + 1, islandVisitors = getVisitorsAtIsland(island).size();
|
||||
boolean unloadIsland = true;
|
||||
|
||||
for (Player all : Bukkit.getOnlinePlayers()) {
|
||||
if (uuid != null && all.getUniqueId().equals(uuid)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Island island = getIsland(islandOwnerUUID);
|
||||
island.save();
|
||||
if (island.isRole(Role.Member, all.getUniqueId()) || island.isRole(Role.Operator, all.getUniqueId()) || island.isRole(Role.Owner, all.getUniqueId())) {
|
||||
if (scoreboardManager != null) {
|
||||
try {
|
||||
if (islandMembers == 1 && islandVisitors == 0) {
|
||||
Scoreboard scoreboard = scoreboardManager.getScoreboard(all);
|
||||
scoreboard.cancel();
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Scoreboard.Island.Solo.Displayname")));
|
||||
scoreboard.setDisplayList(configLoad.getStringList("Scoreboard.Island.Solo.Empty.Displaylines"));
|
||||
scoreboard.run();
|
||||
} else if (islandVisitors == 0) {
|
||||
Scoreboard scoreboard = scoreboardManager.getScoreboard(all);
|
||||
scoreboard.cancel();
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Scoreboard.Island.Team.Displayname")));
|
||||
scoreboard.setDisplayList(configLoad.getStringList("Scoreboard.Island.Team.Empty.Displaylines"));
|
||||
|
||||
Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
HashMap<String, String> displayVariables = new HashMap<>();
|
||||
displayVariables.put("%owner", configLoad.getString("Scoreboard.Island.Team.Word.Owner"));
|
||||
displayVariables.put("%operator", configLoad.getString("Scoreboard.Island.Team.Word.Operator"));
|
||||
displayVariables.put("%member", configLoad.getString("Scoreboard.Island.Team.Word.Member"));
|
||||
|
||||
int islandMembers = island.getRole(Role.Member).size() + island.getRole(Role.Operator).size() + 1, islandVisitors = island.getVisitors().size();
|
||||
|
||||
for (Player all : Bukkit.getOnlinePlayers()) {
|
||||
if (!uuid.equals(islandOwnerUUID)) {
|
||||
if (all.getUniqueId().equals(uuid)) {
|
||||
continue;
|
||||
}
|
||||
scoreboard.setDisplayVariables(displayVariables);
|
||||
scoreboard.run();
|
||||
}
|
||||
} catch (IllegalPluginAccessException e) {}
|
||||
}
|
||||
|
||||
if (island.isRole(Role.Member, all.getUniqueId()) || island.isRole(Role.Operator, all.getUniqueId()) || island.isRole(Role.Owner, all.getUniqueId())) {
|
||||
if (scoreboardManager != null) {
|
||||
try {
|
||||
if (islandMembers == 1 && islandVisitors == 0) {
|
||||
Scoreboard scoreboard = scoreboardManager.getScoreboard(all);
|
||||
scoreboard.cancel();
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Scoreboard.Island.Solo.Displayname")));
|
||||
scoreboard.setDisplayList(configLoad.getStringList("Scoreboard.Island.Solo.Empty.Displaylines"));
|
||||
scoreboard.run();
|
||||
} else if (islandVisitors == 0) {
|
||||
Scoreboard scoreboard = scoreboardManager.getScoreboard(all);
|
||||
scoreboard.cancel();
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Scoreboard.Island.Team.Displayname")));
|
||||
scoreboard.setDisplayList(configLoad.getStringList("Scoreboard.Island.Team.Empty.Displaylines"));
|
||||
|
||||
HashMap<String, String> displayVariables = new HashMap<>();
|
||||
displayVariables.put("%owner", configLoad.getString("Scoreboard.Island.Team.Word.Owner"));
|
||||
displayVariables.put("%operator", configLoad.getString("Scoreboard.Island.Team.Word.Operator"));
|
||||
displayVariables.put("%member", configLoad.getString("Scoreboard.Island.Team.Word.Member"));
|
||||
|
||||
scoreboard.setDisplayVariables(displayVariables);
|
||||
scoreboard.run();
|
||||
}
|
||||
} catch (IllegalPluginAccessException e) {}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
unloadIsland = false;
|
||||
}
|
||||
|
||||
boolean unloadIsland = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Visitor.Unload");
|
||||
|
||||
if (unloadIsland) {
|
||||
VisitManager visitManager = skyblock.getVisitManager();
|
||||
visitManager.removeVisitors(island, VisitManager.Removal.Unloaded);
|
||||
visitManager.unloadIsland(islandOwnerUUID);
|
||||
|
||||
BanManager banManager = skyblock.getBanManager();
|
||||
banManager.unloadIsland(islandOwnerUUID);
|
||||
} else {
|
||||
if (island.getVisitors().size() != 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
fileManager.unloadConfig(new File(new File(skyblock.getDataFolder().toString() + "/setting-data"), islandOwnerUUID + ".yml"));
|
||||
fileManager.unloadConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), islandOwnerUUID + ".yml"));
|
||||
|
||||
islandStorage.remove(islandOwnerUUID);
|
||||
|
||||
Bukkit.getServer().getPluginManager().callEvent(new IslandUnloadEvent(island));
|
||||
}
|
||||
|
||||
if (!unloadIsland) {
|
||||
return;
|
||||
}
|
||||
|
||||
unloadIsland = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Visitor.Unload");
|
||||
|
||||
if (unloadIsland) {
|
||||
VisitManager visitManager = skyblock.getVisitManager();
|
||||
visitManager.removeVisitors(island, VisitManager.Removal.Unloaded);
|
||||
visitManager.unloadIsland(island.getOwnerUUID());
|
||||
|
||||
BanManager banManager = skyblock.getBanManager();
|
||||
banManager.unloadIsland(island.getOwnerUUID());
|
||||
} else {
|
||||
int nonIslandMembers = islandVisitors - getCoopPlayersAtIsland(island).size();
|
||||
|
||||
if (nonIslandMembers <= 0) {
|
||||
removeCoopPlayers(island, uuid);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
fileManager.unloadConfig(new File(new File(skyblock.getDataFolder().toString() + "/coop-data"), island.getOwnerUUID() + ".yml"));
|
||||
fileManager.unloadConfig(new File(new File(skyblock.getDataFolder().toString() + "/setting-data"), island.getOwnerUUID() + ".yml"));
|
||||
fileManager.unloadConfig(new File(new File(skyblock.getDataFolder().toString() + "/island-data"), island.getOwnerUUID() + ".yml"));
|
||||
|
||||
islandStorage.remove(island.getOwnerUUID());
|
||||
|
||||
Bukkit.getServer().getPluginManager().callEvent(new IslandUnloadEvent(island));
|
||||
}
|
||||
|
||||
public List<UUID> getVisitorsAtIsland(Island island) {
|
||||
Map<UUID, PlayerData> playerDataStorage = skyblock.getPlayerDataManager().getPlayerData();
|
||||
List<UUID> islandVisitors = new ArrayList<>();
|
||||
|
||||
for (UUID playerDataStorageList : playerDataStorage.keySet()) {
|
||||
PlayerData playerData = playerDataStorage.get(playerDataStorageList);
|
||||
UUID islandOwnerUUID = playerData.getIsland();
|
||||
|
||||
if (islandOwnerUUID != null && islandOwnerUUID.equals(island.getOwnerUUID())) {
|
||||
if (playerData.getOwner() == null || !playerData.getOwner().equals(island.getOwnerUUID())) {
|
||||
if (Bukkit.getServer().getPlayer(playerDataStorageList) != null) {
|
||||
islandVisitors.add(playerDataStorageList);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return islandVisitors;
|
||||
}
|
||||
|
||||
public void visitIsland(Player player, Island island) {
|
||||
@ -511,7 +540,7 @@ public class IslandManager {
|
||||
player.teleport(island.getLocation(Location.World.Normal, Location.Environment.Visitor));
|
||||
} else {
|
||||
if (scoreboardManager != null) {
|
||||
int islandVisitors = island.getVisitors().size(), islandMembers = island.getRole(Role.Member).size() + island.getRole(Role.Operator).size() + 1;
|
||||
int islandVisitors = getVisitorsAtIsland(island).size(), islandMembers = island.getRole(Role.Member).size() + island.getRole(Role.Operator).size() + 1;
|
||||
|
||||
if (islandVisitors == 0) {
|
||||
for (Player all : Bukkit.getOnlinePlayers()) {
|
||||
@ -579,12 +608,12 @@ public class IslandManager {
|
||||
islandOwnerPlayerName = islandOwnerPlayer.getName();
|
||||
}
|
||||
|
||||
for (UUID visitorList : island.getVisitors()) {
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(visitorList);
|
||||
|
||||
LocationUtil.teleportPlayerToSpawn(targetPlayer);
|
||||
|
||||
messageManager.sendMessage(targetPlayer, configLoad.getString("Island.Visit.Closed.Island.Message").replace("%player", islandOwnerPlayerName));
|
||||
for (UUID visitorList : getVisitorsAtIsland(island)) {
|
||||
if (!island.isCoopPlayer(visitorList)) {
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(visitorList);
|
||||
LocationUtil.teleportPlayerToSpawn(targetPlayer);
|
||||
messageManager.sendMessage(targetPlayer, configLoad.getString("Island.Visit.Closed.Island.Message").replace("%player", islandOwnerPlayerName));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -812,4 +841,62 @@ public class IslandManager {
|
||||
player.setAllowFlight(false);
|
||||
}
|
||||
}
|
||||
|
||||
public List<UUID> getCoopPlayersAtIsland(Island island) {
|
||||
List<UUID> coopPlayersAtIsland = new ArrayList<>();
|
||||
|
||||
if (island != null) {
|
||||
for (Player all : Bukkit.getOnlinePlayers()) {
|
||||
if (island.getCoopPlayers().contains(all.getUniqueId())) {
|
||||
for (Location.World worldList : Location.World.values()) {
|
||||
if (LocationUtil.isLocationAtLocationRadius(all.getLocation(), island.getLocation(worldList, Location.Environment.Island), island.getRadius())) {
|
||||
coopPlayersAtIsland.add(all.getUniqueId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return coopPlayersAtIsland;
|
||||
}
|
||||
|
||||
public boolean removeCoopPlayers(Island island, UUID uuid) {
|
||||
MessageManager messageManager = skyblock.getMessageManager();
|
||||
SoundManager soundManager = skyblock.getSoundManager();
|
||||
|
||||
Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
boolean coopPlayers = island.getSetting(Setting.Role.Operator, "CoopPlayers").getStatus();
|
||||
|
||||
for (Player all : Bukkit.getOnlinePlayers()) {
|
||||
if (uuid != null && all.getUniqueId().equals(uuid)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (island.isRole(Role.Owner, all.getUniqueId())) {
|
||||
return false;
|
||||
} else if (coopPlayers && island.isRole(Role.Operator, all.getUniqueId())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
for (UUID coopPlayerAtIslandList : getCoopPlayersAtIsland(island)) {
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(coopPlayerAtIslandList);
|
||||
|
||||
if (targetPlayer != null) {
|
||||
LocationUtil.teleportPlayerToSpawn(targetPlayer);
|
||||
|
||||
if (coopPlayers) {
|
||||
messageManager.sendMessage(targetPlayer, configLoad.getString("Island.Coop.Removed.Operator.Message"));
|
||||
} else {
|
||||
messageManager.sendMessage(targetPlayer, configLoad.getString("Island.Coop.Removed.Owner.Message"));
|
||||
}
|
||||
|
||||
soundManager.playSound(targetPlayer, Sounds.IRONGOLEM_HIT.bukkitSound(), 1.0F, 1.0F);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ public class LeaderboardManager {
|
||||
}
|
||||
|
||||
if (islandVotes.size() != 0 && i <= islandVotes.size()-1) {
|
||||
leaderboardStorage.add(new Leaderboard(Leaderboard.Type.Votes, visitManager.getIsland((UUID) islandLevels.get(i).getUUID()), i));
|
||||
leaderboardStorage.add(new Leaderboard(Leaderboard.Type.Votes, visitManager.getIsland((UUID) islandVotes.get(i).getUUID()), i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
import org.bukkit.entity.FallingBlock;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
@ -143,6 +144,10 @@ public class Entity implements Listener {
|
||||
public void onEntityChangeBlock(EntityChangeBlockEvent event) {
|
||||
org.bukkit.entity.Entity entity = event.getEntity();
|
||||
|
||||
if (entity instanceof FallingBlock) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(entity instanceof Player)) {
|
||||
if (entity.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Normal).getName()) || entity.getWorld().getName().equals(skyblock.getWorldManager().getWorld(Location.World.Nether).getName())) {
|
||||
IslandManager islandManager = skyblock.getIslandManager();
|
||||
@ -232,7 +237,7 @@ public class Entity implements Listener {
|
||||
if (event.getSpawnReason() == SpawnReason.CUSTOM || event.getSpawnReason() == SpawnReason.NATURAL) {
|
||||
LivingEntity livingEntity = event.getEntity();
|
||||
|
||||
if (event.getEntity() instanceof ArmorStand) {
|
||||
if (event.getEntity() instanceof ArmorStand || event.getEntity() instanceof FallingBlock) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -90,7 +90,7 @@ public class Join implements Listener {
|
||||
if (island.getRole(Role.Member).size() == 0 && island.getRole(Role.Operator).size() == 0) {
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', config.getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname")));
|
||||
|
||||
if (island.getVisitors().size() == 0) {
|
||||
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Empty.Displaylines"));
|
||||
} else {
|
||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Occupied.Displaylines"));
|
||||
@ -98,7 +98,7 @@ public class Join implements Listener {
|
||||
} else {
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', config.getFileConfiguration().getString("Scoreboard.Island.Team.Displayname")));
|
||||
|
||||
if (island.getVisitors().size() == 0) {
|
||||
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Team.Empty.Displaylines"));
|
||||
} else {
|
||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Team.Occupied.Displaylines"));
|
||||
|
@ -105,6 +105,7 @@ public class Move implements Listener {
|
||||
if (to.getY() <= configLoad.getInt("Island.World." + world.name() + ".Liquid.Height")) {
|
||||
if (island.getSetting(Setting.Role.Owner, "KeepItemsOnDeath").getStatus()) {
|
||||
player.setFallDistance(0.0F);
|
||||
|
||||
player.teleport(island.getLocation(world, me.goodandevil.skyblock.island.Location.Environment.Main));
|
||||
soundManager.playSound(player, Sounds.ENDERMAN_TELEPORT.bukkitSound(), 1.0F, 1.0F);
|
||||
}
|
||||
@ -134,6 +135,7 @@ public class Move implements Listener {
|
||||
}
|
||||
|
||||
player.setFallDistance(0.0F);
|
||||
|
||||
player.teleport(island.getLocation(world, me.goodandevil.skyblock.island.Location.Environment.Main));
|
||||
soundManager.playSound(player, Sounds.ENDERMAN_TELEPORT.bukkitSound(), 1.0F, 1.0F);
|
||||
}
|
||||
|
@ -69,9 +69,9 @@ public class Quit implements Listener {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
islandManager.unloadIsland(player.getUniqueId());
|
||||
islandManager.unloadIsland(island, player.getUniqueId());
|
||||
}
|
||||
|
||||
playerDataManager.savePlayerData(player);
|
||||
playerDataManager.unloadPlayerData(player);
|
||||
@ -79,7 +79,15 @@ public class Quit implements Listener {
|
||||
UUID islandOwnerUUID = playerData.getIsland();
|
||||
|
||||
if (islandOwnerUUID != null && islandManager.containsIsland(islandOwnerUUID)) {
|
||||
islandManager.unloadIsland(islandOwnerUUID);
|
||||
if (skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Coop.Unload")) {
|
||||
Island island = islandManager.getIsland(islandOwnerUUID);
|
||||
|
||||
if (island.isCoopPlayer(islandOwnerUUID)) {
|
||||
island.removeCoopPlayer(islandOwnerUUID);
|
||||
}
|
||||
}
|
||||
|
||||
islandManager.unloadIsland(islandManager.getIsland(islandOwnerUUID), null);
|
||||
}
|
||||
|
||||
InviteManager inviteManager = skyblock.getInviteManager();
|
||||
|
@ -78,7 +78,7 @@ public class Teleport implements Listener {
|
||||
if (LocationUtil.isLocationAtLocationRadius(event.getTo(), island.getLocation(worldList, Location.Environment.Island), island.getRadius())) {
|
||||
if (!island.getOwnerUUID().equals(playerData.getOwner())) {
|
||||
if (!(player.hasPermission("skyblock.bypass") && player.hasPermission("skyblock.bypass.*") && player.hasPermission("skyblock.*"))) {
|
||||
if (!island.isOpen()) {
|
||||
if (!island.isOpen() && !island.isCoopPlayer(player.getUniqueId())) {
|
||||
event.setCancelled(true);
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Island.Visit.Closed.Plugin.Message"));
|
||||
@ -113,7 +113,7 @@ public class Teleport implements Listener {
|
||||
playerData.setIsland(island.getOwnerUUID());
|
||||
|
||||
if (islandOwnerUUID != null && islandManager.containsIsland(islandOwnerUUID) && (playerData.getOwner() == null || !playerData.getOwner().equals(islandOwnerUUID))) {
|
||||
islandManager.unloadIsland(islandOwnerUUID);
|
||||
islandManager.unloadIsland(islandManager.getIsland(islandOwnerUUID), null);
|
||||
}
|
||||
|
||||
Visit visit = island.getVisit();
|
||||
@ -142,7 +142,7 @@ public class Teleport implements Listener {
|
||||
playerData.setIsland(null);
|
||||
|
||||
if (islandOwnerUUID != null && islandManager.containsIsland(islandOwnerUUID) && (playerData.getOwner() == null || !playerData.getOwner().equals(islandOwnerUUID))) {
|
||||
islandManager.unloadIsland(islandOwnerUUID);
|
||||
islandManager.unloadIsland(islandManager.getIsland(islandOwnerUUID), null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import org.bukkit.Material;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import me.goodandevil.skyblock.SkyBlock;
|
||||
import me.goodandevil.skyblock.config.FileManager;
|
||||
@ -22,6 +23,7 @@ import me.goodandevil.skyblock.message.MessageManager;
|
||||
import me.goodandevil.skyblock.playerdata.PlayerData;
|
||||
import me.goodandevil.skyblock.playerdata.PlayerDataManager;
|
||||
import me.goodandevil.skyblock.sound.SoundManager;
|
||||
import me.goodandevil.skyblock.utils.AnvilGUI;
|
||||
import me.goodandevil.skyblock.utils.OfflinePlayer;
|
||||
import me.goodandevil.skyblock.utils.item.SkullUtil;
|
||||
import me.goodandevil.skyblock.utils.item.nInventoryUtil;
|
||||
@ -91,11 +93,33 @@ public class Bans {
|
||||
} else if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Bans.Item.Exit.Displayname"))))) {
|
||||
soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F);
|
||||
player.closeInventory();
|
||||
} else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Bans.Item.Statistics.Displayname"))))) {
|
||||
soundManager.playSound(player, Sounds.VILLAGER_YES.bukkitSound(), 1.0F, 1.0F);
|
||||
} else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Bans.Item.Information.Displayname"))))) {
|
||||
soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
event.setWillClose(false);
|
||||
event.setWillDestroy(false);
|
||||
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(skyblock, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
AnvilGUI gui = new AnvilGUI(player, event1 -> {
|
||||
if (event1.getSlot() == AnvilGUI.AnvilSlot.OUTPUT) {
|
||||
Bukkit.getServer().dispatchCommand(player, "island ban " + event1.getName());
|
||||
|
||||
event1.setWillClose(true);
|
||||
event1.setWillDestroy(true);
|
||||
} else {
|
||||
event1.setWillClose(false);
|
||||
event1.setWillDestroy(false);
|
||||
}
|
||||
});
|
||||
|
||||
ItemStack is = new ItemStack(Material.NAME_TAG);
|
||||
ItemMeta im = is.getItemMeta();
|
||||
im.setDisplayName(configLoad.getString("Menu.Bans.Item.Word.Enter"));
|
||||
is.setItemMeta(im);
|
||||
|
||||
gui.setSlot(AnvilGUI.AnvilSlot.INPUT_LEFT, is);
|
||||
gui.open();
|
||||
}
|
||||
}, 1L);
|
||||
} else if ((is.getType() == Material.BARRIER) && (is.hasItemMeta()) && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Bans.Item.Nothing.Displayname"))))) {
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
@ -149,7 +173,7 @@ public class Bans {
|
||||
List<UUID> islandBans = island.getBan().getBans();
|
||||
|
||||
nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), configLoad.getString("Menu.Bans.Item.Exit.Displayname"), null, null, null, null), 0, 8);
|
||||
nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), configLoad.getString("Menu.Bans.Item.Statistics.Displayname"), configLoad.getStringList("Menu.Bans.Item.Statistics.Lore"), nInv.createItemLoreVariable(new String[] { "%bans#" + islandBans.size() }), null, null), 4);
|
||||
nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), configLoad.getString("Menu.Bans.Item.Information.Displayname"), configLoad.getStringList("Menu.Bans.Item.Information.Lore"), nInv.createItemLoreVariable(new String[] { "%bans#" + islandBans.size() }), null, null), 4);
|
||||
nInv.addItem(nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), configLoad.getString("Menu.Bans.Item.Barrier.Displayname"), null, null, null, null), 9, 10, 11, 12, 13, 14, 15, 16, 17);
|
||||
|
||||
int playerMenuPage = playerData.getPage(), nextEndIndex = islandBans.size() - playerMenuPage * 36;
|
||||
|
220
src/main/java/me/goodandevil/skyblock/menus/Coop.java
Normal file
220
src/main/java/me/goodandevil/skyblock/menus/Coop.java
Normal file
@ -0,0 +1,220 @@
|
||||
package me.goodandevil.skyblock.menus;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import me.goodandevil.skyblock.SkyBlock;
|
||||
import me.goodandevil.skyblock.config.FileManager.Config;
|
||||
import me.goodandevil.skyblock.island.Island;
|
||||
import me.goodandevil.skyblock.island.IslandManager;
|
||||
import me.goodandevil.skyblock.island.Role;
|
||||
import me.goodandevil.skyblock.island.Setting;
|
||||
import me.goodandevil.skyblock.message.MessageManager;
|
||||
import me.goodandevil.skyblock.playerdata.PlayerData;
|
||||
import me.goodandevil.skyblock.playerdata.PlayerDataManager;
|
||||
import me.goodandevil.skyblock.sound.SoundManager;
|
||||
import me.goodandevil.skyblock.utils.AnvilGUI;
|
||||
import me.goodandevil.skyblock.utils.OfflinePlayer;
|
||||
import me.goodandevil.skyblock.utils.item.SkullUtil;
|
||||
import me.goodandevil.skyblock.utils.item.nInventoryUtil;
|
||||
import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEvent;
|
||||
import me.goodandevil.skyblock.utils.item.nInventoryUtil.ClickEventHandler;
|
||||
import me.goodandevil.skyblock.utils.version.Materials;
|
||||
import me.goodandevil.skyblock.utils.version.Sounds;
|
||||
|
||||
public class Coop {
|
||||
|
||||
private static Coop instance;
|
||||
|
||||
public static Coop getInstance(){
|
||||
if(instance == null) {
|
||||
instance = new Coop();
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
public void open(Player player) {
|
||||
SkyBlock skyblock = SkyBlock.getInstance();
|
||||
|
||||
PlayerDataManager playerDataManager = skyblock.getPlayerDataManager();
|
||||
MessageManager messageManager = skyblock.getMessageManager();
|
||||
IslandManager islandManager = skyblock.getIslandManager();
|
||||
SoundManager soundManager = skyblock.getSoundManager();
|
||||
|
||||
if (playerDataManager.hasPlayerData(player)) {
|
||||
Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
nInventoryUtil nInv = new nInventoryUtil(player, new ClickEventHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
if (playerDataManager.hasPlayerData(player)) {
|
||||
PlayerData playerData = playerDataManager.getPlayerData(player);
|
||||
Island island = null;
|
||||
|
||||
if (islandManager.hasIsland(player)) {
|
||||
island = islandManager.getIsland(playerData.getOwner());
|
||||
} else {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Owner.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
ItemStack is = event.getItem();
|
||||
|
||||
if ((is.getType() == Materials.BLACK_STAINED_GLASS_PANE.parseMaterial()) && (is.hasItemMeta()) && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Coop.Item.Barrier.Displayname"))))) {
|
||||
soundManager.playSound(player, Sounds.GLASS.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
event.setWillClose(false);
|
||||
event.setWillDestroy(false);
|
||||
} else if ((is.getType() == Materials.OAK_FENCE_GATE.parseMaterial()) && (is.hasItemMeta()) && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Coop.Item.Exit.Displayname"))))) {
|
||||
soundManager.playSound(player, Sounds.CHEST_CLOSE.bukkitSound(), 1.0F, 1.0F);
|
||||
player.closeInventory();
|
||||
} else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Coop.Item.Information.Displayname"))))) {
|
||||
soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(skyblock, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
AnvilGUI gui = new AnvilGUI(player, event1 -> {
|
||||
if (event1.getSlot() == AnvilGUI.AnvilSlot.OUTPUT) {
|
||||
Bukkit.getServer().dispatchCommand(player, "island coop " + event1.getName());
|
||||
|
||||
event1.setWillClose(true);
|
||||
event1.setWillDestroy(true);
|
||||
} else {
|
||||
event1.setWillClose(false);
|
||||
event1.setWillDestroy(false);
|
||||
}
|
||||
});
|
||||
|
||||
ItemStack is = new ItemStack(Material.NAME_TAG);
|
||||
ItemMeta im = is.getItemMeta();
|
||||
im.setDisplayName(configLoad.getString("Menu.Coop.Item.Word.Enter"));
|
||||
is.setItemMeta(im);
|
||||
|
||||
gui.setSlot(AnvilGUI.AnvilSlot.INPUT_LEFT, is);
|
||||
gui.open();
|
||||
}
|
||||
}, 1L);
|
||||
} else if ((is.getType() == Material.BARRIER) && (is.hasItemMeta()) && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Coop.Item.Nothing.Displayname"))))) {
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
event.setWillClose(false);
|
||||
event.setWillDestroy(false);
|
||||
} else if ((is.getType() == SkullUtil.createItemStack().getType()) && (is.hasItemMeta())) {
|
||||
if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Coop.Item.Previous.Displayname")))) {
|
||||
playerData.setPage(playerData.getPage() - 1);
|
||||
soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(skyblock, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
open(player);
|
||||
}
|
||||
}, 1L);
|
||||
} else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Coop.Item.Next.Displayname")))) {
|
||||
playerData.setPage(playerData.getPage() + 1);
|
||||
soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(skyblock, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
open(player);
|
||||
}
|
||||
}, 1L);
|
||||
} else {
|
||||
if ((island.isRole(Role.Operator, player.getUniqueId()) && island.getSetting(Setting.Role.Operator, "CoopPlayers").getStatus()) || island.isRole(Role.Owner, player.getUniqueId())) {
|
||||
String playerName = ChatColor.stripColor(is.getItemMeta().getDisplayName());
|
||||
Bukkit.getServer().dispatchCommand(player, "island coop " + playerName);
|
||||
|
||||
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(skyblock, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
open(player);
|
||||
}
|
||||
}, 3L);
|
||||
} else {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Coop.Permission.Message"));
|
||||
soundManager.playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
event.setWillClose(false);
|
||||
event.setWillDestroy(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
PlayerData playerData = playerDataManager.getPlayerData(player);
|
||||
Island island = islandManager.getIsland(playerData.getOwner());
|
||||
|
||||
List<UUID> coopPlayers = island.getCoopPlayers();
|
||||
|
||||
int playerMenuPage = playerData.getPage(), nextEndIndex = coopPlayers.size() - playerMenuPage * 36;
|
||||
|
||||
nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), configLoad.getString("Menu.Coop.Item.Exit.Displayname"), null, null, null, null), 0, 8);
|
||||
nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), configLoad.getString("Menu.Coop.Item.Information.Displayname"), configLoad.getStringList("Menu.Coop.Item.Information.Lore"), nInv.createItemLoreVariable(new String[] { "%coops#" + coopPlayers.size() }), null, null), 4);
|
||||
nInv.addItem(nInv.createItem(Materials.BLACK_STAINED_GLASS_PANE.parseItem(), configLoad.getString("Menu.Coop.Item.Barrier.Displayname"), null, null, null, null), 9, 10, 11, 12, 13, 14, 15, 16, 17);
|
||||
|
||||
if (playerMenuPage != 1) {
|
||||
nInv.addItem(nInv.createItem(SkullUtil.create("ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=", "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ=="), configLoad.getString("Menu.Coop.Item.Previous.Displayname"), null, null, null, null), 1);
|
||||
}
|
||||
|
||||
if (!(nextEndIndex == 0 || nextEndIndex < 0)) {
|
||||
nInv.addItem(nInv.createItem(SkullUtil.create("wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), configLoad.getString("Menu.Coop.Item.Next.Displayname"), null, null, null, null), 7);
|
||||
}
|
||||
|
||||
if (coopPlayers.size() == 0) {
|
||||
nInv.addItem(nInv.createItem(new ItemStack(Material.BARRIER), configLoad.getString("Menu.Coop.Item.Nothing.Displayname"), null, null, null, null), 31);
|
||||
} else {
|
||||
int index = playerMenuPage * 36 - 36, endIndex = index >= coopPlayers.size() ? coopPlayers.size() - 1 : index + 36, inventorySlot = 17;
|
||||
|
||||
for (; index < endIndex; index++) {
|
||||
if (coopPlayers.size() > index) {
|
||||
inventorySlot++;
|
||||
|
||||
UUID targetPlayerUUID = coopPlayers.get(index);
|
||||
String targetPlayerName;
|
||||
String[] targetPlayerTexture;
|
||||
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(targetPlayerUUID);
|
||||
|
||||
if (targetPlayer == null) {
|
||||
OfflinePlayer offlinePlayer = new OfflinePlayer(targetPlayerUUID);
|
||||
targetPlayerName = offlinePlayer.getName();
|
||||
targetPlayerTexture = offlinePlayer.getTexture();
|
||||
} else {
|
||||
targetPlayerName = targetPlayer.getName();
|
||||
targetPlayerTexture = playerDataManager.getPlayerData(targetPlayer).getTexture();
|
||||
}
|
||||
|
||||
nInv.addItem(nInv.createItem(SkullUtil.create(targetPlayerTexture[0], targetPlayerTexture[1]), ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Coop.Item.Coop.Displayname").replace("%player", targetPlayerName)), configLoad.getStringList("Menu.Coop.Item.Coop.Lore"), null, null, null), inventorySlot);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Coop.Title")));
|
||||
nInv.setRows(6);
|
||||
|
||||
Bukkit.getServer().getScheduler().runTask(skyblock, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
nInv.open();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
@ -76,7 +76,7 @@ public class Information {
|
||||
|
||||
if (viewer.getType() == Information.Viewer.Type.Visitors) {
|
||||
if (island.isOpen()) {
|
||||
if (island.getVisitors().size() == 0) {
|
||||
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
||||
messageManager.sendMessage(player, configLoad.getString("Island.Information.Visitors.Message"));
|
||||
soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F);
|
||||
|
||||
@ -396,7 +396,7 @@ public class Information {
|
||||
});
|
||||
|
||||
List<UUID> displayedVisitors = new ArrayList<>();
|
||||
displayedVisitors.addAll(island.getVisitors());
|
||||
displayedVisitors.addAll(islandManager.getVisitorsAtIsland(island));
|
||||
|
||||
nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), configLoad.getString("Menu.Information.Visitors.Item.Return.Displayname"), null, null, null, null), 0, 8);
|
||||
nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), configLoad.getString("Menu.Information.Visitors.Item.Statistics.Displayname"), configLoad.getStringList("Menu.Information.Visitors.Item.Statistics.Lore"), nInv.createItemLoreVariable(new String[] { "%island_visitors#" + displayedVisitors.size() }), null, null), 4);
|
||||
@ -450,7 +450,7 @@ public class Information {
|
||||
});
|
||||
}
|
||||
|
||||
islandManager.unloadIsland(viewer.getOwner());
|
||||
islandManager.unloadIsland(island, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -296,15 +296,15 @@ public class Settings {
|
||||
|
||||
if (config.getFileConfiguration().getBoolean("Island.Visitor.Vote")) {
|
||||
if (visit.isOpen()) {
|
||||
nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"), configLoad.getStringList("Menu.Settings.Visitor.Item.Statistics.Vote.Enabled.Open.Lore"), nInv.createItemLoreVariable(new String[] { "%visits#" + visit.getVisitors().size(), "%votes#" + visit.getVoters().size(), "%visitors#" + island.getVisitors().size() }), null, null), 4);
|
||||
nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"), configLoad.getStringList("Menu.Settings.Visitor.Item.Statistics.Vote.Enabled.Open.Lore"), nInv.createItemLoreVariable(new String[] { "%visits#" + visit.getVisitors().size(), "%votes#" + visit.getVoters().size(), "%visitors#" + islandManager.getVisitorsAtIsland(island).size() }), null, null), 4);
|
||||
} else {
|
||||
nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"), configLoad.getStringList("Menu.Settings.Visitor.Item.Statistics.Vote.Enabled.Closed.Lore"), nInv.createItemLoreVariable(new String[] { "%visits#" + visit.getVisitors().size(), "%votes#" + visit.getVoters().size(), "%visitors#" + island.getVisitors().size() }), null, null), 4);
|
||||
nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"), configLoad.getStringList("Menu.Settings.Visitor.Item.Statistics.Vote.Enabled.Closed.Lore"), nInv.createItemLoreVariable(new String[] { "%visits#" + visit.getVisitors().size(), "%votes#" + visit.getVoters().size(), "%visitors#" + islandManager.getVisitorsAtIsland(island).size() }), null, null), 4);
|
||||
}
|
||||
} else {
|
||||
if (visit.isOpen()) {
|
||||
nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"), configLoad.getStringList("Menu.Settings.Visitor.Item.Statistics.Vote.Disabled.Open.Lore"), nInv.createItemLoreVariable(new String[] { "%visits#" + visit.getVisitors().size(), "%visitors#" + island.getVisitors().size() }), null, null), 4);
|
||||
nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"), configLoad.getStringList("Menu.Settings.Visitor.Item.Statistics.Vote.Disabled.Open.Lore"), nInv.createItemLoreVariable(new String[] { "%visits#" + visit.getVisitors().size(), "%visitors#" + islandManager.getVisitorsAtIsland(island).size() }), null, null), 4);
|
||||
} else {
|
||||
nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"), configLoad.getStringList("Menu.Settings.Visitor.Item.Statistics.Vote.Disabled.Closed.Lore"), nInv.createItemLoreVariable(new String[] { "%visits#" + visit.getVisitors().size(), "%visitors#" + island.getVisitors().size() }), null, null), 4);
|
||||
nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"), configLoad.getStringList("Menu.Settings.Visitor.Item.Statistics.Vote.Disabled.Closed.Lore"), nInv.createItemLoreVariable(new String[] { "%visits#" + visit.getVisitors().size(), "%visitors#" + islandManager.getVisitorsAtIsland(island).size() }), null, null), 4);
|
||||
}
|
||||
}
|
||||
|
||||
@ -368,25 +368,24 @@ public class Settings {
|
||||
nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseMaterial()), 16);
|
||||
nInv.addItemStack(createItem(island, role, "MainSpawn", Material.EMERALD), 20);
|
||||
nInv.addItemStack(createItem(island, role, "VisitorSpawn", Material.NETHER_STAR), 21);
|
||||
nInv.addItemStack(createItem(island, role, "Biome", Material.MAP), 23);
|
||||
nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseMaterial()), 24);
|
||||
|
||||
nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Settings." + role.name() + ".Title")));
|
||||
nInv.setRows(3);
|
||||
nInv.addItemStack(createItem(island, role, "Biome", Material.MAP), 22);
|
||||
nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseMaterial()), 23);
|
||||
nInv.addItemStack(createItem(island, role, "CoopPlayers", Material.BOOK), 24);
|
||||
} else {
|
||||
nInv.addItemStack(createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseMaterial()), 9);
|
||||
nInv.addItemStack(createItem(island, role, "Kick", Material.IRON_DOOR), 10);
|
||||
nInv.addItemStack(createItem(island, role, "Visitor", Material.SIGN), 11);
|
||||
nInv.addItemStack(createItem(island, role, "Member", Material.PAINTING), 12);
|
||||
nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseMaterial()), 13);
|
||||
nInv.addItemStack(createItem(island, role, "MainSpawn", Material.EMERALD), 14);
|
||||
nInv.addItemStack(createItem(island, role, "VisitorSpawn", Material.NETHER_STAR), 15);
|
||||
nInv.addItemStack(createItem(island, role, "Biome", Material.MAP), 16);
|
||||
nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseMaterial()), 17);
|
||||
|
||||
nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Settings." + role.name() + ".Title")));
|
||||
nInv.setRows(2);
|
||||
nInv.addItemStack(createItem(island, role, "Invite", Materials.WRITABLE_BOOK.parseMaterial()), 10);
|
||||
nInv.addItemStack(createItem(island, role, "Kick", Material.IRON_DOOR), 11);
|
||||
nInv.addItemStack(createItem(island, role, "Visitor", Material.SIGN), 12);
|
||||
nInv.addItemStack(createItem(island, role, "Member", Material.PAINTING), 13);
|
||||
nInv.addItemStack(createItem(island, role, "Island", Materials.OAK_SAPLING.parseMaterial()), 14);
|
||||
nInv.addItemStack(createItem(island, role, "MainSpawn", Material.EMERALD), 15);
|
||||
nInv.addItemStack(createItem(island, role, "VisitorSpawn", Material.NETHER_STAR), 16);
|
||||
nInv.addItemStack(createItem(island, role, "Biome", Material.MAP), 21);
|
||||
nInv.addItemStack(createItem(island, role, "Weather", Materials.CLOCK.parseMaterial()), 22);
|
||||
nInv.addItemStack(createItem(island, role, "CoopPlayers", Material.BOOK), 23);
|
||||
}
|
||||
|
||||
nInv.setTitle(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Settings." + role.name() + ".Title")));
|
||||
nInv.setRows(3);
|
||||
} else if (role == me.goodandevil.skyblock.island.Setting.Role.Owner) {
|
||||
nInv.addItemStack(createItem(island, role, "NaturalMobSpawning", Materials.PIG_SPAWN_EGG.parseMaterial()), 10);
|
||||
nInv.addItemStack(createItem(island, role, "MobGriefing", Materials.IRON_SHOVEL.parseMaterial()), 11);
|
||||
|
@ -154,8 +154,15 @@ public class Visit {
|
||||
|
||||
if (visitManager.hasIsland(targetPlayerUUID)) {
|
||||
me.goodandevil.skyblock.visit.Visit visit = visitManager.getIsland(targetPlayerUUID);
|
||||
boolean isCoopPlayer = false;
|
||||
|
||||
if (visit.isOpen()) {
|
||||
if (islandManager.containsIsland(targetPlayerUUID)) {
|
||||
if (islandManager.getIsland(targetPlayerUUID).isCoopPlayer(player.getUniqueId())) {
|
||||
isCoopPlayer = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (isCoopPlayer || player.hasPermission("skyblock.bypass") || player.hasPermission("skyblock.bypass.*") || player.hasPermission("skyblock.*") || visit.isOpen()) {
|
||||
if (!islandManager.containsIsland(targetPlayerUUID)) {
|
||||
islandManager.loadIsland(targetPlayerUUID);
|
||||
}
|
||||
@ -195,7 +202,7 @@ public class Visit {
|
||||
event.setWillDestroy(false);
|
||||
}
|
||||
|
||||
islandManager.unloadIsland(targetPlayerUUID);
|
||||
islandManager.unloadIsland(island, null);
|
||||
|
||||
return;
|
||||
} else if (event.getClick() != ClickType.LEFT) {
|
||||
@ -252,6 +259,8 @@ public class Visit {
|
||||
Map<UUID, me.goodandevil.skyblock.visit.Visit> openIslands = visitManager.getOpenIslands();
|
||||
List<me.goodandevil.skyblock.visit.Visit> visitIslands = new ArrayList<>();
|
||||
|
||||
boolean keepBannedIslands = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Visit.Menu.Bans");
|
||||
|
||||
for (int i = 0; i < openIslands.size(); i++) {
|
||||
UUID islandOwnerUUID = (UUID) openIslands.keySet().toArray()[i];
|
||||
me.goodandevil.skyblock.visit.Visit visit = openIslands.get(islandOwnerUUID);
|
||||
@ -266,6 +275,10 @@ public class Visit {
|
||||
}
|
||||
}
|
||||
|
||||
if (!keepBannedIslands && visit.getBan().isBanned(player.getUniqueId())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
visitIslands.add(visit);
|
||||
}
|
||||
|
||||
|
@ -160,8 +160,8 @@ public class Visitors {
|
||||
PlayerData playerData = playerDataManager.getPlayerData(player);
|
||||
Island island = skyblock.getIslandManager().getIsland(playerData.getOwner());
|
||||
|
||||
List<UUID> islandVisitors = islandManager.getVisitorsAtIsland(island);
|
||||
Map<Integer, UUID> sortedIslandVisitors = new TreeMap<>();
|
||||
List<UUID> islandVisitors = island.getVisitors();
|
||||
|
||||
nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), configLoad.getString("Menu.Visitors.Item.Exit.Displayname"), null, null, null, null), 0, 8);
|
||||
nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING), configLoad.getString("Menu.Visitors.Item.Statistics.Displayname"), configLoad.getStringList("Menu.Visitors.Item.Statistics.Lore"), nInv.createItemLoreVariable(new String[] { "%visitors#" + islandVisitors.size() }), null, null), 4);
|
||||
|
@ -102,7 +102,7 @@ public class EZPlaceholder extends PlaceholderExpansion {
|
||||
return "";
|
||||
}
|
||||
|
||||
return placeholderManager.getPlaceholder(player, identifier);
|
||||
return placeholderManager.getPlaceholder(player, "skyblock_" + identifier);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -172,7 +172,7 @@ public class PlaceholderManager {
|
||||
if (island == null) {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_visitors.Empty.Message"));
|
||||
} else {
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_visitors.Non-empty.Message").replace("%placeholder", "" + island.getVisitors().size()));
|
||||
return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_visitors.Non-empty.Message").replace("%placeholder", "" + islandManager.getVisitorsAtIsland(island).size()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -131,6 +131,10 @@ public class PlayerDataManager {
|
||||
IslandManager islandManager = skyblock.getIslandManager();
|
||||
WorldManager worldManager = skyblock.getWorldManager();
|
||||
FileManager fileManager = skyblock.getFileManager();
|
||||
BanManager banManager = skyblock.getBanManager();
|
||||
|
||||
Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
if (hasPlayerData(player) && (player.getWorld().getName().equals(worldManager.getWorld(Location.World.Normal).getName()) || player.getWorld().getName().equals(worldManager.getWorld(Location.World.Nether).getName()))) {
|
||||
for (UUID islandList : islandManager.getIslands().keySet()) {
|
||||
@ -138,53 +142,89 @@ public class PlayerDataManager {
|
||||
|
||||
for (Location.World worldList : Location.World.values()) {
|
||||
if (LocationUtil.isLocationAtLocationRadius(player.getLocation(), island.getLocation(worldList, Location.Environment.Island), island.getRadius())) {
|
||||
PlayerData playerData = getPlayerData(player);
|
||||
playerData.setIsland(island.getOwnerUUID());
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(islandList);
|
||||
String targetPlayerName;
|
||||
|
||||
if (worldList == Location.World.Normal) {
|
||||
if (!island.isWeatherSynchronised()) {
|
||||
player.setPlayerTime(island.getTime(), fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Weather.Time.Cycle"));
|
||||
player.setPlayerWeather(island.getWeather());
|
||||
}
|
||||
}
|
||||
if (targetPlayer == null) {
|
||||
targetPlayerName = new OfflinePlayer(islandList).getName();
|
||||
} else {
|
||||
targetPlayerName = targetPlayer.getName();
|
||||
}
|
||||
|
||||
islandManager.giveUpgrades(player, island);
|
||||
if (banManager.hasIsland(islandList) && fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Visitor.Banning") && banManager.getIsland(islandList).isBanned(player.getUniqueId())) {
|
||||
messageManager.sendMessage(player, configLoad.getString("Island.Visit.Teleport.Island.Message").replace("%player", targetPlayerName));
|
||||
} else {
|
||||
if (island.isRole(Role.Member, player.getUniqueId()) || island.isRole(Role.Operator, player.getUniqueId()) || island.isRole(Role.Owner, player.getUniqueId())) {
|
||||
PlayerData playerData = getPlayerData(player);
|
||||
playerData.setIsland(island.getOwnerUUID());
|
||||
|
||||
ScoreboardManager scoreboardManager = skyblock.getScoreboardManager();
|
||||
|
||||
if (scoreboardManager != null) {
|
||||
if (!island.isRole(Role.Member, player.getUniqueId()) && !island.isRole(Role.Operator, player.getUniqueId()) && !island.isRole(Role.Owner, player.getUniqueId())) {
|
||||
Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
for (Player all : Bukkit.getOnlinePlayers()) {
|
||||
PlayerData targetPlayerData = getPlayerData(all);
|
||||
|
||||
if (targetPlayerData.getOwner() != null && targetPlayerData.getOwner().equals(island.getOwnerUUID())) {
|
||||
Scoreboard scoreboard = scoreboardManager.getScoreboard(all);
|
||||
scoreboard.cancel();
|
||||
|
||||
if ((island.getRole(Role.Member).size() + island.getRole(Role.Operator).size() + 1) == 1) {
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Scoreboard.Island.Solo.Displayname")));
|
||||
scoreboard.setDisplayList(configLoad.getStringList("Scoreboard.Island.Solo.Occupied.Displaylines"));
|
||||
} else {
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Scoreboard.Island.Team.Displayname")));
|
||||
scoreboard.setDisplayList(configLoad.getStringList("Scoreboard.Island.Team.Occupied.Displaylines"));
|
||||
|
||||
Map<String, String> displayVariables = new HashMap<>();
|
||||
displayVariables.put("%owner", configLoad.getString("Scoreboard.Island.Team.Word.Owner"));
|
||||
displayVariables.put("%operator", configLoad.getString("Scoreboard.Island.Team.Word.Operator"));
|
||||
displayVariables.put("%member", configLoad.getString("Scoreboard.Island.Team.Word.Member"));
|
||||
|
||||
scoreboard.setDisplayVariables(displayVariables);
|
||||
}
|
||||
|
||||
scoreboard.run();
|
||||
if (worldList == Location.World.Normal) {
|
||||
if (!island.isWeatherSynchronised()) {
|
||||
player.setPlayerTime(island.getTime(), fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Weather.Time.Cycle"));
|
||||
player.setPlayerWeather(island.getWeather());
|
||||
}
|
||||
}
|
||||
|
||||
islandManager.giveUpgrades(player, island);
|
||||
|
||||
return;
|
||||
} else if (island.isOpen() || island.isCoopPlayer(player.getUniqueId())) {
|
||||
if (!island.isOpen() && island.isCoopPlayer(player.getUniqueId())) {
|
||||
if (islandManager.removeCoopPlayers(island, null)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
PlayerData playerData = getPlayerData(player);
|
||||
playerData.setIsland(island.getOwnerUUID());
|
||||
|
||||
if (worldList == Location.World.Normal) {
|
||||
if (!island.isWeatherSynchronised()) {
|
||||
player.setPlayerTime(island.getTime(), fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Weather.Time.Cycle"));
|
||||
player.setPlayerWeather(island.getWeather());
|
||||
}
|
||||
}
|
||||
|
||||
islandManager.giveUpgrades(player, island);
|
||||
|
||||
ScoreboardManager scoreboardManager = skyblock.getScoreboardManager();
|
||||
|
||||
if (scoreboardManager != null) {
|
||||
for (Player all : Bukkit.getOnlinePlayers()) {
|
||||
PlayerData targetPlayerData = getPlayerData(all);
|
||||
|
||||
if (targetPlayerData.getOwner() != null && targetPlayerData.getOwner().equals(island.getOwnerUUID())) {
|
||||
Scoreboard scoreboard = scoreboardManager.getScoreboard(all);
|
||||
scoreboard.cancel();
|
||||
|
||||
if ((island.getRole(Role.Member).size() + island.getRole(Role.Operator).size() + 1) == 1) {
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Scoreboard.Island.Solo.Displayname")));
|
||||
scoreboard.setDisplayList(configLoad.getStringList("Scoreboard.Island.Solo.Occupied.Displaylines"));
|
||||
} else {
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Scoreboard.Island.Team.Displayname")));
|
||||
scoreboard.setDisplayList(configLoad.getStringList("Scoreboard.Island.Team.Occupied.Displaylines"));
|
||||
|
||||
Map<String, String> displayVariables = new HashMap<>();
|
||||
displayVariables.put("%owner", configLoad.getString("Scoreboard.Island.Team.Word.Owner"));
|
||||
displayVariables.put("%operator", configLoad.getString("Scoreboard.Island.Team.Word.Operator"));
|
||||
displayVariables.put("%member", configLoad.getString("Scoreboard.Island.Team.Word.Member"));
|
||||
|
||||
scoreboard.setDisplayVariables(displayVariables);
|
||||
}
|
||||
|
||||
scoreboard.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
} else {
|
||||
messageManager.sendMessage(player, configLoad.getString("Island.Visit.Closed.Island.Message").replace("%player", targetPlayerName));
|
||||
}
|
||||
}
|
||||
|
||||
LocationUtil.teleportPlayerToSpawn(player);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -197,11 +237,6 @@ public class PlayerDataManager {
|
||||
|
||||
for (Location.World worldList : Location.World.values()) {
|
||||
if (LocationUtil.isLocationAtLocationRadius(player.getLocation(), visit.getLocation(worldList), visit.getRadius())) {
|
||||
BanManager banManager = skyblock.getBanManager();
|
||||
|
||||
Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(visitIslandList);
|
||||
String targetPlayerName;
|
||||
|
||||
@ -214,21 +249,38 @@ public class PlayerDataManager {
|
||||
if (banManager.hasIsland(visitIslandList) && fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Visitor.Banning") && banManager.getIsland(visitIslandList).isBanned(player.getUniqueId())) {
|
||||
messageManager.sendMessage(player, configLoad.getString("Island.Visit.Teleport.Island.Message").replace("%player", targetPlayerName));
|
||||
} else {
|
||||
if (visit.isOpen()) {
|
||||
PlayerData playerData = getPlayerData(player);
|
||||
playerData.setIsland(visitIslandList);
|
||||
islandManager.loadIsland(visitIslandList);
|
||||
Island island = islandManager.getIsland(visitIslandList);
|
||||
|
||||
islandManager.loadIsland(visitIslandList);
|
||||
if (island != null) {
|
||||
if (island.isOpen() || island.isCoopPlayer(player.getUniqueId())) {
|
||||
if (!island.isOpen() && island.isCoopPlayer(player.getUniqueId())) {
|
||||
if (islandManager.removeCoopPlayers(island, null)) {
|
||||
islandManager.unloadIsland(island, visitIslandList);
|
||||
|
||||
Island island = islandManager.getIsland(visitIslandList);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (island != null) {
|
||||
islandManager.giveUpgrades(player, island);
|
||||
PlayerData playerData = getPlayerData(player);
|
||||
playerData.setIsland(visitIslandList);
|
||||
|
||||
if (island != null) {
|
||||
if (worldList == Location.World.Normal) {
|
||||
if (!island.isWeatherSynchronised()) {
|
||||
player.setPlayerTime(island.getTime(), fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Weather.Time.Cycle"));
|
||||
player.setPlayerWeather(island.getWeather());
|
||||
}
|
||||
}
|
||||
|
||||
islandManager.giveUpgrades(player, island);
|
||||
}
|
||||
|
||||
return;
|
||||
} else {
|
||||
islandManager.unloadIsland(island, visitIslandList);
|
||||
messageManager.sendMessage(player, configLoad.getString("Island.Visit.Closed.Island.Message").replace("%player", targetPlayerName));
|
||||
}
|
||||
|
||||
return;
|
||||
} else {
|
||||
messageManager.sendMessage(player, configLoad.getString("Island.Visit.Closed.Island.Message").replace("%player", targetPlayerName));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -173,7 +173,7 @@ public class Scoreboard {
|
||||
Level level = island.getLevel();
|
||||
|
||||
if (island.getRole(Role.Member).size() == 0 && island.getRole(Role.Operator).size() == 0) {
|
||||
displayLine = displayLine.replace("%island_level", "" + NumberUtil.formatNumber(level.getLevel())).replace("%island_members", ChatColor.RED + "0").replace("%island_role", ChatColor.RED + "null").replace("%island_visitors", "" + island.getVisitors().size()).replace("%island_size", "" + island.getSize()).replace("%island_radius", "" + island.getRadius());
|
||||
displayLine = displayLine.replace("%island_level", "" + NumberUtil.formatNumber(level.getLevel())).replace("%island_members", ChatColor.RED + "0").replace("%island_role", ChatColor.RED + "null").replace("%island_visitors", "" + islandManager.getVisitorsAtIsland(island).size()).replace("%island_size", "" + island.getSize()).replace("%island_radius", "" + island.getRadius());
|
||||
} else {
|
||||
int islandMembers = 1 + island.getRole(Role.Member).size() + island.getRole(Role.Operator).size();
|
||||
String islandRole = "";
|
||||
@ -186,7 +186,7 @@ public class Scoreboard {
|
||||
islandRole = displayVariables.get("%member");
|
||||
}
|
||||
|
||||
displayLine = displayLine.replace("%island_level", "" + NumberUtil.formatNumber(level.getLevel())).replace("%island_members", "" + islandMembers).replace("%island_role", islandRole).replace("%island_visitors", "" + island.getVisitors().size()).replace("%island_size", "" + island.getSize()).replace("%island_radius", "" + island.getRadius());
|
||||
displayLine = displayLine.replace("%island_level", "" + NumberUtil.formatNumber(level.getLevel())).replace("%island_members", "" + islandMembers).replace("%island_role", islandRole).replace("%island_visitors", "" + islandManager.getVisitorsAtIsland(island).size()).replace("%island_size", "" + island.getSize()).replace("%island_radius", "" + island.getRadius());
|
||||
}
|
||||
} else {
|
||||
displayLine = displayLine.replace("%island_level", ChatColor.RED + "0").replace("%island_members", ChatColor.RED + "0").replace("%island_role", ChatColor.RED + "null").replace("%island_size", ChatColor.RED + "0").replace("%island_radius", ChatColor.RED + "0");
|
||||
|
@ -45,7 +45,7 @@ public class ScoreboardManager {
|
||||
if (island.getRole(Role.Member).size() == 0 && island.getRole(Role.Operator).size() == 0) {
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', config.getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname")));
|
||||
|
||||
if (island.getVisitors().size() == 0) {
|
||||
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Empty.Displaylines"));
|
||||
} else {
|
||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Occupied.Displaylines"));
|
||||
@ -53,7 +53,7 @@ public class ScoreboardManager {
|
||||
} else {
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', config.getFileConfiguration().getString("Scoreboard.Island.Team.Displayname")));
|
||||
|
||||
if (island.getVisitors().size() == 0) {
|
||||
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Team.Empty.Displaylines"));
|
||||
} else {
|
||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Team.Occupied.Displaylines"));
|
||||
@ -98,7 +98,7 @@ public class ScoreboardManager {
|
||||
if (island.getRole(Role.Member).size() == 0 && island.getRole(Role.Operator).size() == 0) {
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', config.getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname")));
|
||||
|
||||
if (island.getVisitors().size() == 0) {
|
||||
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Empty.Displaylines"));
|
||||
} else {
|
||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Occupied.Displaylines"));
|
||||
@ -106,7 +106,7 @@ public class ScoreboardManager {
|
||||
} else {
|
||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', config.getFileConfiguration().getString("Scoreboard.Island.Team.Displayname")));
|
||||
|
||||
if (island.getVisitors().size() == 0) {
|
||||
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Team.Empty.Displaylines"));
|
||||
} else {
|
||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Team.Occupied.Displaylines"));
|
||||
|
@ -10,6 +10,7 @@ import org.bukkit.Location;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
|
||||
import me.goodandevil.skyblock.SkyBlock;
|
||||
import me.goodandevil.skyblock.ban.Ban;
|
||||
import me.goodandevil.skyblock.config.FileManager.Config;
|
||||
import me.goodandevil.skyblock.island.Level;
|
||||
|
||||
@ -171,6 +172,10 @@ public class Visit {
|
||||
this.open = open;
|
||||
}
|
||||
|
||||
public Ban getBan() {
|
||||
return skyblock.getBanManager().getIsland(getOwnerUUID());
|
||||
}
|
||||
|
||||
public void save() {
|
||||
Config config = skyblock.getFileManager().getConfig(new File(new File(skyblock.getDataFolder().toString() + "/visit-data"), islandOwnerUUID.toString() + ".yml"));
|
||||
|
||||
|
@ -121,7 +121,7 @@ public class VisitManager {
|
||||
Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
for (UUID visitorList : island.getVisitors()) {
|
||||
for (UUID visitorList : skyblock.getIslandManager().getVisitorsAtIsland(island)) {
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(visitorList);
|
||||
|
||||
LocationUtil.teleportPlayerToSpawn(targetPlayer);
|
||||
|
@ -84,6 +84,14 @@ Island:
|
||||
Invite:
|
||||
# Time until Island invite expires
|
||||
Time: 300
|
||||
Coop:
|
||||
# If enabled, cooped players will not be saved when they disconnect from the server.
|
||||
Unload: false
|
||||
Visit:
|
||||
Menu:
|
||||
# If disabled, any islands the player has been banned from will be removed when they
|
||||
# open the Island Visit menu.
|
||||
Bans: false
|
||||
Visitor:
|
||||
# When an Island is unloaded if enabled players won't be able to visit the Island
|
||||
# even if it's open.
|
||||
|
@ -289,6 +289,8 @@ Command:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eThat player is not a member of your Island."
|
||||
Yourself:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eYou cannot kick yourself from the Island."
|
||||
Cooped:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eYou cannot kick a cooped player."
|
||||
Role:
|
||||
Operator:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eYou cannot kick a member the Island the same role as you."
|
||||
@ -425,6 +427,30 @@ Command:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eYou are not an Island owner."
|
||||
Island:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eThat player is not a Member or owns an Island."
|
||||
Coop:
|
||||
Info:
|
||||
Message: "&f&oOpen the Island Coop menu or add/remove coop players."
|
||||
Permisison:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eYou do not have the right to do that."
|
||||
Invalid:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eInvalid: /island coop [<player>]"
|
||||
Owner:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eYou are not an Island owner."
|
||||
Found:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eA player by that name was not found."
|
||||
Yourself:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eYou cannot coop yourself because you're a Member of the Island."
|
||||
Member:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eThat player cannot be cooped because they are a Member of the Island."
|
||||
Banned:
|
||||
Message: "&bSkyBlock &8| &cError&8: &eYou cannot coop a banned player."
|
||||
Added:
|
||||
Message: "&bSkyBlock &8| &aInfo&8: &eYou have cooped the player &d%player&e."
|
||||
Removed:
|
||||
Sender:
|
||||
Message: "&bSkyBlock &8| &aInfo&8: &eYou have removed the coop player &d%player&e."
|
||||
Target:
|
||||
Message: "&bSkyBlock &8| &aInfo&8: &eYou are no longer a coop member of that Island."
|
||||
Members:
|
||||
Info:
|
||||
Message: "&f&oOpen the Island Members menu."
|
||||
@ -838,6 +864,12 @@ Island:
|
||||
Message: "&8[&bSkyBlock &8| &dChat&8] %role &e%player&8: &f%message"
|
||||
Untoggled:
|
||||
Message: "&bSkyBlock &8| &aInfo&8: &eThe Island chat has been untoggled because there are no Island members online. Chat messages will now be visible for all players."
|
||||
Coop:
|
||||
Removed:
|
||||
Owner:
|
||||
Message: "&bSkyBlock &8| &aInfo&8: &eYou have been removed from the island because the owner went offline."
|
||||
Operator:
|
||||
Message: "&bSkyBlock &8| &aInfo&8: &eYou have been removed from the island because the owner and no operators of the island are online."
|
||||
Admin:
|
||||
Creator:
|
||||
Permission:
|
||||
@ -1810,6 +1842,8 @@ Menu:
|
||||
Displayname: "&aSet Biome"
|
||||
Weather:
|
||||
Displayname: "&aSet Weather"
|
||||
CoopPlayers:
|
||||
Displayname: "&aCoop Players"
|
||||
Owner:
|
||||
Title: "&8Island Settings"
|
||||
Item:
|
||||
@ -2056,6 +2090,36 @@ Menu:
|
||||
- "&e%island_visitors"
|
||||
Visitor:
|
||||
Displayname: "&b%player"
|
||||
Coop:
|
||||
Title: "&8Island Coop"
|
||||
Item:
|
||||
Word:
|
||||
Enter: "Enter player"
|
||||
Exit:
|
||||
Displayname: "&cExit Island Coop"
|
||||
Previous:
|
||||
Displayname: "&a< Previous Page"
|
||||
Next:
|
||||
Displayname: "&aNext Page >"
|
||||
Barrier:
|
||||
Displayname: "&cCooped Players Below"
|
||||
Information:
|
||||
Displayname: "&bInformation"
|
||||
Lore:
|
||||
- "&7Allow certain players to"
|
||||
- "&7enter your Island while"
|
||||
- "&7an operator or owner is"
|
||||
- "&7online even if the island"
|
||||
- "&7island closed to visitors."
|
||||
- ""
|
||||
- "&eClick to coop a player!"
|
||||
Nothing:
|
||||
Displayname: "&cThere are no cooped players."
|
||||
Coop:
|
||||
Displayname: "&a%player"
|
||||
Lore:
|
||||
- ""
|
||||
- "&eClick to remove player!"
|
||||
Members:
|
||||
Title: "&8Island Members"
|
||||
Item:
|
||||
@ -2392,6 +2456,8 @@ Menu:
|
||||
Bans:
|
||||
Title: "&8Island Ban"
|
||||
Item:
|
||||
Word:
|
||||
Enter: "Enter player"
|
||||
Exit:
|
||||
Displayname: "&cExit Island Bans"
|
||||
Previous:
|
||||
@ -2400,10 +2466,14 @@ Menu:
|
||||
Displayname: "&aNext Page >"
|
||||
Barrier:
|
||||
Displayname: "&cIsland Bans Below"
|
||||
Statistics:
|
||||
Displayname: "&bIsland Bans"
|
||||
Information:
|
||||
Displayname: "&bInformation"
|
||||
Lore:
|
||||
- "&7Bans&8: &f%bans"
|
||||
- "&7Prevent certain players"
|
||||
- "&7from entering your Island"
|
||||
- "&7by banning them."
|
||||
- ""
|
||||
- "&eClick to ban a player!"
|
||||
Nothing:
|
||||
Displayname: "&cThere are no Bans at your Island."
|
||||
Ban:
|
||||
@ -2791,6 +2861,8 @@ Menu:
|
||||
Displayname: "&aSet Biome"
|
||||
Weather:
|
||||
Displayname: "&aSet Weather"
|
||||
CoopPlayers:
|
||||
Displayname: "&aCoop Players"
|
||||
Owner:
|
||||
Title: "&8Settings Editor - Island"
|
||||
Item:
|
||||
|
@ -1,6 +1,6 @@
|
||||
name: SkyBlock
|
||||
main: me.goodandevil.skyblock.SkyBlock
|
||||
version: 36
|
||||
version: 37
|
||||
api-version: 1.13
|
||||
description: A unique SkyBlock plugin
|
||||
author: GoodAndEvil
|
||||
|
@ -95,6 +95,7 @@ Settings:
|
||||
VisitorSpawn: true
|
||||
Biome: true
|
||||
Weather: true
|
||||
CoopPlayers: true
|
||||
Owner:
|
||||
NaturalMobSpawning: true
|
||||
MobGriefing: false
|
||||
|
Loading…
Reference in New Issue
Block a user