Multiverse-Core/src/main/java/org/mvplugins/multiverse/core/world/config/LegacyAliasMigrator.java

90 lines
2.7 KiB
Java

package org.mvplugins.multiverse.core.world.config;
import java.util.concurrent.atomic.AtomicReference;
import io.vavr.control.Try;
import org.bukkit.ChatColor;
import org.bukkit.configuration.ConfigurationSection;
import org.mvplugins.multiverse.core.configuration.migration.MigratorAction;
class LegacyAliasMigrator implements MigratorAction {
@Override
public void migrate(ConfigurationSection config) {
AtomicReference<String> alias = new AtomicReference<>(config.getString("alias", ""));
if (alias.get().isEmpty()) return;
String color = config.getString("color", "");
String style = config.getString("style", "");
Try.of(() -> Enum.valueOf(EnglishChatColor.class, color.toUpperCase()))
.map(c -> c.color)
.onSuccess(c -> {
if (c != ChatColor.WHITE) {
alias.set("&" + c.getChar() + alias.get());
}
});
Try.of(() -> Enum.valueOf(EnglishChatStyle.class, style.toUpperCase()))
.map(c -> c.color)
.onSuccess(s -> {
if (s != null) {
alias.set("&" + s.getChar() + alias.get());
}
});
config.set("alias", alias.get());
config.set("color", null);
config.set("style", null);
}
private enum EnglishChatColor {
// BEGIN CHECKSTYLE-SUPPRESSION: JavadocVariable
AQUA(ChatColor.AQUA),
BLACK(ChatColor.BLACK),
BLUE(ChatColor.BLUE),
DARKAQUA(ChatColor.DARK_AQUA),
DARKBLUE(ChatColor.DARK_BLUE),
DARKGRAY(ChatColor.DARK_GRAY),
DARKGREEN(ChatColor.DARK_GREEN),
DARKPURPLE(ChatColor.DARK_PURPLE),
DARKRED(ChatColor.DARK_RED),
GOLD(ChatColor.GOLD),
GRAY(ChatColor.GRAY),
GREEN(ChatColor.GREEN),
LIGHTPURPLE(ChatColor.LIGHT_PURPLE),
RED(ChatColor.RED),
YELLOW(ChatColor.YELLOW),
WHITE(ChatColor.WHITE);
// END CHECKSTYLE-SUPPRESSION: JavadocVariable
private final ChatColor color;
//private final String text;
EnglishChatColor(ChatColor color) {
this.color = color;
}
}
private enum EnglishChatStyle {
// BEGIN CHECKSTYLE-SUPPRESSION: JavadocVariable
/**
* No style.
*/
NORMAL(null),
MAGIC(ChatColor.MAGIC),
BOLD(ChatColor.BOLD),
STRIKETHROUGH(ChatColor.STRIKETHROUGH),
UNDERLINE(ChatColor.UNDERLINE),
ITALIC(ChatColor.ITALIC);
// END CHECKSTYLE-SUPPRESSION: JavadocVariable
private final ChatColor color;
EnglishChatStyle(ChatColor color) {
this.color = color;
}
}
}