mirror of
https://github.com/songoda/FabledSkyBlock.git
synced 2025-02-20 13:41:22 +01:00
Merge branch 'development'
This commit is contained in:
commit
b0a64c23d9
2
pom.xml
2
pom.xml
@ -5,7 +5,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.songoda</groupId>
|
<groupId>com.songoda</groupId>
|
||||||
<artifactId>skyblock</artifactId>
|
<artifactId>skyblock</artifactId>
|
||||||
<version>2.2.8</version>
|
<version>2.2.9</version>
|
||||||
<build>
|
<build>
|
||||||
<defaultGoal>clean install</defaultGoal>
|
<defaultGoal>clean install</defaultGoal>
|
||||||
<finalName>FabledSkyblock-${project.version}</finalName>
|
<finalName>FabledSkyblock-${project.version}</finalName>
|
||||||
|
@ -69,7 +69,7 @@ public class ReloadCommand extends SubCommand {
|
|||||||
skyblock.setScoreboardManager(new ScoreboardManager(skyblock));
|
skyblock.setScoreboardManager(new ScoreboardManager(skyblock));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
skyblock.getScoreboardManager().resendScoreboard();
|
skyblock.getScoreboardManager().updateScoreboards(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (skyblock.getGeneratorManager() == null) {
|
if (skyblock.getGeneratorManager() == null) {
|
||||||
|
@ -94,7 +94,7 @@ public class StructureCommand extends SubCommand {
|
|||||||
+ suffix.replace("%info", ChatColor.translateAlternateColorCodes(
|
+ suffix.replace("%info", ChatColor.translateAlternateColorCodes(
|
||||||
'&',
|
'&',
|
||||||
configLoad.getString(
|
configLoad.getString(
|
||||||
"Command.Island.Admin.Structure.Save.Convert.Message"))),
|
"Command.Island.Admin.Structure.Convert.Info.Message"))),
|
||||||
false, null, null,
|
false, null, null,
|
||||||
new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder(
|
new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder(
|
||||||
ChatColor.translateAlternateColorCodes('&', configLoad.getString(
|
ChatColor.translateAlternateColorCodes('&', configLoad.getString(
|
||||||
|
@ -1,22 +1,5 @@
|
|||||||
package com.songoda.skyblock.scoreboard;
|
package com.songoda.skyblock.scoreboard;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
|
||||||
import org.bukkit.scoreboard.Objective;
|
|
||||||
import org.bukkit.scoreboard.Team;
|
|
||||||
import org.bukkit.scoreboard.Team.Option;
|
|
||||||
|
|
||||||
import com.songoda.skyblock.SkyBlock;
|
import com.songoda.skyblock.SkyBlock;
|
||||||
import com.songoda.skyblock.config.FileManager;
|
import com.songoda.skyblock.config.FileManager;
|
||||||
import com.songoda.skyblock.config.FileManager.Config;
|
import com.songoda.skyblock.config.FileManager.Config;
|
||||||
@ -24,23 +7,30 @@ import com.songoda.skyblock.island.Island;
|
|||||||
import com.songoda.skyblock.island.IslandManager;
|
import com.songoda.skyblock.island.IslandManager;
|
||||||
import com.songoda.skyblock.island.IslandRole;
|
import com.songoda.skyblock.island.IslandRole;
|
||||||
import com.songoda.skyblock.utils.version.NMSUtil;
|
import com.songoda.skyblock.utils.version.NMSUtil;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
import org.bukkit.scoreboard.Objective;
|
||||||
|
import org.bukkit.scoreboard.Team;
|
||||||
|
import org.bukkit.scoreboard.Team.Option;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
public class ScoreboardManager extends BukkitRunnable {
|
public class ScoreboardManager extends BukkitRunnable {
|
||||||
|
|
||||||
private final static int VERSION = NMSUtil.getVersionNumber();
|
private final static int VERSION = NMSUtil.getVersionNumber();
|
||||||
private final SkyBlock skyblock;
|
private final SkyBlock skyblock;
|
||||||
private final Map<UUID, Scoreboard> scoreboardStorage;
|
private final Map<UUID, Scoreboard> scoreboardStorage = new HashMap<>();
|
||||||
|
|
||||||
private int runTicks = 0;
|
private int runTicks = 0;
|
||||||
|
|
||||||
private List<String> teamNames;
|
private final List<String> teamNames = new ArrayList<>();
|
||||||
private List<String> objectiveNames;
|
private final List<String> objectiveNames = new ArrayList<>();
|
||||||
|
|
||||||
public ScoreboardManager(SkyBlock skyblock) {
|
public ScoreboardManager(SkyBlock skyblock) {
|
||||||
this.skyblock = skyblock;
|
this.skyblock = skyblock;
|
||||||
this.scoreboardStorage = new HashMap<>();
|
|
||||||
this.teamNames = new ArrayList<>();
|
|
||||||
this.objectiveNames = new ArrayList<>();
|
|
||||||
this.runTaskTimer(skyblock, 20, 40);
|
this.runTaskTimer(skyblock, 20, 40);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,45 +39,7 @@ public class ScoreboardManager extends BukkitRunnable {
|
|||||||
public void run() {
|
public void run() {
|
||||||
|
|
||||||
if (runTicks++ == 0) {
|
if (runTicks++ == 0) {
|
||||||
IslandManager islandManager = skyblock.getIslandManager();
|
updateScoreboards(true);
|
||||||
FileManager fileManager = skyblock.getFileManager();
|
|
||||||
|
|
||||||
if (fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Scoreboard.Enable")) {
|
|
||||||
Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
|
||||||
|
|
||||||
for (Player all : Bukkit.getOnlinePlayers()) {
|
|
||||||
Scoreboard scoreboard = new Scoreboard(skyblock, all);
|
|
||||||
Island island = islandManager.getIsland(all);
|
|
||||||
|
|
||||||
if (island == null) {
|
|
||||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', config.getFileConfiguration().getString("Scoreboard.Tutorial.Displayname")));
|
|
||||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Tutorial.Displaylines"));
|
|
||||||
} else {
|
|
||||||
if (island.getRole(IslandRole.Member).size() == 0 && island.getRole(IslandRole.Operator).size() == 0) {
|
|
||||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', config.getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname")));
|
|
||||||
|
|
||||||
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
|
||||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Empty.Displaylines"));
|
|
||||||
} else {
|
|
||||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Occupied.Displaylines"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', config.getFileConfiguration().getString("Scoreboard.Island.Team.Displayname")));
|
|
||||||
|
|
||||||
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
|
||||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Team.Empty.Displaylines"));
|
|
||||||
} else {
|
|
||||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Team.Occupied.Displaylines"));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
scoreboard.run();
|
|
||||||
storeScoreboard(all, scoreboard);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,7 +64,6 @@ public class ScoreboardManager extends BukkitRunnable {
|
|||||||
final Objective objective = board.getObjective(name);
|
final Objective objective = board.getObjective(name);
|
||||||
|
|
||||||
if (objective != null) objective.unregister();
|
if (objective != null) objective.unregister();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (String name : teamNames) {
|
for (String name : teamNames) {
|
||||||
@ -123,7 +74,6 @@ public class ScoreboardManager extends BukkitRunnable {
|
|||||||
|
|
||||||
if (team != null) team.unregister();
|
if (team != null) team.unregister();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -152,7 +102,8 @@ public class ScoreboardManager extends BukkitRunnable {
|
|||||||
|
|
||||||
Objective obj = playerBoard.getObjective(primaryObjective.getName());
|
Objective obj = playerBoard.getObjective(primaryObjective.getName());
|
||||||
|
|
||||||
if (obj == null) obj = playerBoard.registerNewObjective(primaryObjective.getName(), primaryObjective.getCriteria());
|
if (obj == null)
|
||||||
|
obj = playerBoard.registerNewObjective(primaryObjective.getName(), primaryObjective.getCriteria());
|
||||||
|
|
||||||
obj.setDisplayName(primaryObjective.getDisplayName());
|
obj.setDisplayName(primaryObjective.getDisplayName());
|
||||||
obj.setDisplaySlot(primaryObjective.getDisplaySlot());
|
obj.setDisplaySlot(primaryObjective.getDisplaySlot());
|
||||||
@ -182,62 +133,73 @@ public class ScoreboardManager extends BukkitRunnable {
|
|||||||
obj.setOption(option, primaryTeam.getOption(option));
|
obj.setOption(option, primaryTeam.getOption(option));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
public void updateScoreboards(boolean createNew) {
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void resendScoreboard() {
|
|
||||||
IslandManager islandManager = skyblock.getIslandManager();
|
|
||||||
FileManager fileManager = skyblock.getFileManager();
|
FileManager fileManager = skyblock.getFileManager();
|
||||||
|
|
||||||
if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Scoreboard.Enable")) return;
|
if (!fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Scoreboard.Enable"))
|
||||||
Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
return;
|
||||||
|
|
||||||
for (Player all : Bukkit.getOnlinePlayers()) {
|
for (Player all : Bukkit.getOnlinePlayers()) {
|
||||||
if (!hasScoreboard(all)) continue;
|
|
||||||
|
|
||||||
Scoreboard scoreboard = getScoreboard(all);
|
boolean store = false;
|
||||||
|
|
||||||
|
Scoreboard scoreboard = null;
|
||||||
|
if (hasScoreboard(all))
|
||||||
|
scoreboard = getScoreboard(all);
|
||||||
|
else {
|
||||||
|
if (createNew) {
|
||||||
|
scoreboard = new Scoreboard(skyblock, all);
|
||||||
|
store = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (scoreboard == null) continue;
|
||||||
|
|
||||||
|
IslandManager islandManager = skyblock.getIslandManager();
|
||||||
|
Config language = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml"));
|
||||||
Island island = islandManager.getIsland(all);
|
Island island = islandManager.getIsland(all);
|
||||||
|
|
||||||
if (island == null) {
|
if (island == null) {
|
||||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', config.getFileConfiguration().getString("Scoreboard.Tutorial.Displayname")));
|
scoreboard.setDisplayName(color(language.getFileConfiguration().getString("Scoreboard.Tutorial.Displayname")));
|
||||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Tutorial.Displaylines"));
|
scoreboard.setDisplayList(language.getFileConfiguration().getStringList("Scoreboard.Tutorial.Displaylines"));
|
||||||
} else {
|
} else {
|
||||||
if (island.getRole(IslandRole.Member).size() == 0 && island.getRole(IslandRole.Operator).size() == 0) {
|
if (island.getRole(IslandRole.Member).size() == 0 && island.getRole(IslandRole.Operator).size() == 0) {
|
||||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', config.getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname")));
|
scoreboard.setDisplayName(color(language.getFileConfiguration().getString("Scoreboard.Island.Solo.Displayname")));
|
||||||
|
|
||||||
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
||||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Empty.Displaylines"));
|
scoreboard.setDisplayList(language.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Empty.Displaylines"));
|
||||||
} else {
|
} else {
|
||||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Occupied.Displaylines"));
|
scoreboard.setDisplayList(language.getFileConfiguration().getStringList("Scoreboard.Island.Solo.Occupied.Displaylines"));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
scoreboard.setDisplayName(ChatColor.translateAlternateColorCodes('&', config.getFileConfiguration().getString("Scoreboard.Island.Team.Displayname")));
|
scoreboard.setDisplayName(color(language.getFileConfiguration().getString("Scoreboard.Island.Team.Displayname")));
|
||||||
|
|
||||||
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
if (islandManager.getVisitorsAtIsland(island).size() == 0) {
|
||||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Team.Empty.Displaylines"));
|
scoreboard.setDisplayList(language.getFileConfiguration().getStringList("Scoreboard.Island.Team.Empty.Displaylines"));
|
||||||
} else {
|
} else {
|
||||||
scoreboard.setDisplayList(config.getFileConfiguration().getStringList("Scoreboard.Island.Team.Occupied.Displaylines"));
|
scoreboard.setDisplayList(language.getFileConfiguration().getStringList("Scoreboard.Island.Team.Occupied.Displaylines"));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
scoreboard.run();
|
scoreboard.run();
|
||||||
|
if (store) storeScoreboard(all, scoreboard);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String color(String str) {
|
||||||
|
return str != null ? ChatColor.translateAlternateColorCodes('&', str) : null;
|
||||||
|
}
|
||||||
|
|
||||||
public void storeScoreboard(Player player, Scoreboard scoreboard) {
|
public void storeScoreboard(Player player, Scoreboard scoreboard) {
|
||||||
scoreboardStorage.put(player.getUniqueId(), scoreboard);
|
scoreboardStorage.put(player.getUniqueId(), scoreboard);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void unloadPlayer(Player player) {
|
|
||||||
scoreboardStorage.remove(player.getUniqueId());
|
|
||||||
}
|
|
||||||
|
|
||||||
public Scoreboard getScoreboard(Player player) {
|
public Scoreboard getScoreboard(Player player) {
|
||||||
if (scoreboardStorage.containsKey(player.getUniqueId())) {
|
if (scoreboardStorage.containsKey(player.getUniqueId())) {
|
||||||
return scoreboardStorage.get(player.getUniqueId());
|
return scoreboardStorage.get(player.getUniqueId());
|
||||||
|
Loading…
Reference in New Issue
Block a user