mirror of
https://github.com/songoda/FabledSkyBlock.git
synced 2025-02-17 04:02:04 +01:00
Island whitelist
This commit is contained in:
parent
642c64981a
commit
35b98f5c3b
@ -62,14 +62,18 @@ public class TeleportCommand extends SubCommand {
|
||||
if (visitManager.hasIsland(islandOwnerUUID)) {
|
||||
Visit visit = visitManager.getIsland(islandOwnerUUID);
|
||||
boolean isCoopPlayer = false;
|
||||
boolean isWhitelistedPlayer = false;
|
||||
|
||||
if (islandManager.containsIsland(islandOwnerUUID)) {
|
||||
if (islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)).isCoopPlayer(player.getUniqueId())) {
|
||||
isCoopPlayer = true;
|
||||
}
|
||||
if (islandManager.getIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID)).isPlayerWhitelisted(player.getUniqueId())) {
|
||||
isWhitelistedPlayer = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (isCoopPlayer || player.hasPermission("fabledskyblock.bypass") || player.hasPermission("fabledskyblock.bypass.*") || player.hasPermission("fabledskyblock.*") || visit.isOpen()) {
|
||||
if (isCoopPlayer || isWhitelistedPlayer || player.hasPermission("fabledskyblock.bypass") || player.hasPermission("fabledskyblock.bypass.*") || player.hasPermission("fabledskyblock.*") || visit.isOpen()) {
|
||||
if (!islandManager.containsIsland(islandOwnerUUID)) {
|
||||
islandManager.loadIsland(Bukkit.getServer().getOfflinePlayer(islandOwnerUUID));
|
||||
}
|
||||
|
@ -30,9 +30,6 @@ public class VisitorsCommand extends SubCommand {
|
||||
if (island == null) {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Visitors.Owner.Message"));
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
||||
} else if (!island.isOpen()) {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Visitors.Closed.Message"));
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
||||
} else if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Visitors.Visitors.Message"));
|
||||
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
||||
|
@ -10,7 +10,6 @@ import com.songoda.skyblock.config.FileManager;
|
||||
import com.songoda.skyblock.config.FileManager.Config;
|
||||
import com.songoda.skyblock.message.MessageManager;
|
||||
import com.songoda.skyblock.permission.BasicPermission;
|
||||
import com.songoda.skyblock.permission.PermissionManager;
|
||||
import com.songoda.skyblock.playerdata.PlayerData;
|
||||
import com.songoda.skyblock.sound.SoundManager;
|
||||
import com.songoda.skyblock.upgrade.Upgrade;
|
||||
@ -26,7 +25,6 @@ import org.bukkit.WeatherType;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@ -39,9 +37,10 @@ public class Island {
|
||||
private final SkyBlock skyblock;
|
||||
private final com.songoda.skyblock.api.island.Island apiWrapper;
|
||||
|
||||
private Map<IslandRole, List<IslandPermission>> islandPermissions = new HashMap<>();
|
||||
private List<IslandLocation> islandLocations = new ArrayList<>();
|
||||
private Map<UUID, IslandCoop> coopPlayers = new HashMap<>();
|
||||
private final Map<IslandRole, List<IslandPermission>> islandPermissions = new HashMap<>();
|
||||
private final List<IslandLocation> islandLocations = new ArrayList<>();
|
||||
private final Map<UUID, IslandCoop> coopPlayers = new HashMap<>();
|
||||
private final Set<UUID> whitelistedPlayers = new HashSet<>();
|
||||
|
||||
private UUID islandUUID;
|
||||
private UUID ownerUUID;
|
||||
@ -188,6 +187,12 @@ public class Island {
|
||||
|
||||
islandPermissions.put(roleList, permissions);
|
||||
}
|
||||
|
||||
if (configLoad.getString("Whitelist") != null) {
|
||||
for (String whitelistedUUID : configLoad.getStringList("Whitelist")) {
|
||||
whitelistedPlayers.add(UUID.fromString(whitelistedUUID));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
FileConfiguration configLoad = config.getFileConfiguration();
|
||||
|
||||
@ -841,6 +846,8 @@ public class Island {
|
||||
|
||||
Config config = fileManager
|
||||
.getConfig(new File(skyblock.getDataFolder().toString() + "/island-data", ownerUUID.toString() + ".yml"));
|
||||
|
||||
config.getFileConfiguration().set("Whitelist", whitelistedPlayers);
|
||||
|
||||
try {
|
||||
config.getFileConfiguration().save(config.getFile());
|
||||
@ -926,5 +933,31 @@ public class Island {
|
||||
public com.songoda.skyblock.api.island.Island getAPIWrapper() {
|
||||
return apiWrapper;
|
||||
}
|
||||
|
||||
public void addWhitelistedPlayer(UUID uuid) {
|
||||
this.whitelistedPlayers.add(uuid);
|
||||
Bukkit.getScheduler().runTaskAsynchronously(skyblock, this::save);
|
||||
}
|
||||
|
||||
public boolean isPlayerWhitelisted(UUID uuid) {
|
||||
return this.whitelistedPlayers.contains(uuid);
|
||||
}
|
||||
|
||||
public void removeWhitelistedPlayer(UUID uuid) {
|
||||
this.whitelistedPlayers.remove(uuid);
|
||||
Bukkit.getScheduler().runTaskAsynchronously(skyblock, this::save);
|
||||
}
|
||||
|
||||
public void addWhitelistedPlayer(Player player) {
|
||||
this.addWhitelistedPlayer(player.getUniqueId());
|
||||
}
|
||||
|
||||
public boolean isPlayerWhitelisted(Player player) {
|
||||
return this.isPlayerWhitelisted(player.getUniqueId());
|
||||
}
|
||||
|
||||
public void removeWhitelistedPlayer(Player player) {
|
||||
this.removeWhitelistedPlayer(player.getUniqueId());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1189,9 +1189,9 @@ public class IslandManager {
|
||||
islandOwnerPlayerName = islandOwnerPlayer.getName();
|
||||
}
|
||||
|
||||
for (UUID visitorList : getVisitorsAtIsland(island)) {
|
||||
if (!island.isCoopPlayer(visitorList)) {
|
||||
Player targetPlayer = Bukkit.getServer().getPlayer(visitorList);
|
||||
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.Closed.Island.Message").replace("%player", islandOwnerPlayerName));
|
||||
}
|
||||
|
@ -179,7 +179,7 @@ public class Move implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
if(loadedIsland.isOpen()){
|
||||
if(loadedIsland.isOpen() || loadedIsland.isPlayerWhitelisted(player)){
|
||||
loadedIsland.getVisit().addVisitor(player.getUniqueId());
|
||||
return;
|
||||
}
|
||||
|
@ -98,7 +98,7 @@ 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())) {
|
||||
if (!island.isOpen() && !island.isCoopPlayer(player.getUniqueId()) && !island.isPlayerWhitelisted(player)) {
|
||||
event.setCancelled(true);
|
||||
|
||||
messageManager.sendMessage(player, configLoad.getString("Island.Visit.Closed.Plugin.Message"));
|
||||
|
@ -145,6 +145,7 @@ public class Visit {
|
||||
if (visitManager.hasIsland(targetPlayerUUID)) {
|
||||
com.songoda.skyblock.visit.Visit visit = visitManager.getIsland(targetPlayerUUID);
|
||||
boolean isCoopPlayer = false;
|
||||
boolean isWhitelistedPlayer = false;
|
||||
org.bukkit.OfflinePlayer offlinePlayer = Bukkit.getServer()
|
||||
.getOfflinePlayer(targetPlayerUUID);
|
||||
|
||||
@ -152,9 +153,12 @@ public class Visit {
|
||||
if (islandManager.getIsland(offlinePlayer).isCoopPlayer(player.getUniqueId())) {
|
||||
isCoopPlayer = true;
|
||||
}
|
||||
if (islandManager.getIsland(offlinePlayer).isPlayerWhitelisted(player.getUniqueId())) {
|
||||
isWhitelistedPlayer = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (isCoopPlayer || player.hasPermission("fabledskyblock.bypass")
|
||||
if (isCoopPlayer || isWhitelistedPlayer || player.hasPermission("fabledskyblock.bypass")
|
||||
|| player.hasPermission("fabledskyblock.bypass.*")
|
||||
|| player.hasPermission("fabledskyblock.*") || visit.isOpen()) {
|
||||
if (!islandManager.containsIsland(targetPlayerUUID)) {
|
||||
|
Loading…
Reference in New Issue
Block a user