Added Halloween decorations

This commit is contained in:
Artemis-the-gr8 2022-10-29 13:16:59 +02:00
parent 2d5e9d4515
commit a43a4e5d16
9 changed files with 91 additions and 51 deletions

View File

@ -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);

View File

@ -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();
}

View File

@ -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");
}

View File

@ -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

View File

@ -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);
}

View File

@ -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;

View File

@ -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>");
}
}

View File

@ -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();
}
}

View File

@ -13,8 +13,8 @@ public final class ComponentSerializer {
private final LanguageKeyHandler languageKeyHandler;
public ComponentSerializer(LanguageKeyHandler languageKeyHandler) {
this.languageKeyHandler = languageKeyHandler;
public ComponentSerializer() {
languageKeyHandler = LanguageKeyHandler.getInstance();
}
/**