Generate ScoreBoards in main thread (sync)

PaperMc is more strict about async api usage
This commit is contained in:
Christian Koop 2021-10-26 20:42:19 +02:00
parent ff37711087
commit 26b7e4d234
No known key found for this signature in database
GPG Key ID: 89A8181384E010A3

View File

@ -4,9 +4,13 @@ import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import com.songoda.skyblock.SkyBlock;
import com.songoda.skyblock.ban.BanManager;
import com.songoda.skyblock.config.FileManager;
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.scoreboard.ScoreboardManager;
import com.songoda.skyblock.utils.player.OfflinePlayer;
@ -25,7 +29,6 @@ import java.util.Map;
import java.util.UUID;
public class PlayerDataManager {
private final SkyBlock plugin;
private final Map<UUID, PlayerData> playerDataStorage = new HashMap<>();
@ -61,9 +64,9 @@ public class PlayerDataManager {
Method getProfileMethod = entityPlayer.getClass().getMethod("getProfile");
GameProfile gameProfile = (GameProfile) getProfileMethod.invoke(entityPlayer);
Property property = gameProfile.getProperties().get("textures").iterator().next();
playerTexture = new String[]{property.getSignature(), property.getValue()};
playerTexture = new String[] {property.getSignature(), property.getValue()};
} catch (Exception e) {
playerTexture = new String[]{
playerTexture = new String[] {
"K9P4tCIENYbNpDuEuuY0shs1x7iIvwXi4jUUVsATJfwsAIZGS+9OZ5T2HB0tWBoxRvZNi73Vr+syRdvTLUWPusVXIg+2fhXmQoaNEtnQvQVGQpjdQP0TkZtYG8PbvRxE6Z75ddq+DVx/65OSNHLWIB/D+Rg4vINh4ukXNYttn9QvauDHh1aW7/IkIb1Bc0tLcQyqxZQ3mdglxJfgIerqnlA++Lt7TxaLdag4y1NhdZyd3OhklF5B0+B9zw/qP8QCzsZU7VzJIcds1+wDWKiMUO7+60OSrIwgE9FPamxOQDFoDvz5BOULQEeNx7iFMB+eBYsapCXpZx0zf1bduppBUbbVC9wVhto/J4tc0iNyUq06/esHUUB5MHzdJ0Y6IZJAD/xIw15OLCUH2ntvs8V9/cy5/n8u3JqPUM2zhUGeQ2p9FubUGk4Q928L56l3omRpKV+5QYTrvF+AxFkuj2hcfGQG3VE2iYZO6omXe7nRPpbJlHkMKhE8Xvd1HP4PKpgivSkHBoZ92QEUAmRzZydJkp8CNomQrZJf+MtPiNsl/Q5RQM+8CQThg3+4uWptUfP5dDFWOgTnMdA0nIODyrjpp+bvIJnsohraIKJ7ZDnj4tIp4ObTNKDFC/8j8JHz4VCrtr45mbnzvB2DcK8EIB3JYT7ElJTHnc5BKMyLy5SKzuw=",
"eyJ0aW1lc3RhbXAiOjE1MjkyNTg0MTE4NDksInByb2ZpbGVJZCI6Ijg2NjdiYTcxYjg1YTQwMDRhZjU0NDU3YTk3MzRlZWQ3IiwicHJvZmlsZU5hbWUiOiJTdGV2ZSIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGMxYzc3Y2U4ZTU0OTI1YWI1ODEyNTQ0NmVjNTNiMGNkZDNkMGNhM2RiMjczZWI5MDhkNTQ4Mjc4N2VmNDAxNiJ9LCJDQVBFIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjc2N2Q0ODMyNWVhNTMyNDU2MTQwNmI4YzgyYWJiZDRlMjc1NWYxMTE1M2NkODVhYjA1NDVjYzIifX19"};
}
@ -128,7 +131,7 @@ public class PlayerDataManager {
public void storeIsland(Player player) {
MessageManager messageManager = plugin.getMessageManager();
IslandManager islandManager = plugin.getIslandManager();
WorldManager worldManager = plugin.getWorldManager();;
WorldManager worldManager = plugin.getWorldManager();
BanManager banManager = plugin.getBanManager();
FileConfiguration configLoad = plugin.getLanguage();
@ -187,16 +190,22 @@ public class PlayerDataManager {
islandManager.updateFlight(player);
ScoreboardManager scoreboardManager = plugin.getScoreboardManager();
if (scoreboardManager != null) {
Island finalIsland = island;
Bukkit.getScheduler().runTask(plugin, () -> {
for (Player loopPlayer : Bukkit.getOnlinePlayers()) {
PlayerData targetPlayerData = getPlayerData(loopPlayer);
if (targetPlayerData == null)
continue;
if (targetPlayerData.getOwner() != null &&
targetPlayerData.getOwner().equals(island.getOwnerUUID())) {
scoreboardManager.updatePlayerScoreboardType(loopPlayer);
}
for (Player loopPlayer : Bukkit.getOnlinePlayers()) {
PlayerData targetPlayerData = getPlayerData(loopPlayer);
if (targetPlayerData == null) {
continue;
}
if (targetPlayerData.getOwner() != null &&
targetPlayerData.getOwner().equals(finalIsland.getOwnerUUID())) {
scoreboardManager.updatePlayerScoreboardType(loopPlayer);
}
}
});
}
return;