mirror of
https://github.com/songoda/FabledSkyBlock.git
synced 2025-01-25 08:51:33 +01:00
Added Whitelist status with API
This commit is contained in:
parent
05e7a0e2d5
commit
4448dd2a6f
@ -4,17 +4,20 @@ import com.songoda.skyblock.api.island.Island;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
@Deprecated
|
||||
public class IslandOpenEvent extends IslandEvent implements Cancellable {
|
||||
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final boolean open;
|
||||
private boolean cancelled = false;
|
||||
|
||||
|
||||
@Deprecated
|
||||
public IslandOpenEvent(Island island, boolean open) {
|
||||
super(island);
|
||||
this.open = open;
|
||||
}
|
||||
|
||||
|
||||
@Deprecated
|
||||
public boolean isOpen() {
|
||||
return open;
|
||||
}
|
||||
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.skyblock.api.event.island;
|
||||
|
||||
import com.songoda.skyblock.api.island.Island;
|
||||
import com.songoda.skyblock.api.island.IslandStatus;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
public class IslandStatusChangeEvent extends IslandEvent implements Cancellable {
|
||||
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final IslandStatus status;
|
||||
private boolean cancelled = false;
|
||||
|
||||
public IslandStatusChangeEvent(Island island, IslandStatus status) {
|
||||
super(island);
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public IslandStatus getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCancelled() {
|
||||
return cancelled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCancelled(boolean cancelled) {
|
||||
this.cancelled = cancelled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return HANDLERS;
|
||||
}
|
||||
|
||||
public HandlerList getHandlerList() {
|
||||
return HANDLERS;
|
||||
}
|
||||
}
|
@ -7,6 +7,7 @@ import com.songoda.skyblock.api.utils.APIUtil;
|
||||
import com.songoda.skyblock.api.visit.Visit;
|
||||
import com.songoda.skyblock.island.IslandCoop;
|
||||
import com.songoda.skyblock.island.IslandPermission;
|
||||
import com.songoda.skyblock.island.IslandStatus;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.WeatherType;
|
||||
@ -372,12 +373,14 @@ public class Island {
|
||||
/**
|
||||
* @return true of conditions met, false otherwise
|
||||
*/
|
||||
@Deprecated
|
||||
public boolean isOpen() {
|
||||
return handle.isOpen();
|
||||
return handle.getStatus().equals(IslandStatus.OPEN);
|
||||
}
|
||||
|
||||
|
||||
@Deprecated
|
||||
public void setOpen(boolean open) {
|
||||
this.handle.setOpen(open);
|
||||
this.handle.setStatus(open ? IslandStatus.OPEN : IslandStatus.CLOSED);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -0,0 +1,7 @@
|
||||
package com.songoda.skyblock.api.island;
|
||||
|
||||
public enum IslandStatus {
|
||||
OPEN,
|
||||
CLOSED,
|
||||
WHITELISTED
|
||||
}
|
@ -57,6 +57,32 @@ public final class APIUtil {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static com.songoda.skyblock.island.IslandStatus toImplementation(IslandStatus status) {
|
||||
switch (status) {
|
||||
case OPEN:
|
||||
return com.songoda.skyblock.island.IslandStatus.OPEN;
|
||||
case CLOSED:
|
||||
return com.songoda.skyblock.island.IslandStatus.CLOSED;
|
||||
case WHITELISTED:
|
||||
return com.songoda.skyblock.island.IslandStatus.WHITELISTED;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static IslandStatus fromImplementation(com.songoda.skyblock.island.IslandStatus status) {
|
||||
switch (status) {
|
||||
case OPEN:
|
||||
return IslandStatus.OPEN;
|
||||
case CLOSED:
|
||||
return IslandStatus.CLOSED;
|
||||
case WHITELISTED:
|
||||
return IslandStatus.WHITELISTED;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static com.songoda.skyblock.island.IslandRole toImplementation(IslandRole role) {
|
||||
switch (role) {
|
||||
|
@ -6,6 +6,7 @@ import com.songoda.skyblock.config.FileManager.Config;
|
||||
import com.songoda.skyblock.island.Island;
|
||||
import com.songoda.skyblock.island.IslandManager;
|
||||
import com.songoda.skyblock.island.IslandRole;
|
||||
import com.songoda.skyblock.island.IslandStatus;
|
||||
import com.songoda.skyblock.message.MessageManager;
|
||||
import com.songoda.skyblock.sound.SoundManager;
|
||||
import org.bukkit.command.ConsoleCommandSender;
|
||||
@ -33,7 +34,7 @@ public class CloseCommand extends SubCommand {
|
||||
} else if (island.hasRole(IslandRole.Owner, player.getUniqueId())
|
||||
|| (island.hasRole(IslandRole.Operator, player.getUniqueId())
|
||||
&& skyblock.getPermissionManager().hasPermission(island,"Visitor", IslandRole.Operator))) {
|
||||
if (island.isOpen()) {
|
||||
if (island.getStatus().equals(IslandStatus.OPEN) || island.getStatus().equals(IslandStatus.WHITELISTED)) {
|
||||
islandManager.closeIsland(island);
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Close.Closed.Message"));
|
||||
|
@ -10,6 +10,7 @@ import com.songoda.skyblock.cooldown.CooldownType;
|
||||
import com.songoda.skyblock.island.Island;
|
||||
import com.songoda.skyblock.island.IslandManager;
|
||||
import com.songoda.skyblock.island.IslandRole;
|
||||
import com.songoda.skyblock.island.IslandStatus;
|
||||
import com.songoda.skyblock.message.MessageManager;
|
||||
import com.songoda.skyblock.playerdata.PlayerData;
|
||||
import com.songoda.skyblock.playerdata.PlayerDataManager;
|
||||
@ -106,11 +107,11 @@ public class ConfirmCommand extends SubCommand {
|
||||
.getString("Command.Island.Confirmation.Ownership.Member.Message"));
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
||||
}
|
||||
} else if (confirmation == Confirmation.Reset) {
|
||||
} else if (confirmation.equals(Confirmation.Reset)) {
|
||||
playerData.setConfirmation(null);
|
||||
playerData.setConfirmationTime(0);
|
||||
} else if (confirmation == Confirmation.Deletion) {
|
||||
if (island.isOpen()) {
|
||||
} else if (confirmation.equals(Confirmation.Deletion)) {
|
||||
if (island.getStatus().equals(IslandStatus.OPEN)) {
|
||||
messageManager.sendMessage(player,
|
||||
configLoad.getString("Command.Island.Confirmation.Deletion.Open.Message"));
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
||||
|
@ -4,10 +4,7 @@ import com.songoda.core.compatibility.CompatibleSound;
|
||||
import com.songoda.skyblock.command.SubCommand;
|
||||
import com.songoda.skyblock.config.FileManager;
|
||||
import com.songoda.skyblock.config.FileManager.Config;
|
||||
import com.songoda.skyblock.island.Island;
|
||||
import com.songoda.skyblock.island.IslandCoop;
|
||||
import com.songoda.skyblock.island.IslandManager;
|
||||
import com.songoda.skyblock.island.IslandRole;
|
||||
import com.songoda.skyblock.island.*;
|
||||
import com.songoda.skyblock.menus.Coop;
|
||||
import com.songoda.skyblock.message.MessageManager;
|
||||
import com.songoda.skyblock.permission.PermissionManager;
|
||||
@ -85,7 +82,8 @@ public class CoopCommand extends SubCommand {
|
||||
} else if (island.isCoopPlayer(targetPlayerUUID)) {
|
||||
if (targetPlayer != null) {
|
||||
if (islandManager.getVisitorsAtIsland(island).contains(targetPlayerUUID)) {
|
||||
if (!island.isOpen()) {
|
||||
if (!(island.getStatus().equals(IslandStatus.OPEN) ||
|
||||
(island.getStatus().equals(IslandStatus.WHITELISTED) && island.isPlayerWhitelisted(player)))) {
|
||||
LocationUtil.teleportPlayerToSpawn(targetPlayer);
|
||||
|
||||
messageManager.sendMessage(targetPlayer,
|
||||
|
@ -8,6 +8,7 @@ import com.songoda.skyblock.config.FileManager.Config;
|
||||
import com.songoda.skyblock.island.Island;
|
||||
import com.songoda.skyblock.island.IslandManager;
|
||||
import com.songoda.skyblock.island.IslandRole;
|
||||
import com.songoda.skyblock.island.IslandStatus;
|
||||
import com.songoda.skyblock.message.MessageManager;
|
||||
import com.songoda.skyblock.sound.SoundManager;
|
||||
import com.songoda.skyblock.utils.world.LocationUtil;
|
||||
@ -39,7 +40,7 @@ public class KickAllCommand extends SubCommand {
|
||||
} else if (island.hasRole(IslandRole.Owner, player.getUniqueId())
|
||||
|| (island.hasRole(IslandRole.Operator, player.getUniqueId())
|
||||
&& skyblock.getPermissionManager().hasPermission(island, "Kick", IslandRole.Operator))) {
|
||||
if (island.isOpen()) {
|
||||
if (!island.getStatus().equals(IslandStatus.CLOSED)) {
|
||||
Set<UUID> islandVisitors = islandManager.getVisitorsAtIsland(island);
|
||||
|
||||
if (islandVisitors.size() == 0) {
|
||||
|
@ -6,6 +6,7 @@ import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.songoda.core.compatibility.CompatibleSound;
|
||||
import com.songoda.skyblock.island.IslandStatus;
|
||||
import com.songoda.skyblock.permission.PermissionManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -84,7 +85,7 @@ public class KickCommand extends SubCommand {
|
||||
} else if (island.getOwnerUUID().equals(targetPlayerUUID)) {
|
||||
messageManager.sendMessage(player, languageConfig.getFileConfiguration().getString("Command.Island.Kick.Role.Owner.Message"));
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
||||
} else if (island.isOpen() && islandVisitors.contains(targetPlayerUUID)) {
|
||||
} else if (!island.getStatus().equals(IslandStatus.CLOSED) && islandVisitors.contains(targetPlayerUUID)) {
|
||||
if (island.isCoopPlayer(targetPlayerUUID)) {
|
||||
messageManager.sendMessage(player, languageConfig.getFileConfiguration().getString("Command.Island.Kick.Cooped.Message"));
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
||||
@ -205,19 +206,27 @@ public class KickCommand extends SubCommand {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (island.isOpen()) {
|
||||
messageManager.sendMessage(player, languageConfig.getFileConfiguration().getString("Command.Island.Kick.Occupant.Visit.Open.Message"));
|
||||
} else {
|
||||
messageManager.sendMessage(player, languageConfig.getFileConfiguration().getString("Command.Island.Kick.Occupant.Visit.Closed.Message"));
|
||||
switch (island.getStatus()){
|
||||
case OPEN:
|
||||
case WHITELISTED:
|
||||
messageManager.sendMessage(player, languageConfig.getFileConfiguration().getString("Command.Island.Kick.Occupant.Visit.Open.Message"));
|
||||
break;
|
||||
case CLOSED:
|
||||
messageManager.sendMessage(player, languageConfig.getFileConfiguration().getString("Command.Island.Kick.Occupant.Visit.Closed.Message"));
|
||||
break;
|
||||
}
|
||||
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
||||
}
|
||||
} else {
|
||||
if (island.isOpen()) {
|
||||
messageManager.sendMessage(player, languageConfig.getFileConfiguration().getString("Command.Island.Kick.Permission.Visit.Open.Message"));
|
||||
} else {
|
||||
messageManager.sendMessage(player, languageConfig.getFileConfiguration().getString("Command.Island.Kick.Permission.Visit.Closed.Message"));
|
||||
switch (island.getStatus()){
|
||||
case OPEN:
|
||||
case WHITELISTED:
|
||||
messageManager.sendMessage(player, languageConfig.getFileConfiguration().getString("Command.Island.Kick.Permission.Visit.Open.Message"));
|
||||
break;
|
||||
case CLOSED:
|
||||
messageManager.sendMessage(player, languageConfig.getFileConfiguration().getString("Command.Island.Kick.Permission.Visit.Closed.Message"));
|
||||
break;
|
||||
}
|
||||
|
||||
soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F);
|
||||
|
@ -6,6 +6,7 @@ import com.songoda.skyblock.config.FileManager.Config;
|
||||
import com.songoda.skyblock.island.Island;
|
||||
import com.songoda.skyblock.island.IslandManager;
|
||||
import com.songoda.skyblock.island.IslandRole;
|
||||
import com.songoda.skyblock.island.IslandStatus;
|
||||
import com.songoda.skyblock.message.MessageManager;
|
||||
import com.songoda.skyblock.permission.PermissionManager;
|
||||
import com.songoda.skyblock.sound.SoundManager;
|
||||
@ -35,11 +36,11 @@ public class OpenCommand extends SubCommand {
|
||||
} else if (island.hasRole(IslandRole.Owner, player.getUniqueId())
|
||||
|| (island.hasRole(IslandRole.Operator, player.getUniqueId())
|
||||
&& permissionManager.hasPermission(island, "Visitor", IslandRole.Operator))) {
|
||||
if (island.isOpen()) {
|
||||
if (island.getStatus().equals(IslandStatus.OPEN)) {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Open.Already.Message"));
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
||||
} else {
|
||||
island.setOpen(true);
|
||||
island.setStatus(IslandStatus.OPEN);
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Open.Opened.Message"));
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_OPEN.getSound(), 1.0F, 1.0F);
|
||||
|
@ -6,6 +6,7 @@ import com.songoda.skyblock.config.FileManager.Config;
|
||||
import com.songoda.skyblock.island.Island;
|
||||
import com.songoda.skyblock.island.IslandManager;
|
||||
import com.songoda.skyblock.island.IslandRole;
|
||||
import com.songoda.skyblock.island.IslandStatus;
|
||||
import com.songoda.skyblock.message.MessageManager;
|
||||
import com.songoda.skyblock.sound.SoundManager;
|
||||
import org.bukkit.command.ConsoleCommandSender;
|
||||
@ -33,16 +34,25 @@ public class PublicCommand extends SubCommand {
|
||||
} else if (island.hasRole(IslandRole.Owner, player.getUniqueId())
|
||||
|| (island.hasRole(IslandRole.Operator, player.getUniqueId())
|
||||
&& skyblock.getPermissionManager().hasPermission(island, "Visitor", IslandRole.Operator))) {
|
||||
if (island.isOpen()) {
|
||||
islandManager.closeIsland(island);
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Public.Private.Message"));
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_CLOSE.getSound(), 1.0F, 1.0F);
|
||||
} else {
|
||||
island.setOpen(true);
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Public.Public.Message"));
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_OPEN.getSound(), 1.0F, 1.0F);
|
||||
switch (island.getStatus()) {
|
||||
case OPEN:
|
||||
islandManager.whitelistIsland(island);
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Public.Restricted.Message"));
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_CLOSE.getSound(), 1.0F, 1.0F);
|
||||
break;
|
||||
case CLOSED:
|
||||
islandManager.closeIsland(island);
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Public.Private.Message"));
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_CLOSE.getSound(), 1.0F, 1.0F);
|
||||
break;
|
||||
case WHITELISTED:
|
||||
island.setStatus(IslandStatus.OPEN);
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Public.Public.Message"));
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_OPEN.getSound(), 1.0F, 1.0F);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Public.Permission.Message"));
|
||||
|
@ -3,10 +3,7 @@ package com.songoda.skyblock.command.commands.island;
|
||||
import com.songoda.core.compatibility.CompatibleSound;
|
||||
import com.songoda.skyblock.command.SubCommand;
|
||||
import com.songoda.skyblock.config.FileManager.Config;
|
||||
import com.songoda.skyblock.island.Island;
|
||||
import com.songoda.skyblock.island.IslandEnvironment;
|
||||
import com.songoda.skyblock.island.IslandManager;
|
||||
import com.songoda.skyblock.island.IslandWorld;
|
||||
import com.songoda.skyblock.island.*;
|
||||
import com.songoda.skyblock.message.MessageManager;
|
||||
import com.songoda.skyblock.playerdata.PlayerDataManager;
|
||||
import com.songoda.skyblock.sound.SoundManager;
|
||||
@ -68,12 +65,17 @@ public class TeleportCommand extends SubCommand {
|
||||
if (islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)).isCoopPlayer(player.getUniqueId())) {
|
||||
isCoopPlayer = true;
|
||||
}
|
||||
if (islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)).isPlayerWhitelisted(player.getUniqueId())) {
|
||||
if (visit.getStatus().equals(IslandStatus.WHITELISTED) && islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)).isPlayerWhitelisted(player.getUniqueId())) {
|
||||
isWhitelistedPlayer = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (isCoopPlayer || isWhitelistedPlayer || player.hasPermission("fabledskyblock.bypass") || player.hasPermission("fabledskyblock.bypass.*") || player.hasPermission("fabledskyblock.*") || visit.isOpen()) {
|
||||
if (visit.getStatus().equals(IslandStatus.OPEN) ||
|
||||
isCoopPlayer ||
|
||||
isWhitelistedPlayer ||
|
||||
player.hasPermission("fabledskyblock.bypass") ||
|
||||
player.hasPermission("fabledskyblock.bypass.*") ||
|
||||
player.hasPermission("fabledskyblock.*")) {
|
||||
if (!islandManager.containsIsland(islandOwnerUUID)) {
|
||||
islandManager.loadIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID));
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ import com.songoda.skyblock.config.FileManager.Config;
|
||||
import com.songoda.skyblock.island.Island;
|
||||
import com.songoda.skyblock.island.IslandManager;
|
||||
import com.songoda.skyblock.island.IslandRole;
|
||||
import com.songoda.skyblock.island.IslandStatus;
|
||||
import com.songoda.skyblock.message.MessageManager;
|
||||
import com.songoda.skyblock.playerdata.PlayerData;
|
||||
import com.songoda.skyblock.playerdata.PlayerDataManager;
|
||||
@ -68,13 +69,13 @@ public class VoteCommand extends SubCommand {
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
||||
} else {
|
||||
Visit visit = visitManager.getIsland(islandOwnerUUID);
|
||||
if (!islandManager.containsIsland(islandOwnerUUID)) {
|
||||
islandManager.loadIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID));
|
||||
}
|
||||
|
||||
Island island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID));
|
||||
|
||||
if (visit.isOpen()) {
|
||||
if (!islandManager.containsIsland(islandOwnerUUID)) {
|
||||
islandManager.loadIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID));
|
||||
}
|
||||
|
||||
Island island = islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID));
|
||||
if (visit.getStatus().equals(IslandStatus.OPEN)) {
|
||||
|
||||
if (island.hasRole(IslandRole.Member, player.getUniqueId())
|
||||
|| island.hasRole(IslandRole.Operator, player.getUniqueId())
|
||||
|
@ -12,6 +12,7 @@ import com.songoda.skyblock.gui.GuiWelcomeEditor;
|
||||
import com.songoda.skyblock.island.Island;
|
||||
import com.songoda.skyblock.island.IslandPermission;
|
||||
import com.songoda.skyblock.island.IslandRole;
|
||||
import com.songoda.skyblock.island.IslandStatus;
|
||||
import com.songoda.skyblock.permission.BasicPermission;
|
||||
import com.songoda.skyblock.permission.PermissionManager;
|
||||
import com.songoda.skyblock.permission.PermissionType;
|
||||
@ -78,10 +79,19 @@ public class GuiPermissions extends Gui {
|
||||
}
|
||||
|
||||
Visit visit = island.getVisit();
|
||||
List<String> welcomeLore = TextUtils.formatText(configLoad.getStringList(
|
||||
island.isOpen()
|
||||
? "Menu.Settings.Visitor.Item.Statistics.Vote.Enabled.Closed.Lore"
|
||||
: "Menu.Settings.Visitor.Item.Statistics.Vote.Enabled.Open.Lore"));
|
||||
String configAddress = "";
|
||||
switch (island.getStatus()) {
|
||||
case OPEN:
|
||||
configAddress = "Menu.Settings.Visitor.Item.Statistics.Vote.Enabled.Open.Lore";
|
||||
break;
|
||||
case CLOSED:
|
||||
configAddress = "Menu.Settings.Visitor.Item.Statistics.Vote.Enabled.Closed.Lore";
|
||||
break;
|
||||
case WHITELISTED:
|
||||
configAddress = "Menu.Settings.Visitor.Item.Statistics.Vote.Enabled.Whitelisted.Lore";
|
||||
break;
|
||||
}
|
||||
List<String> welcomeLore = TextUtils.formatText(configLoad.getStringList(configAddress));
|
||||
|
||||
List<String> welcomeFinal = new ArrayList<>();
|
||||
|
||||
@ -95,12 +105,19 @@ public class GuiPermissions extends Gui {
|
||||
TextUtils.formatText(configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname")),
|
||||
welcomeFinal),
|
||||
(event -> {
|
||||
if (island.isOpen()) {
|
||||
plugin.getIslandManager().closeIsland(island);
|
||||
soundManager.playSound(event.player, CompatibleSound.BLOCK_WOODEN_DOOR_CLOSE.getSound(), 1f, 1f);
|
||||
} else {
|
||||
island.setOpen(true);
|
||||
soundManager.playSound(event.player, CompatibleSound.BLOCK_WOODEN_DOOR_OPEN.getSound(), 1f, 1f);
|
||||
switch (island.getStatus()) {
|
||||
case OPEN:
|
||||
plugin.getIslandManager().whitelistIsland(island);
|
||||
soundManager.playSound(event.player, CompatibleSound.BLOCK_WOODEN_DOOR_CLOSE.getSound(), 1f, 1f);
|
||||
break;
|
||||
case CLOSED:
|
||||
plugin.getIslandManager().closeIsland(island);
|
||||
soundManager.playSound(event.player, CompatibleSound.BLOCK_WOODEN_DOOR_CLOSE.getSound(), 1f, 1f);
|
||||
break;
|
||||
case WHITELISTED:
|
||||
island.setStatus(IslandStatus.OPEN);
|
||||
soundManager.playSound(event.player, CompatibleSound.BLOCK_WOODEN_DOOR_OPEN.getSound(), 1f, 1f);
|
||||
break;
|
||||
}
|
||||
paint();
|
||||
}));
|
||||
|
@ -45,6 +45,7 @@ public class Island {
|
||||
private UUID islandUUID;
|
||||
private UUID ownerUUID;
|
||||
private IslandLevel level;
|
||||
private IslandStatus status;
|
||||
private int size;
|
||||
private int maxMembers;
|
||||
private boolean deleted = false;
|
||||
@ -193,11 +194,33 @@ public class Island {
|
||||
whitelistedPlayers.add(UUID.fromString(whitelistedUUID));
|
||||
}
|
||||
}
|
||||
|
||||
if(configLoad.getString("Visitor.Open", null).equalsIgnoreCase("true") ||
|
||||
configLoad.getString("Visitor.Open", null).equalsIgnoreCase("false")) {
|
||||
if(configLoad.getBoolean("Visitor.Open")) {
|
||||
status = IslandStatus.OPEN;
|
||||
} else {
|
||||
status = IslandStatus.CLOSED;
|
||||
}
|
||||
configLoad.set("Visitor.Open", null);
|
||||
} else {
|
||||
IslandStatus status = IslandStatus.valueOf(configLoad.getString("Visitor.Status"));
|
||||
switch (status){
|
||||
case OPEN:
|
||||
case CLOSED:
|
||||
case WHITELISTED:
|
||||
this.status = status;
|
||||
break;
|
||||
default:
|
||||
this.status = IslandStatus.WHITELISTED;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
configLoad.set("UUID", islandUUID.toString());
|
||||
configLoad.set("Visitor.Open", mainConfigLoad.getBoolean("Island.Visitor.Open"));
|
||||
configLoad.set("Visitor.Status", mainConfigLoad.getString("Island.Visitor.Status"));
|
||||
configLoad.set("Border.Enable", mainConfig.getFileConfiguration().getBoolean("Island.WorldBorder.Default", false));
|
||||
configLoad.set("Border.Color", WorldBorder.Color.Blue.name());
|
||||
configLoad.set("Biome.Type", mainConfigLoad.getString("Island.Biome.Default.Type").toUpperCase());
|
||||
@ -742,22 +765,24 @@ public class Island {
|
||||
public void removeFromBank(double value) {
|
||||
addToBank(-value);
|
||||
}
|
||||
|
||||
public boolean isOpen() {
|
||||
return skyblock.getFileManager().getConfig(
|
||||
new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml"))
|
||||
.getFileConfiguration().getBoolean("Visitor.Open");
|
||||
|
||||
public IslandStatus getStatus() {
|
||||
return this.status;
|
||||
}
|
||||
|
||||
public void setOpen(boolean open) {
|
||||
IslandOpenEvent islandOpenEvent = new IslandOpenEvent(getAPIWrapper(), open);
|
||||
|
||||
public void setStatus(IslandStatus status) {
|
||||
IslandOpenEvent islandOpenEvent = new IslandOpenEvent(getAPIWrapper(), status.equals(IslandStatus.OPEN));
|
||||
Bukkit.getServer().getPluginManager().callEvent(islandOpenEvent);
|
||||
|
||||
if (!islandOpenEvent.isCancelled()) {
|
||||
skyblock.getFileManager().getConfig(
|
||||
new File(new File(skyblock.getDataFolder().toString() + "/island-data"), ownerUUID.toString() + ".yml"))
|
||||
.getFileConfiguration().set("Visitor.Open", open);
|
||||
getVisit().setOpen(open);
|
||||
if(islandOpenEvent.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
IslandStatusChangeEvent islandStatusChangeEvent = new IslandStatusChangeEvent(getAPIWrapper(), APIUtil.fromImplementation(status));
|
||||
Bukkit.getServer().getPluginManager().callEvent(islandStatusChangeEvent);
|
||||
if(!islandStatusChangeEvent.isCancelled()) {
|
||||
this.status = status;
|
||||
getVisit().setStatus(status);
|
||||
// TODO Save to config
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -239,7 +239,7 @@ public class IslandManager {
|
||||
new IslandLocation[]{island.getIslandLocation(IslandWorld.Normal, IslandEnvironment.Island), island.getIslandLocation(IslandWorld.Nether, IslandEnvironment.Island),
|
||||
island.getIslandLocation(IslandWorld.End, IslandEnvironment.Island)},
|
||||
island.getSize(), island.getRole(IslandRole.Member).size() + island.getRole(IslandRole.Operator).size() + 1, island.getBankBalance(), visitManager.getIslandSafeLevel(island.getOwnerUUID()), island.getLevel(),
|
||||
island.getMessage(IslandMessage.Signature), island.isOpen());
|
||||
island.getMessage(IslandMessage.Signature), island.getStatus());
|
||||
}
|
||||
|
||||
if (!banManager.hasIsland(island.getOwnerUUID())) banManager.createIsland(island.getOwnerUUID());
|
||||
@ -743,7 +743,7 @@ public class IslandManager {
|
||||
new IslandLocation[]{island.getIslandLocation(IslandWorld.Normal, IslandEnvironment.Island), island.getIslandLocation(IslandWorld.Nether, IslandEnvironment.Island),
|
||||
island.getIslandLocation(IslandWorld.End, IslandEnvironment.Island)},
|
||||
island.getSize(), island.getRole(IslandRole.Member).size() + island.getRole(IslandRole.Operator).size() + 1, island.getBankBalance(), visitManager.getIslandSafeLevel(island.getOwnerUUID()),
|
||||
island.getLevel(), island.getMessage(IslandMessage.Signature), island.isOpen());
|
||||
island.getLevel(), island.getMessage(IslandMessage.Signature), island.getStatus());
|
||||
}
|
||||
|
||||
if (!banManager.hasIsland(island.getOwnerUUID())) {
|
||||
@ -900,7 +900,7 @@ public class IslandManager {
|
||||
int nonIslandMembers = islandVisitors - getCoopPlayersAtIsland(island).size();
|
||||
|
||||
if (nonIslandMembers <= 0) {
|
||||
if (island.isOpen()) {
|
||||
if (island.getStatus().equals(IslandStatus.OPEN)) {
|
||||
return;
|
||||
} else if (player != null) {
|
||||
removeCoopPlayers(island, player.getUniqueId());
|
||||
@ -1177,7 +1177,7 @@ public class IslandManager {
|
||||
Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
island.setOpen(false);
|
||||
island.setStatus(IslandStatus.CLOSED);
|
||||
|
||||
UUID islandOwnerUUID = island.getOwnerUUID();
|
||||
Player islandOwnerPlayer = Bukkit.getServer().getPlayer(islandOwnerUUID);
|
||||
@ -1190,13 +1190,40 @@ public class IslandManager {
|
||||
}
|
||||
|
||||
for (UUID visitor : getVisitorsAtIsland(island)) {
|
||||
if (!island.isCoopPlayer(visitor) && !island.isPlayerWhitelisted(visitor)) {
|
||||
if (!island.isCoopPlayer(visitor)) {
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(visitor);
|
||||
LocationUtil.teleportPlayerToSpawn(targetPlayer);
|
||||
messageManager.sendMessage(targetPlayer, configLoad.getString("Island.Visit.Closed.Island.Message").replace("%player", islandOwnerPlayerName));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void whitelistIsland(Island island) {
|
||||
MessageManager messageManager = skyblock.getMessageManager();
|
||||
|
||||
Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
island.setStatus(IslandStatus.WHITELISTED);
|
||||
|
||||
UUID islandOwnerUUID = island.getOwnerUUID();
|
||||
Player islandOwnerPlayer = Bukkit.getServer().getPlayer(islandOwnerUUID);
|
||||
String islandOwnerPlayerName;
|
||||
|
||||
if (islandOwnerPlayer == null) {
|
||||
islandOwnerPlayerName = new OfflinePlayer(islandOwnerUUID).getName();
|
||||
} else {
|
||||
islandOwnerPlayerName = islandOwnerPlayer.getName();
|
||||
}
|
||||
|
||||
for (UUID visitor : getVisitorsAtIsland(island)) {
|
||||
if (!island.isCoopPlayer(visitor) && !island.isPlayerWhitelisted(visitor)) {
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(visitor);
|
||||
LocationUtil.teleportPlayerToSpawn(targetPlayer);
|
||||
messageManager.sendMessage(targetPlayer, configLoad.getString("Island.Visit.Whitelisted.Island.Message").replace("%player", islandOwnerPlayerName)); // TODO
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Island getIsland(org.bukkit.OfflinePlayer offlinePlayer) {
|
||||
PlayerDataManager playerDataManager = skyblock.getPlayerDataManager();
|
||||
|
@ -0,0 +1,7 @@
|
||||
package com.songoda.skyblock.island;
|
||||
|
||||
public enum IslandStatus {
|
||||
OPEN,
|
||||
CLOSED,
|
||||
WHITELISTED
|
||||
}
|
@ -179,7 +179,8 @@ public class Move implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
if(loadedIsland.isOpen() || loadedIsland.isPlayerWhitelisted(player)){
|
||||
if(loadedIsland.getStatus().equals(IslandStatus.OPEN) ||
|
||||
(loadedIsland.getStatus().equals(IslandStatus.WHITELISTED) && loadedIsland.isPlayerWhitelisted(player))){
|
||||
loadedIsland.getVisit().addVisitor(player.getUniqueId());
|
||||
return;
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import com.songoda.skyblock.api.island.Island;
|
||||
import com.songoda.skyblock.config.FileManager;
|
||||
import com.songoda.skyblock.config.FileManager.Config;
|
||||
import com.songoda.skyblock.island.IslandManager;
|
||||
import com.songoda.skyblock.island.IslandStatus;
|
||||
import com.songoda.skyblock.island.IslandWorld;
|
||||
import com.songoda.skyblock.message.MessageManager;
|
||||
import com.songoda.skyblock.playerdata.PlayerData;
|
||||
@ -98,7 +99,9 @@ public class Teleport implements Listener {
|
||||
if (island != null) {
|
||||
if (!island.getOwnerUUID().equals(playerData.getOwner())) {
|
||||
if (!player.hasPermission("fabledskyblock.bypass") && !player.hasPermission("fabledskyblock.bypass.*") && !player.hasPermission("fabledskyblock.*")) {
|
||||
if (!island.isOpen() && !island.isCoopPlayer(player.getUniqueId()) && !island.isPlayerWhitelisted(player)) {
|
||||
if (!island.getStatus().equals(IslandStatus.OPEN) &&
|
||||
!island.isCoopPlayer(player.getUniqueId()) &&
|
||||
!(island.getStatus().equals(IslandStatus.WHITELISTED) && island.isPlayerWhitelisted(player))) {
|
||||
event.setCancelled(true);
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Island.Visit.Closed.Plugin.Message"));
|
||||
|
@ -39,10 +39,16 @@ public final class ControlPanel {
|
||||
|
||||
final Island island = SkyBlock.getInstance().getIslandManager().getIsland((Player) player);
|
||||
|
||||
if (island.isOpen()) {
|
||||
Bukkit.getServer().getScheduler().runTaskLater(inst, () -> Bukkit.getServer().dispatchCommand(player, "island close"), 1L);
|
||||
} else {
|
||||
Bukkit.getServer().getScheduler().runTaskLater(inst, () -> Bukkit.getServer().dispatchCommand(player, "island open"), 1L);
|
||||
switch (island.getStatus()) {
|
||||
case OPEN:
|
||||
Bukkit.getServer().getScheduler().runTaskLater(inst, () -> Bukkit.getServer().dispatchCommand(player, "island whitelist on"), 1L);
|
||||
break;
|
||||
case CLOSED:
|
||||
Bukkit.getServer().getScheduler().runTaskLater(inst, () -> Bukkit.getServer().dispatchCommand(player, "island open"), 1L);
|
||||
break;
|
||||
case WHITELISTED:
|
||||
Bukkit.getServer().getScheduler().runTaskLater(inst, () -> Bukkit.getServer().dispatchCommand(player, "island close"), 1L);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -8,6 +8,7 @@ import com.songoda.skyblock.config.FileManager.Config;
|
||||
import com.songoda.skyblock.island.Island;
|
||||
import com.songoda.skyblock.island.IslandManager;
|
||||
import com.songoda.skyblock.island.IslandRole;
|
||||
import com.songoda.skyblock.island.IslandStatus;
|
||||
import com.songoda.skyblock.message.MessageManager;
|
||||
import com.songoda.skyblock.placeholder.Placeholder;
|
||||
import com.songoda.skyblock.playerdata.PlayerData;
|
||||
@ -76,7 +77,7 @@ public class Information {
|
||||
}
|
||||
|
||||
if (viewer.getType() == Information.Viewer.Type.Visitors) {
|
||||
if (island.isOpen()) {
|
||||
if (!island.getStatus().equals(IslandStatus.CLOSED)) {
|
||||
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
||||
messageManager.sendMessage(player,
|
||||
configLoad.getString("Island.Information.Visitors.Message"));
|
||||
|
@ -286,12 +286,19 @@ public class Settings {
|
||||
} else if ((is.getType() == Material.PAINTING) && (is.hasItemMeta()) && (is.getItemMeta()
|
||||
.getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad
|
||||
.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"))))) {
|
||||
if (island14.isOpen()) {
|
||||
islandManager.closeIsland(island14);
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_CLOSE.getSound(), 1.0F, 1.0F);
|
||||
} else {
|
||||
island14.setOpen(true);
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_OPEN.getSound(), 1.0F, 1.0F);
|
||||
switch (island14.getStatus()) {
|
||||
case OPEN:
|
||||
islandManager.whitelistIsland(island14);
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_CLOSE.getSound(), 1.0F, 1.0F);
|
||||
break;
|
||||
case CLOSED:
|
||||
island14.setStatus(IslandStatus.OPEN);
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_OPEN.getSound(), 1.0F, 1.0F);
|
||||
break;
|
||||
case WHITELISTED:
|
||||
islandManager.closeIsland(island14);
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_CLOSE.getSound(), 1.0F, 1.0F);
|
||||
break;
|
||||
}
|
||||
|
||||
Bukkit.getServer().getScheduler().runTaskLater(skyblock, () -> open(player, Type.Role, IslandRole.Visitor, null), 1L);
|
||||
@ -349,46 +356,73 @@ 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"),
|
||||
new Placeholder[]{new Placeholder("%visits", "" + visit.getVisitors().size()),
|
||||
new Placeholder("%votes", "" + visit.getVoters().size()),
|
||||
new Placeholder("%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"),
|
||||
new Placeholder[]{new Placeholder("%visits", "" + visit.getVisitors().size()),
|
||||
new Placeholder("%votes", "" + visit.getVoters().size()),
|
||||
new Placeholder("%visitors",
|
||||
"" + islandManager.getVisitorsAtIsland(island).size())},
|
||||
null, null), 4);
|
||||
switch (visit.getStatus()){
|
||||
case OPEN:
|
||||
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"),
|
||||
new Placeholder[]{new Placeholder("%visits", "" + visit.getVisitors().size()),
|
||||
new Placeholder("%votes", "" + visit.getVoters().size()),
|
||||
new Placeholder("%visitors",
|
||||
"" + islandManager.getVisitorsAtIsland(island).size())},
|
||||
null, null), 4);
|
||||
break;
|
||||
case CLOSED:
|
||||
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"),
|
||||
new Placeholder[]{new Placeholder("%visits", "" + visit.getVisitors().size()),
|
||||
new Placeholder("%votes", "" + visit.getVoters().size()),
|
||||
new Placeholder("%visitors",
|
||||
"" + islandManager.getVisitorsAtIsland(island).size())},
|
||||
null, null), 4);
|
||||
break;
|
||||
case WHITELISTED:
|
||||
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.Whitelisted.Lore"),
|
||||
new Placeholder[]{new Placeholder("%visits", "" + visit.getVisitors().size()),
|
||||
new Placeholder("%votes", "" + visit.getVoters().size()),
|
||||
new Placeholder("%visitors",
|
||||
"" + islandManager.getVisitorsAtIsland(island).size())},
|
||||
null, null), 4);
|
||||
break;
|
||||
}
|
||||
} 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"),
|
||||
new Placeholder[]{new Placeholder("%visits", "" + visit.getVisitors().size()),
|
||||
new Placeholder("%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"),
|
||||
new Placeholder[]{new Placeholder("%visits", "" + visit.getVisitors().size()),
|
||||
new Placeholder("%visitors",
|
||||
"" + islandManager.getVisitorsAtIsland(island).size())},
|
||||
null, null), 4);
|
||||
switch (visit.getStatus()){
|
||||
case OPEN:
|
||||
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"),
|
||||
new Placeholder[]{new Placeholder("%visits", "" + visit.getVisitors().size()),
|
||||
new Placeholder("%visitors",
|
||||
"" + islandManager.getVisitorsAtIsland(island).size())},
|
||||
null, null), 4);
|
||||
break;
|
||||
case CLOSED:
|
||||
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"),
|
||||
new Placeholder[]{new Placeholder("%visits", "" + visit.getVisitors().size()),
|
||||
new Placeholder("%visitors",
|
||||
"" + islandManager.getVisitorsAtIsland(island).size())},
|
||||
null, null), 4);
|
||||
break;
|
||||
case WHITELISTED:
|
||||
nInv.addItem(nInv.createItem(new ItemStack(Material.PAINTING),
|
||||
configLoad.getString("Menu.Settings.Visitor.Item.Statistics.Displayname"),
|
||||
configLoad.getStringList(
|
||||
"Menu.Settings.Visitor.Item.Statistics.Vote.Whitelisted.Closed.Lore"),
|
||||
new Placeholder[]{new Placeholder("%visits", "" + visit.getVisitors().size()),
|
||||
new Placeholder("%visitors",
|
||||
"" + islandManager.getVisitorsAtIsland(island).size())},
|
||||
null, null), 4);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1049,12 +1083,19 @@ public class Settings {
|
||||
&& (is.getItemMeta().getDisplayName().equals(
|
||||
ChatColor.translateAlternateColorCodes('&', configLoad.getString(
|
||||
"Menu.Settings.Visitor.Item.Statistics.Displayname"))))) {
|
||||
if (island15.isOpen()) {
|
||||
islandManager.closeIsland(island15);
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_CLOSE.getSound(), 1.0F, 1.0F);
|
||||
} else {
|
||||
island15.setOpen(true);
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_OPEN.getSound(), 1.0F, 1.0F);
|
||||
switch (island15.getStatus()) {
|
||||
case OPEN:
|
||||
islandManager.whitelistIsland(island15);
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_CLOSE.getSound(), 1.0F, 1.0F);
|
||||
break;
|
||||
case CLOSED:
|
||||
island15.setStatus(IslandStatus.OPEN);
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_OPEN.getSound(), 1.0F, 1.0F);
|
||||
break;
|
||||
case WHITELISTED:
|
||||
islandManager.closeIsland(island15);
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_CLOSE.getSound(), 1.0F, 1.0F);
|
||||
break;
|
||||
}
|
||||
|
||||
Bukkit.getServer().getScheduler().runTaskLater(skyblock,
|
||||
@ -1300,12 +1341,19 @@ public class Settings {
|
||||
&& (is.getItemMeta().getDisplayName().equals(
|
||||
ChatColor.translateAlternateColorCodes('&', configLoad.getString(
|
||||
"Menu.Settings.Visitor.Item.Statistics.Displayname"))))) {
|
||||
if (island12.isOpen()) {
|
||||
islandManager.closeIsland(island12);
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_CLOSE.getSound(), 1.0F, 1.0F);
|
||||
} else {
|
||||
island12.setOpen(true);
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_OPEN.getSound(), 1.0F, 1.0F);
|
||||
switch (island12.getStatus()) {
|
||||
case OPEN:
|
||||
islandManager.whitelistIsland(island12);
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_CLOSE.getSound(), 1.0F, 1.0F);
|
||||
break;
|
||||
case CLOSED:
|
||||
island12.setStatus(IslandStatus.OPEN);
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_OPEN.getSound(), 1.0F, 1.0F);
|
||||
break;
|
||||
case WHITELISTED:
|
||||
islandManager.closeIsland(island12);
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_WOODEN_DOOR_CLOSE.getSound(), 1.0F, 1.0F);
|
||||
break;
|
||||
}
|
||||
|
||||
Bukkit.getServer().getScheduler().runTaskLater(skyblock,
|
||||
|
@ -9,6 +9,7 @@ import com.songoda.skyblock.config.FileManager.Config;
|
||||
import com.songoda.skyblock.island.Island;
|
||||
import com.songoda.skyblock.island.IslandManager;
|
||||
import com.songoda.skyblock.island.IslandRole;
|
||||
import com.songoda.skyblock.island.IslandStatus;
|
||||
import com.songoda.skyblock.message.MessageManager;
|
||||
import com.songoda.skyblock.placeholder.Placeholder;
|
||||
import com.songoda.skyblock.playerdata.PlayerData;
|
||||
@ -153,14 +154,15 @@ public class Visit {
|
||||
if (islandManager.getIsland(offlinePlayer).isCoopPlayer(player.getUniqueId())) {
|
||||
isCoopPlayer = true;
|
||||
}
|
||||
if (islandManager.getIsland(offlinePlayer).isPlayerWhitelisted(player.getUniqueId())) {
|
||||
if (visit.getStatus().equals(IslandStatus.WHITELISTED) &&
|
||||
islandManager.getIsland(offlinePlayer).isPlayerWhitelisted(player.getUniqueId())) {
|
||||
isWhitelistedPlayer = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (isCoopPlayer || isWhitelistedPlayer || player.hasPermission("fabledskyblock.bypass")
|
||||
if (visit.getStatus().equals(IslandStatus.OPEN) || isCoopPlayer || isWhitelistedPlayer || player.hasPermission("fabledskyblock.bypass")
|
||||
|| player.hasPermission("fabledskyblock.bypass.*")
|
||||
|| player.hasPermission("fabledskyblock.*") || visit.isOpen()) {
|
||||
|| player.hasPermission("fabledskyblock.*")) {
|
||||
if (!islandManager.containsIsland(targetPlayerUUID)) {
|
||||
islandManager.loadIsland(Bukkit.getServer().getOfflinePlayer(targetPlayerUUID));
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.songoda.core.compatibility.CompatibleMaterial;
|
||||
import com.songoda.skyblock.island.IslandStatus;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
@ -90,7 +91,7 @@ public class PlaceholderManager {
|
||||
return ChatColor.translateAlternateColorCodes('&',
|
||||
configLoad.getString("Placeholder.fabledskyblock_island_isopen.Empty.Message"));
|
||||
} else {
|
||||
if (island.isOpen()) {
|
||||
if (island.getStatus().equals(IslandStatus.OPEN)) { // TODO Update to Status
|
||||
return ChatColor.translateAlternateColorCodes('&',
|
||||
configLoad.getString("Placeholder.fabledskyblock_island_isopen.Open.Message"));
|
||||
} else {
|
||||
|
@ -171,8 +171,8 @@ public class PlayerDataManager {
|
||||
islandManager.updateFlight(player);
|
||||
|
||||
return;
|
||||
} else if (island.isOpen() || island.isCoopPlayer(player.getUniqueId())) {
|
||||
if (!island.isOpen() && island.isCoopPlayer(player.getUniqueId())) {
|
||||
} else if (!island.getStatus().equals(IslandStatus.CLOSED) || island.isCoopPlayer(player.getUniqueId())) {
|
||||
if (island.getStatus().equals(IslandStatus.CLOSED) && island.isCoopPlayer(player.getUniqueId())) {
|
||||
if (islandManager.removeCoopPlayers(island, null)) {
|
||||
return;
|
||||
}
|
||||
@ -253,8 +253,8 @@ public class PlayerDataManager {
|
||||
island = islandManager.getIsland(offlinePlayer);
|
||||
|
||||
if (island != null) {
|
||||
if (island.isOpen() || island.isCoopPlayer(player.getUniqueId())) {
|
||||
if (!island.isOpen() && island.isCoopPlayer(player.getUniqueId())) {
|
||||
if (!island.getStatus().equals(IslandStatus.CLOSED) || island.isCoopPlayer(player.getUniqueId())) {
|
||||
if (island.getStatus().equals(IslandStatus.CLOSED) && island.isCoopPlayer(player.getUniqueId())) {
|
||||
if (islandManager.removeCoopPlayers(island, null)) {
|
||||
islandManager.unloadIsland(island, Bukkit.getServer().getOfflinePlayer(visitIslandList));
|
||||
|
||||
|
@ -5,6 +5,7 @@ import com.songoda.skyblock.ban.Ban;
|
||||
import com.songoda.skyblock.config.FileManager;
|
||||
import com.songoda.skyblock.island.IslandLevel;
|
||||
import com.songoda.skyblock.island.IslandLocation;
|
||||
import com.songoda.skyblock.island.IslandStatus;
|
||||
import com.songoda.skyblock.island.IslandWorld;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
|
||||
@ -24,11 +25,11 @@ public class Visit {
|
||||
private int safeLevel;
|
||||
private double islandBankBalance;
|
||||
private List<String> islandSignature;
|
||||
|
||||
private boolean open;
|
||||
|
||||
private IslandStatus status;
|
||||
|
||||
protected Visit(SkyBlock skyblock, UUID islandOwnerUUID, IslandLocation[] islandLocations, int islandSize,
|
||||
int islandMembers, double islandBankBalance, int safeLevel, IslandLevel islandLevel, List<String> islandSignature, boolean open) {
|
||||
int islandMembers, double islandBankBalance, int safeLevel, IslandLevel islandLevel, List<String> islandSignature, IslandStatus status) {
|
||||
this.skyblock = skyblock;
|
||||
this.islandOwnerUUID = islandOwnerUUID;
|
||||
this.islandLocations = islandLocations;
|
||||
@ -38,7 +39,7 @@ public class Visit {
|
||||
this.safeLevel = safeLevel;
|
||||
this.islandLevel = islandLevel;
|
||||
this.islandSignature = islandSignature;
|
||||
this.open = open;
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public UUID getOwnerUUID() {
|
||||
@ -203,14 +204,6 @@ public class Visit {
|
||||
this.islandSignature = islandSignature;
|
||||
}
|
||||
|
||||
public boolean isOpen() {
|
||||
return open;
|
||||
}
|
||||
|
||||
public void setOpen(boolean open) {
|
||||
this.open = open;
|
||||
}
|
||||
|
||||
public Ban getBan() {
|
||||
return skyblock.getBanManager().getIsland(getOwnerUUID());
|
||||
}
|
||||
@ -225,4 +218,12 @@ public class Visit {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public IslandStatus getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(IslandStatus status) {
|
||||
this.status = status;
|
||||
}
|
||||
}
|
||||
|
@ -3,10 +3,7 @@ package com.songoda.skyblock.visit;
|
||||
import com.songoda.core.compatibility.CompatibleSound;
|
||||
import com.songoda.skyblock.SkyBlock;
|
||||
import com.songoda.skyblock.config.FileManager;
|
||||
import com.songoda.skyblock.island.Island;
|
||||
import com.songoda.skyblock.island.IslandLevel;
|
||||
import com.songoda.skyblock.island.IslandLocation;
|
||||
import com.songoda.skyblock.island.IslandWorld;
|
||||
import com.songoda.skyblock.island.*;
|
||||
import com.songoda.skyblock.message.MessageManager;
|
||||
import com.songoda.skyblock.sound.SoundManager;
|
||||
import com.songoda.skyblock.utils.world.LocationUtil;
|
||||
@ -92,7 +89,7 @@ public class VisitManager {
|
||||
+ configLoad.getStringList("Operators").size() + 1,
|
||||
configLoad.getDouble("Bank.Balance", 0),
|
||||
getIslandSafeLevel(islandOwnerUUID), new IslandLevel(islandOwnerUUID, skyblock),
|
||||
islandSignature, configLoad.getBoolean("Visitor.Open"));
|
||||
islandSignature, IslandStatus.valueOf(configLoad.getString("Visitor.Status")));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -190,7 +187,7 @@ public class VisitManager {
|
||||
UUID islandOwnerUUID = it.next();
|
||||
Visit visit = visitIslands.get(islandOwnerUUID);
|
||||
|
||||
if (!visit.isOpen()) {
|
||||
if (!visit.getStatus().equals(IslandStatus.OPEN)) {
|
||||
visitIslands.remove(islandOwnerUUID);
|
||||
}
|
||||
}
|
||||
@ -199,9 +196,9 @@ public class VisitManager {
|
||||
}
|
||||
|
||||
public void createIsland(UUID islandOwnerUUID, IslandLocation[] islandLocations, int islandSize, int islandMembers,
|
||||
double islandBankBalance, int safeLevel, IslandLevel islandLevel, List<String> islandSignature, boolean open) {
|
||||
double islandBankBalance, int safeLevel, IslandLevel islandLevel, List<String> islandSignature, IslandStatus status) {
|
||||
visitStorage.put(islandOwnerUUID, new Visit(skyblock, islandOwnerUUID, islandLocations, islandSize,
|
||||
islandMembers, islandBankBalance, safeLevel, islandLevel, islandSignature, open));
|
||||
islandMembers, islandBankBalance, safeLevel, islandLevel, islandSignature, status));
|
||||
}
|
||||
|
||||
public void addIsland(UUID islandOwnerUUID, Visit visit) {
|
||||
|
@ -145,8 +145,8 @@ Island:
|
||||
# even if it's open.
|
||||
# [!] Enabling will prevent possible memory leak issues affecting performance.
|
||||
Unload: false
|
||||
# Upon Island creation is the Island open to visit?
|
||||
Open: false
|
||||
# The island status upon island creation (Open, Closed, Whitelisted)
|
||||
Status: Whitelisted
|
||||
# Allow players to vote for Islands. This will filter Islands with more votes first
|
||||
# in the Visit Island menu.
|
||||
Vote: true
|
||||
|
@ -1039,6 +1039,8 @@ Command:
|
||||
Message: '&bSkyBlock &8| &aInfo&8: &eYour Island is now &cPrivate&e.'
|
||||
Public:
|
||||
Message: '&bSkyBlock &8| &aInfo&8: &eYour Island is now &aPublic&e.'
|
||||
Restricted:
|
||||
Message: '&bSkyBlock &8| &aInfo&8: &eYour Island is now &eRestricted&e.'
|
||||
Leaderboard:
|
||||
Disabled:
|
||||
Message: '&bSkyBlock &8| &cError&8: &eYou cannot view that leaderboard because it has been disabled.'
|
||||
@ -1362,13 +1364,19 @@ Menu:
|
||||
- ''
|
||||
- '&7Current Visitors&8: &a%visitors'
|
||||
- ''
|
||||
- '&eClick to close Island!'
|
||||
- '&eClick to enable Whitelist!'
|
||||
Closed:
|
||||
Lore:
|
||||
- '&7Island Visits&8: &e%visitors'
|
||||
- '&7Island Votes&8: &e%votes'
|
||||
- ''
|
||||
- '&aClick to open Island!'
|
||||
Whitelisted:
|
||||
Lore:
|
||||
- '&7Island Visits&8: &e%visitors'
|
||||
- '&7Island Votes&8: &e%votes'
|
||||
- ''
|
||||
- '&aClick to close Island!'
|
||||
Disabled:
|
||||
Closed:
|
||||
Lore:
|
||||
@ -1381,7 +1389,13 @@ Menu:
|
||||
- ''
|
||||
- '&7Current Visitors&8: &a%visitors'
|
||||
- ''
|
||||
- '&eClick to close Island!'
|
||||
- '&eClick to enable Whitelist!'
|
||||
Whitelisted:
|
||||
Lore:
|
||||
- '&7Island Visits&8: &e%visitors'
|
||||
- '&7Island Votes&8: &e%votes'
|
||||
- ''
|
||||
- '&aClick to close Island!'
|
||||
Displayname: '&aIsland Visit Statistics'
|
||||
Signature:
|
||||
Displayname: '&bIsland Signature'
|
||||
|
Loading…
Reference in New Issue
Block a user