mirror of
https://github.com/songoda/FabledSkyBlock.git
synced 2024-09-28 22:47:26 +02:00
Merge branch 'development'
This commit is contained in:
commit
35ec9d59f9
15
pom.xml
15
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>com.songoda</groupId>
|
<groupId>com.songoda</groupId>
|
||||||
<artifactId>skyblock</artifactId>
|
<artifactId>skyblock</artifactId>
|
||||||
<version>2.3.29</version>
|
<version>2.3.30</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
@ -218,19 +218,6 @@
|
|||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>be.maximvdw</groupId>
|
|
||||||
<artifactId>MVdWPlaceholderAPI</artifactId>
|
|
||||||
<version>2.1.1-SNAPSHOT</version>
|
|
||||||
|
|
||||||
<exclusions>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.spigotmc</groupId>
|
|
||||||
<artifactId>spigot</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>me.clip</groupId>
|
<groupId>me.clip</groupId>
|
||||||
<artifactId>placeholderapi</artifactId>
|
<artifactId>placeholderapi</artifactId>
|
||||||
|
@ -65,7 +65,7 @@ public class SkyBlock extends SongodaPlugin {
|
|||||||
private static SkyBlock INSTANCE;
|
private static SkyBlock INSTANCE;
|
||||||
|
|
||||||
private FileManager fileManager;
|
private FileManager fileManager;
|
||||||
private WorldManager worldManager;
|
private final WorldManager worldManager = new WorldManager(this);
|
||||||
private UserCacheManager userCacheManager;
|
private UserCacheManager userCacheManager;
|
||||||
private VisitManager visitManager;
|
private VisitManager visitManager;
|
||||||
private BanManager banManager;
|
private BanManager banManager;
|
||||||
@ -166,7 +166,7 @@ public class SkyBlock extends SongodaPlugin {
|
|||||||
|
|
||||||
permissionManager = new PermissionManager(this);
|
permissionManager = new PermissionManager(this);
|
||||||
localizationManager = new LocalizationManager();
|
localizationManager = new LocalizationManager();
|
||||||
worldManager = new WorldManager(this);
|
worldManager.loadWorlds();
|
||||||
userCacheManager = new UserCacheManager(this);
|
userCacheManager = new UserCacheManager(this);
|
||||||
visitManager = new VisitManager(this);
|
visitManager = new VisitManager(this);
|
||||||
banManager = new BanManager(this);
|
banManager = new BanManager(this);
|
||||||
@ -184,7 +184,6 @@ public class SkyBlock extends SongodaPlugin {
|
|||||||
structureManager = new StructureManager(this);
|
structureManager = new StructureManager(this);
|
||||||
soundManager = new SoundManager(this);
|
soundManager = new SoundManager(this);
|
||||||
|
|
||||||
|
|
||||||
if (this.config.getBoolean("Island.Generator.Enable")) {
|
if (this.config.getBoolean("Island.Generator.Enable")) {
|
||||||
generatorManager = new GeneratorManager(this);
|
generatorManager = new GeneratorManager(this);
|
||||||
}
|
}
|
||||||
@ -206,7 +205,6 @@ public class SkyBlock extends SongodaPlugin {
|
|||||||
|
|
||||||
bankManager = new BankManager(this);
|
bankManager = new BankManager(this);
|
||||||
|
|
||||||
|
|
||||||
if (this.config.getBoolean("Island.Task.PlaytimeTask")) {
|
if (this.config.getBoolean("Island.Task.PlaytimeTask")) {
|
||||||
new PlaytimeTask(playerDataManager, islandManager).runTaskTimerAsynchronously(this, 0L, 20L);
|
new PlaytimeTask(playerDataManager, islandManager).runTaskTimerAsynchronously(this, 0L, 20L);
|
||||||
}
|
}
|
||||||
@ -323,7 +321,6 @@ public class SkyBlock extends SongodaPlugin {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private boolean loadConfigs() {
|
private boolean loadConfigs() {
|
||||||
try {
|
try {
|
||||||
biomes = this.getFileManager().getConfig(new File(this.getDataFolder(), "biomes.yml")).getFileConfiguration();
|
biomes = this.getFileManager().getConfig(new File(this.getDataFolder(), "biomes.yml")).getFileConfiguration();
|
||||||
@ -500,7 +497,6 @@ public class SkyBlock extends SongodaPlugin {
|
|||||||
return economyManager;
|
return economyManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public FileConfiguration getBiomes() {
|
public FileConfiguration getBiomes() {
|
||||||
return biomes;
|
return biomes;
|
||||||
}
|
}
|
||||||
@ -556,5 +552,4 @@ public class SkyBlock extends SongodaPlugin {
|
|||||||
public FileConfiguration getScoreboard() {
|
public FileConfiguration getScoreboard() {
|
||||||
return scoreboard;
|
return scoreboard;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,14 +4,12 @@ import com.songoda.skyblock.SkyBlock;
|
|||||||
import com.songoda.skyblock.island.Island;
|
import com.songoda.skyblock.island.Island;
|
||||||
import com.songoda.skyblock.island.IslandEnvironment;
|
import com.songoda.skyblock.island.IslandEnvironment;
|
||||||
import com.songoda.skyblock.island.IslandWorld;
|
import com.songoda.skyblock.island.IslandWorld;
|
||||||
import org.bukkit.Chunk;
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
|
|
||||||
public class ChunkLoader extends BukkitRunnable {
|
public class ChunkLoader extends BukkitRunnable {
|
||||||
public final List<CachedChunk> positions = new LinkedList<>();
|
public final List<CachedChunk> positions = new LinkedList<>();
|
||||||
@ -116,14 +114,14 @@ public class ChunkLoader extends BukkitRunnable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() { // TODO New algorithm that start from the center of the island
|
public void run() { // TODO New algorithm that start from the center of the island
|
||||||
for (int i = 0; i < chunkPerTick || paper; i++) {
|
for (int i = 0; i < chunkPerTick || paper; ++i) {
|
||||||
if (x <= maxX) {
|
if (x <= maxX) {
|
||||||
if (z <= maxZ) {
|
if (z <= maxZ) {
|
||||||
if (!chunkForChunk) {
|
if (!chunkForChunk) {
|
||||||
positions.add(new CachedChunk(world, x >> 4, z >> 4));
|
positions.add(new CachedChunk(world, x, z));
|
||||||
} else {
|
} else {
|
||||||
if (chunkTask != null) {
|
if (chunkTask != null) {
|
||||||
chunkTask.onChunkComplete(new CachedChunk(world, x >> 4, z >> 4));
|
chunkTask.onChunkComplete(new CachedChunk(world, x, z));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ public class SetBiomeCommand extends SubCommand {
|
|||||||
String biomeName = args[1].toUpperCase().trim();
|
String biomeName = args[1].toUpperCase().trim();
|
||||||
|
|
||||||
IslandWorld world = null;
|
IslandWorld world = null;
|
||||||
if(args[2] != null) {
|
if (args.length > 2) {
|
||||||
String worldName = args[2].toUpperCase().trim();
|
String worldName = args[2].toUpperCase().trim();
|
||||||
for (IslandWorld islandWorld : IslandWorld.values()) {
|
for (IslandWorld islandWorld : IslandWorld.values()) {
|
||||||
if (islandWorld.name().equalsIgnoreCase(worldName)) {
|
if (islandWorld.name().equalsIgnoreCase(worldName)) {
|
||||||
|
@ -53,7 +53,6 @@ public class BanCommand extends SubCommand {
|
|||||||
OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]);
|
OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]);
|
||||||
targetPlayerUUID = targetPlayerOffline.getUniqueId();
|
targetPlayerUUID = targetPlayerOffline.getUniqueId();
|
||||||
targetPlayerName = targetPlayerOffline.getName();
|
targetPlayerName = targetPlayerOffline.getName();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
targetPlayerUUID = targetPlayer.getUniqueId();
|
targetPlayerUUID = targetPlayer.getUniqueId();
|
||||||
targetPlayerName = targetPlayer.getName();
|
targetPlayerName = targetPlayer.getName();
|
||||||
@ -62,7 +61,7 @@ public class BanCommand extends SubCommand {
|
|||||||
if (targetPlayerUUID == null) {
|
if (targetPlayerUUID == null) {
|
||||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Found.Message"));
|
messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Found.Message"));
|
||||||
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
||||||
} else if((targetPlayer.hasPermission("fabledskyblock.bypass.ban") || targetPlayer.isOp())){
|
} else if (targetPlayer != null && (targetPlayer.hasPermission("fabledskyblock.bypass.ban") || targetPlayer.isOp())) {
|
||||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Exempt"));
|
messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Exempt"));
|
||||||
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
||||||
} else if (targetPlayerUUID.equals(player.getUniqueId())) {
|
} else if (targetPlayerUUID.equals(player.getUniqueId())) {
|
||||||
@ -72,12 +71,12 @@ public class BanCommand extends SubCommand {
|
|||||||
|| island.hasRole(IslandRole.Owner, targetPlayerUUID)) {
|
|| island.hasRole(IslandRole.Owner, targetPlayerUUID)) {
|
||||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Member.Message"));
|
messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Member.Message"));
|
||||||
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
||||||
} else
|
} else if (island.getBan().isBanned(targetPlayerUUID)) {
|
||||||
if (island.getBan().isBanned(targetPlayerUUID)) {
|
|
||||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Already.Message"));
|
messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Already.Message"));
|
||||||
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
soundManager.playSound(player, CompatibleSound.BLOCK_ANVIL_LAND.getSound(), 1.0F, 1.0F);
|
||||||
} else {
|
} else {
|
||||||
messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Banned.Sender.Message").replace("%player", targetPlayerName));
|
messageManager.sendMessage(player, configLoad.getString("Command.Island.Ban.Banned.Sender.Message")
|
||||||
|
.replace("%player", targetPlayerName));
|
||||||
soundManager.playSound(player, CompatibleSound.ENTITY_IRON_GOLEM_ATTACK.getSound(), 1.0F, 1.0F);
|
soundManager.playSound(player, CompatibleSound.ENTITY_IRON_GOLEM_ATTACK.getSound(), 1.0F, 1.0F);
|
||||||
|
|
||||||
if (island.isCoopPlayer(targetPlayerUUID)) {
|
if (island.isCoopPlayer(targetPlayerUUID)) {
|
||||||
@ -90,7 +89,8 @@ public class BanCommand extends SubCommand {
|
|||||||
|
|
||||||
if (targetPlayer != null) {
|
if (targetPlayer != null) {
|
||||||
if (islandManager.isPlayerAtIsland(island, targetPlayer)) {
|
if (islandManager.isPlayerAtIsland(island, targetPlayer)) {
|
||||||
messageManager.sendMessage(targetPlayer, configLoad.getString("Command.Island.Ban.Banned.Target.Message").replace("%player", player.getName()));
|
messageManager.sendMessage(targetPlayer, configLoad.getString("Command.Island.Ban.Banned.Target.Message")
|
||||||
|
.replace("%player", player.getName()));
|
||||||
soundManager.playSound(targetPlayer, CompatibleSound.ENTITY_IRON_GOLEM_ATTACK.getSound(), 1.0F, 1.0F);
|
soundManager.playSound(targetPlayer, CompatibleSound.ENTITY_IRON_GOLEM_ATTACK.getSound(), 1.0F, 1.0F);
|
||||||
|
|
||||||
LocationUtil.teleportPlayerToSpawn(targetPlayer);
|
LocationUtil.teleportPlayerToSpawn(targetPlayer);
|
||||||
|
@ -44,8 +44,8 @@ public class UnbanCommand extends SubCommand {
|
|||||||
&& plugin.getPermissionManager().hasPermission(island, "Unban", IslandRole.Operator))) {
|
&& plugin.getPermissionManager().hasPermission(island, "Unban", IslandRole.Operator))) {
|
||||||
Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
|
Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
|
||||||
|
|
||||||
UUID targetPlayerUUID = null;
|
UUID targetPlayerUUID;
|
||||||
String targetPlayerName = null;
|
String targetPlayerName;
|
||||||
|
|
||||||
if (targetPlayer == null) {
|
if (targetPlayer == null) {
|
||||||
OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]);
|
OfflinePlayer targetPlayerOffline = new OfflinePlayer(args[0]);
|
||||||
|
@ -191,7 +191,7 @@ public class GuiBiome extends Gui {
|
|||||||
soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_YES.getSound(), 1.0F, 1.0F);
|
soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_YES.getSound(), 1.0F, 1.0F);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
island.setBiome(icon.biome.getBiome());
|
island.setBiome(icon.biome.getBiome()); // FIXME: A event is fired with has a setBiome method...
|
||||||
island.save();
|
island.save();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -61,7 +61,6 @@ import java.util.*;
|
|||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
public class IslandManager {
|
public class IslandManager {
|
||||||
|
|
||||||
private final SkyBlock plugin;
|
private final SkyBlock plugin;
|
||||||
|
|
||||||
private final List<IslandPosition> islandPositions = new ArrayList<>();
|
private final List<IslandPosition> islandPositions = new ArrayList<>();
|
||||||
@ -169,7 +168,7 @@ public class IslandManager {
|
|||||||
posY = (int) (r - (a % en));
|
posY = (int) (r - (a % en));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
System.err.println("[FabledSkyblock][prepareNextAvailableLocation] Erreur dans la spirale, valeur : " + loc);
|
plugin.getLogger().warning("[FabledSkyblock][prepareNextAvailableLocation] Error in the spiral value: " + loc);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
posX = posX * offset;
|
posX = posX * offset;
|
||||||
|
@ -5,6 +5,7 @@ import com.songoda.core.compatibility.CompatibleMaterial;
|
|||||||
import com.songoda.core.compatibility.CompatibleSound;
|
import com.songoda.core.compatibility.CompatibleSound;
|
||||||
import com.songoda.core.compatibility.ServerVersion;
|
import com.songoda.core.compatibility.ServerVersion;
|
||||||
import com.songoda.core.hooks.LogManager;
|
import com.songoda.core.hooks.LogManager;
|
||||||
|
import com.songoda.core.utils.NumberUtils;
|
||||||
import com.songoda.skyblock.SkyBlock;
|
import com.songoda.skyblock.SkyBlock;
|
||||||
import com.songoda.skyblock.generator.Generator;
|
import com.songoda.skyblock.generator.Generator;
|
||||||
import com.songoda.skyblock.generator.GeneratorManager;
|
import com.songoda.skyblock.generator.GeneratorManager;
|
||||||
@ -19,7 +20,6 @@ import com.songoda.skyblock.limit.impl.BlockLimitation;
|
|||||||
import com.songoda.skyblock.permission.PermissionManager;
|
import com.songoda.skyblock.permission.PermissionManager;
|
||||||
import com.songoda.skyblock.stackable.Stackable;
|
import com.songoda.skyblock.stackable.Stackable;
|
||||||
import com.songoda.skyblock.stackable.StackableManager;
|
import com.songoda.skyblock.stackable.StackableManager;
|
||||||
import com.songoda.core.utils.NumberUtils;
|
|
||||||
import com.songoda.skyblock.utils.version.CompatibleSpawners;
|
import com.songoda.skyblock.utils.version.CompatibleSpawners;
|
||||||
import com.songoda.skyblock.utils.world.LocationUtil;
|
import com.songoda.skyblock.utils.world.LocationUtil;
|
||||||
import com.songoda.skyblock.world.WorldManager;
|
import com.songoda.skyblock.world.WorldManager;
|
||||||
@ -187,7 +187,6 @@ public class BlockListeners implements Listener {
|
|||||||
if (CompatibleMaterial.getMaterial(belowBlock).isTall()) {
|
if (CompatibleMaterial.getMaterial(belowBlock).isTall()) {
|
||||||
block = belowBlock;
|
block = belowBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (block.getType() == CompatibleMaterial.SPAWNER.getBlockMaterial()) {
|
if (block.getType() == CompatibleMaterial.SPAWNER.getBlockMaterial()) {
|
||||||
@ -513,7 +512,6 @@ public class BlockListeners implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean performStackCheck(org.bukkit.block.Block block, List<org.bukkit.block.Block> list, BlockFace blockFace) {
|
private boolean performStackCheck(org.bukkit.block.Block block, List<org.bukkit.block.Block> list, BlockFace blockFace) {
|
||||||
@ -715,7 +713,6 @@ public class BlockListeners implements Listener {
|
|||||||
BlockFace dispenserDirection = ((org.bukkit.material.Dispenser) event.getBlock().getState().getData()).getFacing();
|
BlockFace dispenserDirection = ((org.bukkit.material.Dispenser) event.getBlock().getState().getData()).getFacing();
|
||||||
org.bukkit.block.Block placeLocation = event.getBlock().getRelative(dispenserDirection);
|
org.bukkit.block.Block placeLocation = event.getBlock().getRelative(dispenserDirection);
|
||||||
|
|
||||||
|
|
||||||
if (CompatibleMaterial.getMaterial(event.getItem()) == CompatibleMaterial.WATER_BUCKET
|
if (CompatibleMaterial.getMaterial(event.getItem()) == CompatibleMaterial.WATER_BUCKET
|
||||||
&& this.plugin.getConfiguration().getBoolean("Island.Nether.AllowNetherWater", false))
|
&& this.plugin.getConfiguration().getBoolean("Island.Nether.AllowNetherWater", false))
|
||||||
placeLocation.setType(Material.WATER);
|
placeLocation.setType(Material.WATER);
|
||||||
@ -762,7 +759,7 @@ public class BlockListeners implements Listener {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
IslandLevel level = island.getLevel();
|
IslandLevel level = island.getLevel();
|
||||||
if (level.hasMaterial(destmaterial.name())) {
|
if (destmaterial != null && level.hasMaterial(destmaterial.name())) {
|
||||||
long materialAmount = level.getMaterialAmount(destmaterial.name());
|
long materialAmount = level.getMaterialAmount(destmaterial.name());
|
||||||
|
|
||||||
if (materialAmount - 1 <= 0) {
|
if (materialAmount - 1 <= 0) {
|
||||||
|
@ -3,11 +3,11 @@ package com.songoda.skyblock.menus;
|
|||||||
import com.songoda.core.compatibility.CompatibleMaterial;
|
import com.songoda.core.compatibility.CompatibleMaterial;
|
||||||
import com.songoda.core.compatibility.CompatibleSound;
|
import com.songoda.core.compatibility.CompatibleSound;
|
||||||
import com.songoda.core.utils.ItemUtils;
|
import com.songoda.core.utils.ItemUtils;
|
||||||
|
import com.songoda.core.utils.NumberUtils;
|
||||||
import com.songoda.skyblock.SkyBlock;
|
import com.songoda.skyblock.SkyBlock;
|
||||||
import com.songoda.skyblock.placeholder.Placeholder;
|
import com.songoda.skyblock.placeholder.Placeholder;
|
||||||
import com.songoda.skyblock.playerdata.PlayerDataManager;
|
import com.songoda.skyblock.playerdata.PlayerDataManager;
|
||||||
import com.songoda.skyblock.sound.SoundManager;
|
import com.songoda.skyblock.sound.SoundManager;
|
||||||
import com.songoda.core.utils.NumberUtils;
|
|
||||||
import com.songoda.skyblock.utils.item.nInventoryUtil;
|
import com.songoda.skyblock.utils.item.nInventoryUtil;
|
||||||
import com.songoda.skyblock.utils.player.OfflinePlayer;
|
import com.songoda.skyblock.utils.player.OfflinePlayer;
|
||||||
import com.songoda.skyblock.visit.Visit;
|
import com.songoda.skyblock.visit.Visit;
|
||||||
@ -23,9 +23,21 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class Leaderboard {
|
public class Leaderboard {
|
||||||
|
|
||||||
private static Leaderboard instance;
|
private static Leaderboard instance;
|
||||||
|
|
||||||
|
private static final String[] steveSkinTexture = new String[] {
|
||||||
|
"otpbxDm9B+opW7jEzZF8BVDeZSqaqdF0dyLlnlyMh7Q5ysJFDL48/9J/IOHp8JqNm1oarmVdvxrroy9dlNI2Mz4BVuJM2pcCOJwk2h+aZ4dzNZGxst+MYNPSw+i4sMoYu7OV07UVHrQffolFF7MiaBUst1hFwM07IpTE6UtIQz4rqWisXe9Iz5+ooqX4wj0IB3dPntsh6u5nVlL8acWCBDAW4YqcPt2Y4CKK+KtskjzusjqGAdEO+4lRcW1S0ldo2RNtUHEzZADWQcADjg9KKiKq9QIpIpYURIoIAA+pDGb5Q8L5O6CGI+i1+FxqXbgdBvcm1EG0OPdw9WpSqAxGGeXSwlzjILvlvBzYbd6gnHFBhFO+X7iwRJYNd+qQakjUa6ZwR8NbkpbN3ABb9+6YqVkabaEmgfky3HdORE+bTp/AT6LHqEMQo0xdNkvF9gtFci7RWhFwuTLDvQ1esby1IhlgT+X32CPuVHuxEvPCjN7+lmRz2OyOZ4REo2tAIFUKakqu3nZ0NcF98b87wAdA9B9Qyd2H/rEtUToQhpBjP732Sov6TlJkb8echGYiLL5bu/Q7hum72y4+j2GNnuRiOJtJidPgDqrYMg81GfenfPyS6Ynw6KhdEhnwmJ1FJlJhYvXZyqZwLAV1c26DNYkrTMcFcv3VXmcd5/2Zn9FnZtw=",
|
||||||
|
"ewogICJ0aW1lc3RhbXAiIDogMTYyMTcxNTMxMjI5MCwKICAicHJvZmlsZUlkIiA6ICJiNTM5NTkyMjMwY2I0MmE0OWY5YTRlYmYxNmRlOTYwYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJtYXJpYW5hZmFnIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzFhNGFmNzE4NDU1ZDRhYWI1MjhlN2E2MWY4NmZhMjVlNmEzNjlkMTc2OGRjYjEzZjdkZjMxOWE3MTNlYjgxMGIiCiAgICB9CiAgfQp9"
|
||||||
|
};
|
||||||
|
private static final String[] alexSkinTexture = new String[] {
|
||||||
|
"rZvLQoZsgLYaoKqEuASopYAs7IAlZlsGkwagoM8ZX38cP9kalseZrWY5OHZVfoiftdQJ+lGOzkiFfyx6kNJDTZniLrnRa8sd3X6D65ZihT1sOm/RInCwxpS1K0zGCM2h9ErkWswfwaviIf7hJtrwk8/zL0bfzDk2IgX/IBvIZpVoYTfmQsVY9jgSwORrS9ObePGIfFgmThMoZnCYWQMVpS2+yTFA2wnw9hmisQK9UWBU+iBZv55bMmkMcyEuXw1w14DaEu+/M0UGD91LU4GmJLPA9T4GCuIV8GxOcraSVIajki1cMlOBQwIaibB2NE6KAwq1Zh6NnsNYucy6qFM+136lXfBchQ1Nx4FDRZQgt8VRqTMy/OQFpr2nTbWWbRU4gRFpKC3R0518DqUH0Qm612kPWniKku/QzUUBSe1PSVljBaZCyyRx0OB1a1/8MexboKRnPXuTDnmPa9UPfuH4VO0q+qYkjV2KUzP6e5vIP5aQ6USPrMie7MmAHFJzwAMIbLjgkTVx91GWtYqg/t7qBlvrdBRLIPPsy/DSOqa+2+4hABouVCPZrBMCMLzstPPQoqZAyiCqcKb2HqWSU0h9Bhx19yoIcbHCeI3zsQs8PqIBjUL4mO6VQT4lzHy0e3M61Xsdd8S1GtsakSetTvEtMdUwCEDfBA5PRRTLOVYTY+g=",
|
||||||
|
"ewogICJ0aW1lc3RhbXAiIDogMTYyMTcxNTQ5ODM0MywKICAicHJvZmlsZUlkIiA6ICIxYTc1ZTNiYmI1NTk0MTc2OTVjMmY4NTY1YzNlMDAzZCIsCiAgInByb2ZpbGVOYW1lIiA6ICJUZXJvZmFyIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzNiNjBhMWY2ZDU2MmY1MmFhZWJiZjE0MzRmMWRlMTQ3OTMzYTNhZmZlMGU3NjRmYTQ5ZWEwNTc1MzY2MjNjZDMiLAogICAgICAibWV0YWRhdGEiIDogewogICAgICAgICJtb2RlbCIgOiAic2xpbSIKICAgICAgfQogICAgfQogIH0KfQ=="
|
||||||
|
};
|
||||||
|
private static final String[] questionMarkSkinTexture = new String[] {
|
||||||
|
"gi+wnQt/y4Z6E9rn65iDWmt8vUOM2WXY66XvtydqDJZTzwgFrjVcx2c5YwdzvtOIRtiX2nZt4n2uWesUFKb59xS24YWbxCDXnalHhCpPFcIP58SQbCm9AYp3UPzkcRNWzuV4BddrS608QQZGyIFOUaLPOPasGITZu51VLcOKcTyFOCKu1QE2yRo1orTH8bWfdpE769BB/VYGdny0qJtm1amc12wGiVifMJRutZmYo2ZdA0APhIJVaNsPppNESVcbeBCvk60l4QK43C/p98/QEe5U6UJ6Z6N01pBQcswubMu8lCuPLasep+vX3v2K+Ui9jnTQNreGNIZPWVjf6V1GH4xMbbUVQJsoPdcaXG855VdzyoW+kyHdWYEojSn0qAY/moH6JCLnx6PLCv9mITSvOIUHq8ITet0M7Z9KALY5s6eg6VdA8TvClRy2TTm9tIRt//TJo5JxBoTYujawGNSR7ryODj2UEDQ2xOyWSagxAXZpispdrO5jHxRmBZUwX9vxnAp+CNWxifpu9sINJTlqYsT/KlGOJQC483gv5B6Nm5VBB1DRFmQkohzO6Wc2eDixgEbaU795GlLxrNaFfNjVH6Bwr1e7df2H3nE0P0bexs4wYdWplijn4gPyHwjT2LDBPGFQK3Vo2SlaXfPYbkIHX21c9qaz3eWHpLEXUBQfnWc=",
|
||||||
|
"eyJ0aW1lc3RhbXAiOjE1MzE3MTcxNjY3MDAsInByb2ZpbGVJZCI6IjYwNmUyZmYwZWQ3NzQ4NDI5ZDZjZTFkMzMyMWM3ODM4IiwicHJvZmlsZU5hbWUiOiJNSEZfUXVlc3Rpb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2QzNGUwNjNjYWZiNDY3YTVjOGRlNDNlYzc4NjE5Mzk5ZjM2OWY0YTUyNDM0ZGE4MDE3YTk4M2NkZDkyNTE2YTAifX19"
|
||||||
|
};
|
||||||
|
|
||||||
public static Leaderboard getInstance() {
|
public static Leaderboard getInstance() {
|
||||||
if (instance == null) {
|
if (instance == null) {
|
||||||
instance = new Leaderboard();
|
instance = new Leaderboard();
|
||||||
@ -288,11 +300,18 @@ public class Leaderboard {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (playerTexture[0] == null || playerTexture[1] == null) {
|
||||||
|
if ((visit.getOwnerUUID().hashCode() & 1) != 0) {
|
||||||
|
playerTexture = alexSkinTexture;
|
||||||
|
} else {
|
||||||
|
playerTexture = steveSkinTexture;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
nInv.addItem(
|
nInv.addItem(
|
||||||
nInv.createItem(ItemUtils.getCustomHead(playerTexture[0], playerTexture[1]),
|
nInv.createItem(ItemUtils.getCustomHead(playerTexture[0], playerTexture[1]),
|
||||||
configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Island.Displayname")
|
configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Island.Displayname")
|
||||||
.replace(
|
.replace("%owner", playerName)
|
||||||
"%owner", playerName)
|
|
||||||
.replace("%position", "" + (leaderboard.getPosition() + 1)),
|
.replace("%position", "" + (leaderboard.getPosition() + 1)),
|
||||||
itemLore,
|
itemLore,
|
||||||
new Placeholder[] {
|
new Placeholder[] {
|
||||||
@ -310,9 +329,7 @@ public class Leaderboard {
|
|||||||
|
|
||||||
for (int i = 0; i < itemSlots.length; i++) {
|
for (int i = 0; i < itemSlots.length; i++) {
|
||||||
if (!nInv.getItems().containsKey(itemSlots[i])) {
|
if (!nInv.getItems().containsKey(itemSlots[i])) {
|
||||||
nInv.addItem(nInv.createItem(ItemUtils.getCustomHead(
|
nInv.addItem(nInv.createItem(ItemUtils.getCustomHead(questionMarkSkinTexture[0], questionMarkSkinTexture[1]),
|
||||||
"gi+wnQt/y4Z6E9rn65iDWmt8vUOM2WXY66XvtydqDJZTzwgFrjVcx2c5YwdzvtOIRtiX2nZt4n2uWesUFKb59xS24YWbxCDXnalHhCpPFcIP58SQbCm9AYp3UPzkcRNWzuV4BddrS608QQZGyIFOUaLPOPasGITZu51VLcOKcTyFOCKu1QE2yRo1orTH8bWfdpE769BB/VYGdny0qJtm1amc12wGiVifMJRutZmYo2ZdA0APhIJVaNsPppNESVcbeBCvk60l4QK43C/p98/QEe5U6UJ6Z6N01pBQcswubMu8lCuPLasep+vX3v2K+Ui9jnTQNreGNIZPWVjf6V1GH4xMbbUVQJsoPdcaXG855VdzyoW+kyHdWYEojSn0qAY/moH6JCLnx6PLCv9mITSvOIUHq8ITet0M7Z9KALY5s6eg6VdA8TvClRy2TTm9tIRt//TJo5JxBoTYujawGNSR7ryODj2UEDQ2xOyWSagxAXZpispdrO5jHxRmBZUwX9vxnAp+CNWxifpu9sINJTlqYsT/KlGOJQC483gv5B6Nm5VBB1DRFmQkohzO6Wc2eDixgEbaU795GlLxrNaFfNjVH6Bwr1e7df2H3nE0P0bexs4wYdWplijn4gPyHwjT2LDBPGFQK3Vo2SlaXfPYbkIHX21c9qaz3eWHpLEXUBQfnWc=",
|
|
||||||
"eyJ0aW1lc3RhbXAiOjE1MzE3MTcxNjY3MDAsInByb2ZpbGVJZCI6IjYwNmUyZmYwZWQ3NzQ4NDI5ZDZjZTFkMzMyMWM3ODM4IiwicHJvZmlsZU5hbWUiOiJNSEZfUXVlc3Rpb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2QzNGUwNjNjYWZiNDY3YTVjOGRlNDNlYzc4NjE5Mzk5ZjM2OWY0YTUyNDM0ZGE4MDE3YTk4M2NkZDkyNTE2YTAifX19"),
|
|
||||||
configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Empty.Displayname")
|
configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Empty.Displayname")
|
||||||
.replace("%position", "" + (i + 1)),
|
.replace("%position", "" + (i + 1)),
|
||||||
configLoad.getStringList("Menu.Leaderboard.Leaderboard.Item.Empty.Lore"),
|
configLoad.getStringList("Menu.Leaderboard.Leaderboard.Item.Empty.Lore"),
|
||||||
|
@ -4,9 +4,13 @@ import com.mojang.authlib.GameProfile;
|
|||||||
import com.mojang.authlib.properties.Property;
|
import com.mojang.authlib.properties.Property;
|
||||||
import com.songoda.skyblock.SkyBlock;
|
import com.songoda.skyblock.SkyBlock;
|
||||||
import com.songoda.skyblock.ban.BanManager;
|
import com.songoda.skyblock.ban.BanManager;
|
||||||
import com.songoda.skyblock.config.FileManager;
|
|
||||||
import com.songoda.skyblock.config.FileManager.Config;
|
import com.songoda.skyblock.config.FileManager.Config;
|
||||||
import com.songoda.skyblock.island.*;
|
import com.songoda.skyblock.island.Island;
|
||||||
|
import com.songoda.skyblock.island.IslandLocation;
|
||||||
|
import com.songoda.skyblock.island.IslandManager;
|
||||||
|
import com.songoda.skyblock.island.IslandRole;
|
||||||
|
import com.songoda.skyblock.island.IslandStatus;
|
||||||
|
import com.songoda.skyblock.island.IslandWorld;
|
||||||
import com.songoda.skyblock.message.MessageManager;
|
import com.songoda.skyblock.message.MessageManager;
|
||||||
import com.songoda.skyblock.scoreboard.ScoreboardManager;
|
import com.songoda.skyblock.scoreboard.ScoreboardManager;
|
||||||
import com.songoda.skyblock.utils.player.OfflinePlayer;
|
import com.songoda.skyblock.utils.player.OfflinePlayer;
|
||||||
@ -25,7 +29,6 @@ import java.util.Map;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class PlayerDataManager {
|
public class PlayerDataManager {
|
||||||
|
|
||||||
private final SkyBlock plugin;
|
private final SkyBlock plugin;
|
||||||
private final Map<UUID, PlayerData> playerDataStorage = new HashMap<>();
|
private final Map<UUID, PlayerData> playerDataStorage = new HashMap<>();
|
||||||
|
|
||||||
@ -128,7 +131,7 @@ public class PlayerDataManager {
|
|||||||
public void storeIsland(Player player) {
|
public void storeIsland(Player player) {
|
||||||
MessageManager messageManager = plugin.getMessageManager();
|
MessageManager messageManager = plugin.getMessageManager();
|
||||||
IslandManager islandManager = plugin.getIslandManager();
|
IslandManager islandManager = plugin.getIslandManager();
|
||||||
WorldManager worldManager = plugin.getWorldManager();;
|
WorldManager worldManager = plugin.getWorldManager();
|
||||||
BanManager banManager = plugin.getBanManager();
|
BanManager banManager = plugin.getBanManager();
|
||||||
|
|
||||||
FileConfiguration configLoad = plugin.getLanguage();
|
FileConfiguration configLoad = plugin.getLanguage();
|
||||||
@ -187,17 +190,23 @@ public class PlayerDataManager {
|
|||||||
islandManager.updateFlight(player);
|
islandManager.updateFlight(player);
|
||||||
|
|
||||||
ScoreboardManager scoreboardManager = plugin.getScoreboardManager();
|
ScoreboardManager scoreboardManager = plugin.getScoreboardManager();
|
||||||
|
if (scoreboardManager != null) {
|
||||||
|
Island finalIsland = island;
|
||||||
|
Bukkit.getScheduler().runTask(plugin, () -> {
|
||||||
|
|
||||||
for (Player loopPlayer : Bukkit.getOnlinePlayers()) {
|
for (Player loopPlayer : Bukkit.getOnlinePlayers()) {
|
||||||
PlayerData targetPlayerData = getPlayerData(loopPlayer);
|
PlayerData targetPlayerData = getPlayerData(loopPlayer);
|
||||||
if (targetPlayerData == null)
|
if (targetPlayerData == null) {
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (targetPlayerData.getOwner() != null &&
|
if (targetPlayerData.getOwner() != null &&
|
||||||
targetPlayerData.getOwner().equals(island.getOwnerUUID())) {
|
targetPlayerData.getOwner().equals(finalIsland.getOwnerUUID())) {
|
||||||
scoreboardManager.updatePlayerScoreboardType(loopPlayer);
|
scoreboardManager.updatePlayerScoreboardType(loopPlayer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
@ -56,15 +56,20 @@ class Driver extends BukkitRunnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void registerHolder(Holder holder) {
|
void registerHolder(Holder holder) {
|
||||||
holders.add(holder);
|
synchronized (this.holders) {
|
||||||
|
this.holders.add(holder);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void unregisterHolder(Holder holder) {
|
void unregisterHolder(Holder holder) {
|
||||||
holders.remove(holder);
|
synchronized (this.holders) {
|
||||||
|
this.holders.remove(holder);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void unregisterHolder(Player player) {
|
void unregisterHolder(Player player) {
|
||||||
Iterator<Holder> it = holders.iterator();
|
synchronized (this.holders) {
|
||||||
|
Iterator<Holder> it = this.holders.iterator();
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
Holder holder = it.next();
|
Holder holder = it.next();
|
||||||
if (holder.getPlayer().equals(player)) {
|
if (holder.getPlayer().equals(player)) {
|
||||||
@ -73,6 +78,7 @@ class Driver extends BukkitRunnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@ -81,10 +87,12 @@ class Driver extends BukkitRunnable {
|
|||||||
row.update();
|
row.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
synchronized (this.holders) {
|
||||||
for (Holder holder : holders) {
|
for (Holder holder : holders) {
|
||||||
holder.update();
|
holder.update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ScoreboardType getBoardType() {
|
ScoreboardType getBoardType() {
|
||||||
return boardType;
|
return boardType;
|
||||||
|
@ -25,8 +25,6 @@ public class WorldManager {
|
|||||||
|
|
||||||
public WorldManager(SkyBlock plugin) {
|
public WorldManager(SkyBlock plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
|
|
||||||
loadWorlds();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadWorlds() {
|
public void loadWorlds() {
|
||||||
|
@ -5,7 +5,7 @@ api-version: 1.13
|
|||||||
description: A unique SkyBlock plugin
|
description: A unique SkyBlock plugin
|
||||||
author: Songoda
|
author: Songoda
|
||||||
authors: [ Fabrimat ]
|
authors: [ Fabrimat ]
|
||||||
softdepend: [ HolographicDisplays, Holograms, PlaceholderAPI, MVdWPlaceholderAPI, Vault, Reserve, PlayerPoints,
|
softdepend: [ HolographicDisplays, Holograms, PlaceholderAPI, Vault, Reserve, PlayerPoints,
|
||||||
LeaderHeads, EpicSpawners, UltimateStacker, WorldEdit, Residence, CoreProtect, CMIEInjector ]
|
LeaderHeads, EpicSpawners, UltimateStacker, WorldEdit, Residence, CoreProtect, CMIEInjector ]
|
||||||
loadbefore: [Multiverse-Core, ProtocolLib]
|
loadbefore: [Multiverse-Core, ProtocolLib]
|
||||||
commands:
|
commands:
|
||||||
|
Loading…
Reference in New Issue
Block a user