Added Halloween decorations
This commit is contained in:
parent
2d5e9d4515
commit
a43a4e5d16
|
@ -9,6 +9,8 @@ import org.bukkit.command.CommandSender;
|
|||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public final class ExcludeCommand implements CommandExecutor {
|
||||
|
||||
|
@ -38,6 +40,12 @@ public final class ExcludeCommand implements CommandExecutor {
|
|||
else if (args.length >= 2) {
|
||||
String playerName = args[1];
|
||||
switch (args[0]) {
|
||||
case "test" -> {
|
||||
List<String> converted = new ArrayList<>(List.copyOf(Arrays.asList(args)));
|
||||
converted.remove(0);
|
||||
outputManager.sendTest(sender, converted.toArray(new String[0]));
|
||||
return true;
|
||||
}
|
||||
case "add" -> {
|
||||
if (offlinePlayerHandler.isLoadedPlayer(playerName)) {
|
||||
offlinePlayerHandler.addLoadedPlayerToExcludeList(playerName);
|
||||
|
|
|
@ -36,7 +36,7 @@ import static net.kyori.adventure.text.Component.*;
|
|||
*/
|
||||
public final class MessageBuilder implements StatFormatter {
|
||||
|
||||
private static ConfigHandler config;
|
||||
private final ConfigHandler config;
|
||||
private boolean useHoverText;
|
||||
private boolean isConsoleBuilder;
|
||||
|
||||
|
@ -45,28 +45,24 @@ public final class MessageBuilder implements StatFormatter {
|
|||
private final NumberFormatter formatter;
|
||||
private final ComponentSerializer serializer;
|
||||
|
||||
private MessageBuilder(ConfigHandler config, LanguageKeyHandler language) {
|
||||
this (config, language, new ComponentFactory(config));
|
||||
}
|
||||
|
||||
private MessageBuilder(ConfigHandler configHandler, LanguageKeyHandler language, ComponentFactory factory) {
|
||||
config = configHandler;
|
||||
useHoverText = config.useHoverText();
|
||||
private MessageBuilder(ComponentFactory factory) {
|
||||
config = ConfigHandler.getInstance();
|
||||
languageKeyHandler = LanguageKeyHandler.getInstance();
|
||||
componentFactory = factory;
|
||||
|
||||
languageKeyHandler = language;
|
||||
useHoverText = config.useHoverText();
|
||||
formatter = new NumberFormatter();
|
||||
serializer = new ComponentSerializer(languageKeyHandler);
|
||||
serializer = new ComponentSerializer();
|
||||
}
|
||||
|
||||
@Contract("_, _ -> new")
|
||||
public static @NotNull MessageBuilder defaultBuilder(ConfigHandler config, LanguageKeyHandler language) {
|
||||
return new MessageBuilder(config, language);
|
||||
@Contract(" -> new")
|
||||
public static @NotNull MessageBuilder defaultBuilder() {
|
||||
return new MessageBuilder(new ComponentFactory());
|
||||
}
|
||||
|
||||
@Contract("_, _, _ -> new")
|
||||
public static @NotNull MessageBuilder fromComponentFactory(ConfigHandler config, LanguageKeyHandler language, ComponentFactory factory) {
|
||||
return new MessageBuilder(config, language, factory);
|
||||
@Contract("_ -> new")
|
||||
public static @NotNull MessageBuilder fromComponentFactory(ComponentFactory factory) {
|
||||
return new MessageBuilder(factory);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -93,7 +89,7 @@ public final class MessageBuilder implements StatFormatter {
|
|||
|
||||
@Override
|
||||
public TextComponent getRainbowPluginPrefix() {
|
||||
PrideComponentFactory pride = new PrideComponentFactory(config);
|
||||
PrideComponentFactory pride = new PrideComponentFactory();
|
||||
return pride.rainbowPrefix();
|
||||
}
|
||||
|
||||
|
@ -104,7 +100,7 @@ public final class MessageBuilder implements StatFormatter {
|
|||
|
||||
@Override
|
||||
public TextComponent getRainbowPluginPrefixAsTitle() {
|
||||
PrideComponentFactory pride = new PrideComponentFactory(config);
|
||||
PrideComponentFactory pride = new PrideComponentFactory();
|
||||
return pride.pluginPrefixAsTitle();
|
||||
}
|
||||
|
||||
|
|
|
@ -4,12 +4,14 @@ import com.artemis.the.gr8.playerstats.api.StatFormatter;
|
|||
import com.artemis.the.gr8.playerstats.config.ConfigHandler;
|
||||
import com.artemis.the.gr8.playerstats.enums.StandardMessage;
|
||||
import com.artemis.the.gr8.playerstats.msg.components.BukkitConsoleComponentFactory;
|
||||
import com.artemis.the.gr8.playerstats.msg.components.HalloweenComponentFactory;
|
||||
import com.artemis.the.gr8.playerstats.msg.components.PrideComponentFactory;
|
||||
import com.artemis.the.gr8.playerstats.msg.msgutils.FormattingFunction;
|
||||
import com.artemis.the.gr8.playerstats.msg.msgutils.LanguageKeyHandler;
|
||||
import com.artemis.the.gr8.playerstats.statistic.StatRequest;
|
||||
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.ConsoleCommandSender;
|
||||
|
@ -37,13 +39,11 @@ public final class OutputManager {
|
|||
private static EnumMap<StandardMessage, Function<MessageBuilder, TextComponent>> standardMessages;
|
||||
|
||||
private final ConfigHandler config;
|
||||
private final LanguageKeyHandler languageKeyHandler;
|
||||
private MessageBuilder messageBuilder;
|
||||
private MessageBuilder consoleMessageBuilder;
|
||||
|
||||
public OutputManager(BukkitAudiences adventure) {
|
||||
OutputManager.adventure = adventure;
|
||||
languageKeyHandler = LanguageKeyHandler.getInstance();
|
||||
config = ConfigHandler.getInstance();
|
||||
|
||||
getMessageBuilders();
|
||||
|
@ -128,6 +128,16 @@ public final class OutputManager {
|
|||
.excludeInfoMsg());
|
||||
}
|
||||
|
||||
public void sendTest(@NotNull CommandSender sender, String[] args) {
|
||||
StringBuilder msg = new StringBuilder();
|
||||
for (String arg : args) {
|
||||
char text = (char) Integer.parseInt(arg, 16);
|
||||
msg.append(text);
|
||||
}
|
||||
Component test = MiniMessage.miniMessage().deserialize(msg.toString());
|
||||
adventure.sender(sender).sendMessage(test);
|
||||
}
|
||||
|
||||
public void sendToAllPlayers(@NotNull TextComponent component) {
|
||||
adventure.players().sendMessage(component);
|
||||
}
|
||||
|
@ -147,15 +157,17 @@ public final class OutputManager {
|
|||
|
||||
private MessageBuilder getClientMessageBuilder() {
|
||||
if (useRainbowStyle()) {
|
||||
return MessageBuilder.fromComponentFactory(config, languageKeyHandler, new PrideComponentFactory(config));
|
||||
return MessageBuilder.fromComponentFactory(new PrideComponentFactory());
|
||||
} else if (useHalloweenStyle()) {
|
||||
return MessageBuilder.fromComponentFactory(new HalloweenComponentFactory());
|
||||
}
|
||||
return MessageBuilder.defaultBuilder(config, languageKeyHandler);
|
||||
return MessageBuilder.defaultBuilder();
|
||||
}
|
||||
|
||||
private @NotNull MessageBuilder getConsoleMessageBuilder() {
|
||||
MessageBuilder consoleBuilder;
|
||||
if (isBukkit()) {
|
||||
consoleBuilder = MessageBuilder.fromComponentFactory(config,languageKeyHandler, new BukkitConsoleComponentFactory(config));
|
||||
consoleBuilder = MessageBuilder.fromComponentFactory(new BukkitConsoleComponentFactory());
|
||||
} else {
|
||||
consoleBuilder = getClientMessageBuilder();
|
||||
}
|
||||
|
@ -168,6 +180,10 @@ public final class OutputManager {
|
|||
return config.useRainbowMode() || (config.useFestiveFormatting() && LocalDate.now().getMonth().equals(Month.JUNE));
|
||||
}
|
||||
|
||||
private boolean useHalloweenStyle() {
|
||||
return config.useFestiveFormatting() && LocalDate.now().getMonth().equals(Month.OCTOBER);
|
||||
}
|
||||
|
||||
private boolean isBukkit() {
|
||||
return Bukkit.getName().equalsIgnoreCase("CraftBukkit");
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package com.artemis.the.gr8.playerstats.msg.components;
|
||||
|
||||
import com.artemis.the.gr8.playerstats.enums.PluginColor;
|
||||
import com.artemis.the.gr8.playerstats.config.ConfigHandler;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.text.format.TextColor;
|
||||
|
@ -18,8 +17,8 @@ import static net.kyori.adventure.text.Component.text;
|
|||
*/
|
||||
public class BukkitConsoleComponentFactory extends ComponentFactory {
|
||||
|
||||
public BukkitConsoleComponentFactory(ConfigHandler config) {
|
||||
super(config);
|
||||
public BukkitConsoleComponentFactory() {
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -14,6 +14,7 @@ import net.kyori.adventure.text.event.HoverEvent;
|
|||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.text.format.TextColor;
|
||||
import net.kyori.adventure.text.format.TextDecoration;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import net.kyori.adventure.util.HSVLike;
|
||||
import net.kyori.adventure.util.Index;
|
||||
import org.bukkit.Bukkit;
|
||||
|
@ -52,8 +53,8 @@ public class ComponentFactory {
|
|||
protected TextColor MSG_CLICKED; //light_purple
|
||||
|
||||
|
||||
public ComponentFactory(ConfigHandler c) {
|
||||
config = c;
|
||||
public ComponentFactory() {
|
||||
config = ConfigHandler.getInstance();
|
||||
prepareColors();
|
||||
}
|
||||
|
||||
|
@ -75,6 +76,13 @@ public class ComponentFactory {
|
|||
MSG_CLICKED = PluginColor.LIGHT_PURPLE.getColor();
|
||||
}
|
||||
|
||||
@Contract("_ -> new")
|
||||
protected @NotNull TextComponent miniMessageToComponent(String input) {
|
||||
return text()
|
||||
.append(MiniMessage.miniMessage().deserialize(input))
|
||||
.build();
|
||||
}
|
||||
|
||||
public TextComponent getExampleName() {
|
||||
return text("Artemis_the_gr8").color(INFO_MSG_ACCENT_2);
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ import java.util.List;
|
|||
|
||||
import static net.kyori.adventure.text.Component.text;
|
||||
|
||||
public class ExcludeInfoMessage implements TextComponent {
|
||||
public final class ExcludeInfoMessage implements TextComponent {
|
||||
|
||||
private final TextComponent excludeInfo;
|
||||
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
package com.artemis.the.gr8.playerstats.msg.components;
|
||||
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
|
||||
public class HalloweenComponentFactory extends ComponentFactory {
|
||||
|
||||
|
||||
public HalloweenComponentFactory() {
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextComponent pluginPrefixAsTitle() {
|
||||
return miniMessageToComponent(
|
||||
"<gradient:#f74040:gold:#FF6600:#f74040>" +
|
||||
"<white>\u2620</white> __________ [PlayerStats] __________ " +
|
||||
"<white>\u2620</white></gradient>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextComponent pluginPrefix() {
|
||||
return miniMessageToComponent(
|
||||
"<gradient:#f74040:gold:#f74040>[PlayerStats]</gradient>");
|
||||
}
|
||||
}
|
|
@ -1,16 +1,11 @@
|
|||
package com.artemis.the.gr8.playerstats.msg.components;
|
||||
|
||||
import com.artemis.the.gr8.playerstats.config.ConfigHandler;
|
||||
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import org.jetbrains.annotations.Contract;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import static net.kyori.adventure.text.Component.*;
|
||||
|
||||
/**
|
||||
* A festive version of the {@link ComponentFactory}
|
||||
*/
|
||||
|
@ -18,25 +13,25 @@ public class PrideComponentFactory extends ComponentFactory {
|
|||
|
||||
private final Random random;
|
||||
|
||||
public PrideComponentFactory(ConfigHandler config) {
|
||||
super(config);
|
||||
public PrideComponentFactory() {
|
||||
super();
|
||||
random = new Random();
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextComponent getExampleName() {
|
||||
return deserialize("<gradient:#f74040:gold:#FF6600:#f74040>Artemis_the_gr8</gradient>");
|
||||
return miniMessageToComponent("<gradient:#f74040:gold:#FF6600:#f74040>Artemis_the_gr8</gradient>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextComponent sharerName(String sharerName) {
|
||||
return deserialize(decorateWithRandomGradient(sharerName));
|
||||
return miniMessageToComponent(decorateWithRandomGradient(sharerName));
|
||||
}
|
||||
|
||||
@Override
|
||||
//12 underscores
|
||||
public TextComponent pluginPrefixAsTitle() {
|
||||
return deserialize("<rainbow:16>____________ [PlayerStats] ____________</rainbow>");
|
||||
return miniMessageToComponent("<rainbow:16>____________ [PlayerStats] ____________</rainbow>");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -48,7 +43,7 @@ public class PrideComponentFactory extends ComponentFactory {
|
|||
}
|
||||
|
||||
public TextComponent rainbowPrefix() {
|
||||
return deserialize("<#f74040>[</#f74040>" +
|
||||
return miniMessageToComponent("<#f74040>[</#f74040>" +
|
||||
"<#F54D39>P</#F54D39>" +
|
||||
"<#F16E28>l</#F16E28>" +
|
||||
"<#ee8a19>a</#ee8a19>" +
|
||||
|
@ -65,7 +60,7 @@ public class PrideComponentFactory extends ComponentFactory {
|
|||
|
||||
@Contract(" -> new")
|
||||
private @NotNull TextComponent backwardsPluginPrefixComponent() {
|
||||
return deserialize("<#631ae6>[</#631ae6>" +
|
||||
return miniMessageToComponent("<#631ae6>[</#631ae6>" +
|
||||
"<#3341E6>P</#3341E6>" +
|
||||
"<#1F8BEB>l</#1F8BEB>" +
|
||||
"<#01c1a7>a</#01c1a7>" +
|
||||
|
@ -94,11 +89,4 @@ public class PrideComponentFactory extends ComponentFactory {
|
|||
};
|
||||
return colorString + input + "</gradient>";
|
||||
}
|
||||
|
||||
@Contract("_ -> new")
|
||||
private @NotNull TextComponent deserialize(String input) {
|
||||
return text()
|
||||
.append(MiniMessage.miniMessage().deserialize(input))
|
||||
.build();
|
||||
}
|
||||
}
|
|
@ -13,8 +13,8 @@ public final class ComponentSerializer {
|
|||
|
||||
private final LanguageKeyHandler languageKeyHandler;
|
||||
|
||||
public ComponentSerializer(LanguageKeyHandler languageKeyHandler) {
|
||||
this.languageKeyHandler = languageKeyHandler;
|
||||
public ComponentSerializer() {
|
||||
languageKeyHandler = LanguageKeyHandler.getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue