Add WIP TabListHandler class
This commit is contained in:
parent
2eddb833d4
commit
ec86f75619
6 changed files with 144 additions and 0 deletions
|
@ -51,6 +51,9 @@ dependencies {
|
||||||
|
|
||||||
// Plugins
|
// Plugins
|
||||||
compileOnly("net.luckperms:api:${dependencyLuckPerms}")
|
compileOnly("net.luckperms:api:${dependencyLuckPerms}")
|
||||||
|
|
||||||
|
// Bukkit libraries
|
||||||
|
implementation("fr.mrmicky:fastboard:${dependencyFastboard}")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set Java version
|
// Set Java version
|
||||||
|
|
|
@ -89,6 +89,7 @@ public final class Extension extends JavaPlugin {
|
||||||
ExtensionInformation.update();
|
ExtensionInformation.update();
|
||||||
TranslationManager.loadTranslations();
|
TranslationManager.loadTranslations();
|
||||||
TranslationManager.processTranslations();
|
TranslationManager.processTranslations();
|
||||||
|
//TabListHandler.initialize();
|
||||||
PlayerDataFactory.initialize();
|
PlayerDataFactory.initialize();
|
||||||
|
|
||||||
logger.info("Bootstrapped in " + Miscellaneous.measureExecutionTime(() -> {}) + "ms");
|
logger.info("Bootstrapped in " + Miscellaneous.measureExecutionTime(() -> {}) + "ms");
|
||||||
|
|
|
@ -51,6 +51,7 @@ public enum LanguageString {
|
||||||
|
|
||||||
// Connection errors
|
// Connection errors
|
||||||
CONNECTION_ERROR_REGISTRATION,
|
CONNECTION_ERROR_REGISTRATION,
|
||||||
|
CONNECTION_ERROR_TABLISTHANDLER,
|
||||||
|
|
||||||
// Command /psse
|
// Command /psse
|
||||||
EXTENSIONCMD_GREETER,
|
EXTENSIONCMD_GREETER,
|
||||||
|
|
|
@ -0,0 +1,137 @@
|
||||||
|
/*
|
||||||
|
* PICKSHADOW SERVER KIT SOURCE FILE
|
||||||
|
* Copyright (c) 2024 The PickShadow Server Kit authors
|
||||||
|
* Licensed under the GNU Affero General Public License v3
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.jeremystartm.pickshadow.misc;
|
||||||
|
|
||||||
|
import de.jeremystartm.pickshadow.Extension;
|
||||||
|
import de.jeremystartm.pickshadow.api.entity.player.PlayerData;
|
||||||
|
import de.staropensource.sosengine.base.logging.LoggerInstance;
|
||||||
|
import fr.mrmicky.fastboard.adventure.FastBoard;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles and manages scoreboards
|
||||||
|
* and the player tab list.
|
||||||
|
* <p>
|
||||||
|
* Doesn't work at all and
|
||||||
|
* should not be used.
|
||||||
|
*
|
||||||
|
* @since v1-release0
|
||||||
|
*/
|
||||||
|
@ApiStatus.Experimental
|
||||||
|
@SuppressWarnings({ "JavadocDeclaration" })
|
||||||
|
public final class TabListHandler {
|
||||||
|
/**
|
||||||
|
* Contains the global instance of this class.
|
||||||
|
*
|
||||||
|
* @since v1-release0
|
||||||
|
* -- GETTER --
|
||||||
|
* Returns the global instance of this class.
|
||||||
|
*
|
||||||
|
* @return global instance
|
||||||
|
* @since v1-release0
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
private static TabListHandler instance = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains the logger instance for this class.
|
||||||
|
*
|
||||||
|
* @since v1-release0
|
||||||
|
*/
|
||||||
|
private final LoggerInstance logger = new LoggerInstance.Builder().setClazz(getClass()).setOrigin("PSSE").build();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains the content of the tab list.
|
||||||
|
* Each entry represents one line.
|
||||||
|
*
|
||||||
|
* @since v1-release0
|
||||||
|
*/
|
||||||
|
private final @NotNull List<@NotNull String> content = List.of(
|
||||||
|
"Line 1",
|
||||||
|
"Line 2",
|
||||||
|
"Line DREI",
|
||||||
|
"Line 4",
|
||||||
|
"Line 5"
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates and initializes an instance of this class.
|
||||||
|
*
|
||||||
|
* @since v1-release0
|
||||||
|
*/
|
||||||
|
private TabListHandler() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the scoreboard handler,
|
||||||
|
* if it hasn't been already.
|
||||||
|
*
|
||||||
|
* @since v1-release0
|
||||||
|
*/
|
||||||
|
public static void initialize() {
|
||||||
|
if (instance == null)
|
||||||
|
instance = new TabListHandler();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the tab list for
|
||||||
|
* some {@link PlayerData} instance.
|
||||||
|
*
|
||||||
|
* @since v1-release0
|
||||||
|
*/
|
||||||
|
public void initializeTabList(@NotNull PlayerData playerData) {
|
||||||
|
logger.verb("Initializing player list for player " + playerData.getPlayer().getName() + " (" + playerData.getPlayer().getUniqueId() + ")");
|
||||||
|
|
||||||
|
// Initialize FastBoard
|
||||||
|
FastBoard board = new FastBoard(playerData.getPlayer());
|
||||||
|
playerData.setPlayerListScoreboard(board);
|
||||||
|
|
||||||
|
// Configure FastBoard
|
||||||
|
board.updateTitle(MiniMessage.miniMessage().deserialize("<red>TabList <italic>yay</italic></red>"));
|
||||||
|
|
||||||
|
// Schedule update
|
||||||
|
updateTabList(playerData, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the tab list.
|
||||||
|
*
|
||||||
|
* @since v1-release0
|
||||||
|
*/
|
||||||
|
public void updateTabList(@NotNull PlayerData playerData, boolean justSchedule) {
|
||||||
|
// Schedule next update
|
||||||
|
playerData.getPlayer().getScheduler().execute(Extension.getInstance(), () -> updateTabList(playerData, false), null, 20);
|
||||||
|
|
||||||
|
// Stop further execution if 'justSchedule' is true
|
||||||
|
if (justSchedule)
|
||||||
|
return;
|
||||||
|
|
||||||
|
logger.verb("Updating player list for player " + playerData.getPlayer().getName() + " (" + playerData.getPlayer().getUniqueId() + ")");
|
||||||
|
|
||||||
|
for (int line = 0; line < content.size(); line++) {
|
||||||
|
logger.verb("Processing line " + line + " for player " + playerData.getPlayer().getName() + " (" + playerData.getPlayer().getUniqueId() + ")");
|
||||||
|
playerData.getPlayerListScoreboard().updateLine(line, MiniMessage.miniMessage().deserialize(content.get(line)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -20,6 +20,7 @@
|
||||||
"ERROR_PLAYER_NOT_FOUND": "<error>The player <mention>%player%</mention> could not be found.</error>",
|
"ERROR_PLAYER_NOT_FOUND": "<error>The player <mention>%player%</mention> could not be found.</error>",
|
||||||
|
|
||||||
"CONNECTION_ERROR_REGISTRATION": "<error>Unable to process log in",
|
"CONNECTION_ERROR_REGISTRATION": "<error>Unable to process log in",
|
||||||
|
"CONNECTION_ERROR_TABLISTHANDLER": "<error>TabListHandler failed unexpectedly",
|
||||||
|
|
||||||
"EXTENSIONCMD_GREETER": "<generic>This subserver is running <#d60532><bold>PSSE</bold> \"<italic>%codename%</italic>\" <italic>@ %version% (%commit%, dirty %dirty%)</italic></generic>\n<generic>To view additional information, invoke some subcommands.",
|
"EXTENSIONCMD_GREETER": "<generic>This subserver is running <#d60532><bold>PSSE</bold> \"<italic>%codename%</italic>\" <italic>@ %version% (%commit%, dirty %dirty%)</italic></generic>\n<generic>To view additional information, invoke some subcommands.",
|
||||||
"EXTENSIONCMD_KILLJVM": "<generic>Bye bye!",
|
"EXTENSIONCMD_KILLJVM": "<generic>Bye bye!",
|
||||||
|
|
|
@ -37,6 +37,7 @@ dependencyGson=2.11.0
|
||||||
dependencyPaper=R0.1
|
dependencyPaper=R0.1
|
||||||
dependencyAdventure=4.17.0
|
dependencyAdventure=4.17.0
|
||||||
dependencyLuckPerms=5.4
|
dependencyLuckPerms=5.4
|
||||||
|
dependencyFastboard=2.1.3
|
||||||
|
|
||||||
# Plugins
|
# Plugins
|
||||||
pluginLombok=8.6
|
pluginLombok=8.6
|
||||||
|
|
Loading…
Reference in a new issue