Ajout de tab premium hook

This commit is contained in:
Maxlego08 2021-01-07 11:45:22 +01:00
parent 7234f7c672
commit 36efa82f51
7 changed files with 88 additions and 16 deletions

View File

@ -2,5 +2,5 @@ name: zKoth
author: Maxlego08
main: fr.maxlego08.zkoth.ZKothPlugin
version: 2.0.0.2
softdepend: [PlaceholderAPI, Guilds, Factions, FactionsX, SuperiorSkyblock2, LegacyFactions, FeatherBoard]
softdepend: [PlaceholderAPI, Guilds, Factions, FactionsX, SuperiorSkyblock2, LegacyFactions, FeatherBoard, TAB]
commands:

View File

@ -11,6 +11,7 @@ import fr.maxlego08.zkoth.save.Config;
import fr.maxlego08.zkoth.save.MessageLoader;
import fr.maxlego08.zkoth.scoreboard.ScoreBoardManager;
import fr.maxlego08.zkoth.scoreboard.implementations.FeatherBoardHook;
import fr.maxlego08.zkoth.scoreboard.implementations.TabPremiumHook;
import fr.maxlego08.zkoth.zcore.ZPlugin;
import fr.maxlego08.zkoth.zcore.utils.plugins.Metrics;
import fr.maxlego08.zkoth.zcore.utils.plugins.Plugins;
@ -58,10 +59,11 @@ public class ZKothPlugin extends ZPlugin {
if (this.isEnable(Plugins.FEATHERBOARD)) {
this.scoreboardManager.setScoreboard(new FeatherBoardHook());
} else if (this.isEnable(Plugins.TAB)) {
this.scoreboardManager.setScoreboard(new TabPremiumHook());
}
this.scoreboardManager.setDefaultScoreboard();
getSavers().forEach(saver -> saver.load(getPersist()));
new Metrics(this, 6924);

View File

@ -1,19 +1,22 @@
package fr.maxlego08.zkoth.api;
import java.util.function.Consumer;
import org.bukkit.entity.Player;
public interface Scoreboard {
/**
*
* @param player
*/
public void toggle(Player player);
public void toggle(Player player, Consumer<Player> after);
/**
*
* @param player
*/
public void hide(Player player);
public void hide(Player player, Consumer<Player> after);
}

View File

@ -3,6 +3,7 @@ package fr.maxlego08.zkoth.scoreboard;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@ -74,12 +75,35 @@ public class ScoreBoardManager extends ZUtils {
board.updateLines(lines.accept(player));
boards.put(player, board);
this.scoreboard.hide(player);
this.scoreboard.hide(player, create(board, player, title));
return board;
}
/**
*
* @param player
* @param title
* @return
*/
private Consumer<Player> create(FastBoard current, Player player, String title) {
return p -> {
if (current != null)
current.delete();
boards.remove(player);
FastBoard board = new FastBoard(player);
board.updateTitle(title);
if (lines != null)
board.updateLines(lines.accept(player));
boards.put(player, board);
};
}
/**
* Delete player board
*
@ -91,7 +115,9 @@ public class ScoreBoardManager extends ZUtils {
return false;
FastBoard board = getBoard(player);
board.delete();
this.scoreboard.toggle(player);
this.scoreboard.toggle(player, p -> {
});
return true;
}
@ -114,8 +140,10 @@ public class ScoreBoardManager extends ZUtils {
this.isRunning = false;
this.boards.keySet().forEach(key -> delete(key));
this.boards.clear();
for(Player player : Bukkit.getOnlinePlayers())
this.scoreboard.toggle(player);
for (Player player : Bukkit.getOnlinePlayers())
this.scoreboard.toggle(player, p -> {
});
}
/**
@ -204,15 +232,12 @@ public class ScoreBoardManager extends ZUtils {
public void setDefaultScoreboard() {
if (this.scoreboard == null) {
this.scoreboard = new Scoreboard() {
@Override
public void toggle(Player player) {
public void toggle(Player player, Consumer<Player> after) {
}
@Override
public void hide(Player player) {
public void hide(Player player, Consumer<Player> after) {
}
};
}

View File

@ -1,5 +1,7 @@
package fr.maxlego08.zkoth.scoreboard.implementations;
import java.util.function.Consumer;
import org.bukkit.entity.Player;
import be.maximvdw.featherboard.api.FeatherBoardAPI;
@ -12,13 +14,13 @@ public class FeatherBoardHook implements Scoreboard {
}
@Override
public void toggle(Player player) {
public void toggle(Player player, Consumer<Player> after) {
if (!FeatherBoardAPI.isToggled(player))
FeatherBoardAPI.toggle(player, true);
}
@Override
public void hide(Player player) {
public void hide(Player player, Consumer<Player> after) {
if (FeatherBoardAPI.isToggled(player))
FeatherBoardAPI.toggle(player, true);
}

View File

@ -0,0 +1,39 @@
package fr.maxlego08.zkoth.scoreboard.implementations;
import java.util.function.Consumer;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import fr.maxlego08.zkoth.api.Scoreboard;
import fr.maxlego08.zkoth.zcore.ZPlugin;
import me.neznamy.tab.api.TABAPI;
import me.neznamy.tab.api.TabPlayer;
public class TabPremiumHook implements Scoreboard {
@Override
public void toggle(Player player, Consumer<Player> after) {
TabPlayer tabPlayer = TABAPI.getPlayer(player.getUniqueId());
System.out.println(tabPlayer);
if (tabPlayer != null && !tabPlayer.isScoreboardVisible())
tabPlayer.toggleScoreboard(false);
}
@Override
public void hide(Player player, Consumer<Player> after) {
TabPlayer tabPlayer = TABAPI.getPlayer(player.getUniqueId());
if (tabPlayer != null && tabPlayer.isScoreboardVisible())
tabPlayer.toggleScoreboard(false);
else
Bukkit.getScheduler().runTaskLater(ZPlugin.z(), () -> {
final TabPlayer tabPlayer2 = TABAPI.getPlayer(player.getUniqueId());
if (tabPlayer2 != null && tabPlayer2.isScoreboardVisible()) {
tabPlayer2.toggleScoreboard(false);
if (after != null)
after.accept(player);
}
}, 20);
}
}

View File

@ -5,6 +5,7 @@ public enum Plugins {
VAULT("Vault"),
ESSENTIALS("Essentials"),
FEATHERBOARD("FeatherBoard"),
TAB("TAB"),
;