diff --git a/.github/building/pom.xml b/.github/building/pom.xml index d5c50f61..a9c3c79d 100644 --- a/.github/building/pom.xml +++ b/.github/building/pom.xml @@ -24,7 +24,7 @@ plugily.projects minigamesbox - 1.3.17-SNAPSHOT4 + 1.4.0-SNAPSHOT0 pom @@ -101,21 +101,32 @@ org.apache.maven.plugins maven-compiler-plugin - 3.10.1 + 3.14.0 ${java.version} ${java.version} + UTF-8 org.apache.maven.plugins maven-site-plugin - 3.12.0 + 3.21.0 + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.4 + + + org.apache.maven.plugins + maven-project-info-reports-plugin + 3.9.0 org.jacoco jacoco-maven-plugin - 0.8.8 + 0.8.12 true @@ -153,8 +164,12 @@ - plugily-projects + Release https://maven.plugily.xyz/releases + + Snapshot + https://maven.plugily.xyz/snapshots + diff --git a/MiniGamesBox API/pom.xml b/MiniGamesBox API/pom.xml index 283d3fa8..e7291b97 100644 --- a/MiniGamesBox API/pom.xml +++ b/MiniGamesBox API/pom.xml @@ -23,7 +23,7 @@ minigamesbox plugily.projects - 1.4.0 + 1.4.0-SNAPSHOT7 4.0.0 @@ -53,7 +53,7 @@ com.github.cryptomorin XSeries - 13.0.0 + 13.2.0 provided true diff --git a/MiniGamesBox API/src/main/java/plugily/projects/minigamesbox/api/arena/managers/IPluginScoreboardManager.java b/MiniGamesBox API/src/main/java/plugily/projects/minigamesbox/api/arena/managers/IPluginScoreboardManager.java index 514d967c..bf71e104 100644 --- a/MiniGamesBox API/src/main/java/plugily/projects/minigamesbox/api/arena/managers/IPluginScoreboardManager.java +++ b/MiniGamesBox API/src/main/java/plugily/projects/minigamesbox/api/arena/managers/IPluginScoreboardManager.java @@ -37,7 +37,7 @@ public interface IPluginScoreboardManager { /** * Get Lines from the language.yml according to arena state */ - List getScoreboardLines(); + List getScoreboardLines(Player player); /** * Update lines with defined placeholders diff --git a/MiniGamesBox Classic/pom.xml b/MiniGamesBox Classic/pom.xml index 7c834b6a..7a045e29 100644 --- a/MiniGamesBox Classic/pom.xml +++ b/MiniGamesBox Classic/pom.xml @@ -23,7 +23,7 @@ minigamesbox plugily.projects - 1.4.0 + 1.4.0-SNAPSHOT7 4.0.0 @@ -87,7 +87,7 @@ com.github.cryptomorin XSeries - 13.0.0 + 13.2.0 compile true diff --git a/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/arena/PluginArenaManager.java b/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/arena/PluginArenaManager.java index 83219702..29ab980a 100644 --- a/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/arena/PluginArenaManager.java +++ b/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/arena/PluginArenaManager.java @@ -198,6 +198,7 @@ private boolean canJoinArenaAndMessage(Player player, IPluginArena arena) { return false; } String perm = plugin.getPluginNamePrefixLong() + ".join."; + plugin.getDebugger().debug("[{0}] Initial perm is <{1}> of name <{2}>", arena.getId(), perm, plugin.getPluginNamePrefixLong()); if(!(player.hasPermission(perm.replace("", "*")) || player.hasPermission(perm.replace("", arena.getId())))) { MessageBuilder denyMessage = new MessageBuilder("IN_GAME_JOIN_NO_PERMISSION").asKey().player(player).value(perm.replace("", arena.getId())); if(plugin.getConfigPreferences().getOption("BUNGEEMODE")) { diff --git a/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/arena/managers/PluginScoreboardManager.java b/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/arena/managers/PluginScoreboardManager.java index 0bf6fcd8..38e56895 100644 --- a/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/arena/managers/PluginScoreboardManager.java +++ b/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/arena/managers/PluginScoreboardManager.java @@ -58,19 +58,12 @@ public void createScoreboard(IUser user) { FastBoard board = new FastBoard(player) { @Override public boolean hasLinesMaxLength() { - if(Bukkit.getPluginManager().isPluginEnabled("ViaVersion")) { - try { - return Via.getAPI().getPlayerVersion(getPlayer()) < ProtocolVersion.v1_13.getVersion(); - } catch(Exception ignored) { - //Not using ViaVersion 4 or unable to get ViaVersion return LegacyBoard! - } - } - return !ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_13); + return isLinesMaxLength(getPlayer()); } }; board.updateTitle(boardTitle); - board.updateLines(formatScoreboardLines(getScoreboardLines(), player)); + board.updateLines(formatScoreboardLines(getScoreboardLines(player), player)); boardMap.put(user.getUniqueId(), board); @@ -78,7 +71,7 @@ public boolean hasLinesMaxLength() { @Override public void updateScoreboards() { - boardMap.values().forEach(fastBoard -> fastBoard.updateLines(formatScoreboardLines(getScoreboardLines(), fastBoard.getPlayer()))); + boardMap.values().forEach(fastBoard -> fastBoard.updateLines(formatScoreboardLines(getScoreboardLines(fastBoard.getPlayer()), fastBoard.getPlayer()))); } @Override @@ -93,7 +86,7 @@ public void stopAllScoreboards() { } @Override - public List getScoreboardLines() { + public List getScoreboardLines(Player player) { return new ArrayList<>(plugin.getLanguageManager().getLanguageList(arena.getArenaState() == IArenaState.FULL_GAME ? "Scoreboard.Content.Starting" : "Scoreboard.Content." + arena.getArenaState().getFormattedName())); } @@ -101,10 +94,28 @@ public List getScoreboardLines() { @Override public List formatScoreboardLines(List lines, Player player) { List formattedLines = new ArrayList<>(); + if(isLinesMaxLength(player)) { + List linesWithoutSpecialChars = new ArrayList<>(); + for(String line : lines) { + linesWithoutSpecialChars.add(line.replace("■ ", "").replace("|", "")); + } + lines = linesWithoutSpecialChars; + } for(String line : lines) { formattedLines.add(new MessageBuilder(line).player(player).arena(arena).build()); } return formattedLines; } + private boolean isLinesMaxLength(Player player) { + if(Bukkit.getPluginManager().isPluginEnabled("ViaVersion")) { + try { + return Via.getAPI().getPlayerVersion(player) < ProtocolVersion.v1_13.getVersion(); + } catch(Exception ignored) { + //Not using ViaVersion 4 or unable to get ViaVersion return LegacyBoard! + } + } + return !ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_13); + } + } diff --git a/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/commands/arguments/game/LeaderboardArgument.java b/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/commands/arguments/game/LeaderboardArgument.java index e50dd9df..327adc45 100644 --- a/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/commands/arguments/game/LeaderboardArgument.java +++ b/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/commands/arguments/game/LeaderboardArgument.java @@ -85,11 +85,12 @@ private void printLeaderboard(CommandSender sender, IStatisticType statisticType } private String formatMessage(String statisticName, String playerName, int position, int value) { - String message = new MessageBuilder("LEADERBOARD_TYPE_CHAT_TOP_FORMAT").asKey().build(); + String message = new MessageBuilder("LEADERBOARD_TYPE_CHAT_TOP_FORMAT").asKey().getRaw(); message = message.replace("%number%", Integer.toString(position)); message = message.replace("%player%", playerName); message = message.replace("%value%", Integer.toString(value)); message = message.replace("%user_statistic%", statisticName); + message = new MessageBuilder(message).build(); return message; } diff --git a/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/handlers/hologram/LeaderboardHologram.java b/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/handlers/hologram/LeaderboardHologram.java index 00f6cb7b..1aff27b5 100644 --- a/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/handlers/hologram/LeaderboardHologram.java +++ b/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/handlers/hologram/LeaderboardHologram.java @@ -72,8 +72,9 @@ public void updateHologram() { String text; if(i < reverseKeys.size()) { UUID uuid = reverseKeys.get(i); - text = new MessageBuilder("LEADERBOARD_TYPE_HOLOGRAM_FORMAT").asKey().integer(i + 1).value(String.valueOf(values.get(uuid))).build(); + text = new MessageBuilder("LEADERBOARD_TYPE_HOLOGRAM_FORMAT").asKey().integer(i + 1).value(String.valueOf(values.get(uuid))).getRaw(); text = text.replace("%player%", getPlayerNameSafely(uuid)); + text = new MessageBuilder(text).build(); } else { text = new MessageBuilder("LEADERBOARD_TYPE_HOLOGRAM_EMPTY_FORMAT").asKey().integer(i + 1).build(); } diff --git a/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/handlers/language/MessageBuilder.java b/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/handlers/language/MessageBuilder.java index b0374256..980d807b 100644 --- a/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/handlers/language/MessageBuilder.java +++ b/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/handlers/language/MessageBuilder.java @@ -117,18 +117,21 @@ public MessageBuilder prefix(String prefix) { public MessageBuilder player(Player player) { this.player = player; + colorChatIssue(); formatPlayer(); return this; } public MessageBuilder value(String value) { this.value = value; + colorChatIssue(); formatValue(); return this; } public MessageBuilder integer(int integer) { this.integer = integer; + colorChatIssue(); formatInteger(); return this; } @@ -138,6 +141,7 @@ public MessageBuilder arena(IPluginArena arena) { return this; } this.arena = arena; + colorChatIssue(); formatArena(); return this; } diff --git a/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/handlers/setup/categories/PluginCountableCategory.java b/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/handlers/setup/categories/PluginCountableCategory.java index a8fd7d73..dadcca70 100644 --- a/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/handlers/setup/categories/PluginCountableCategory.java +++ b/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/handlers/setup/categories/PluginCountableCategory.java @@ -47,6 +47,7 @@ public void addItems(NormalFastInv gui) { CountItem minimumPlayers = new CountItem(setupInventory, new ItemBuilder(XMaterial.COAL.parseMaterial()), "Minimum Players", "How many players are needed to start the lobby countdown?", "minimumplayers"); itemList.add(minimumPlayers); gui.setItem((getInventoryLine() * 9) + 1, minimumPlayers); + // could be added minimum players check CountItem maximumPlayers = new CountItem(setupInventory, new ItemBuilder(XMaterial.REDSTONE_BLOCK.parseMaterial()), "Maximum Players", "How many players can the arena hold?", "maximumplayers"); itemList.add(maximumPlayers); gui.setItem((getInventoryLine() * 9) + 2, maximumPlayers); diff --git a/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/preferences/ConfigOption.java b/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/preferences/ConfigOption.java index 4d2b6caa..95541452 100644 --- a/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/preferences/ConfigOption.java +++ b/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/preferences/ConfigOption.java @@ -62,7 +62,8 @@ public class ConfigOption implements IConfigOption { options.put("EXTERNAL_PARTIES", new ConfigOption("Parties.External", true, true)); - options.put("PARTIES", new ConfigOption("Parties.Own", false, true)); + //todo not implemented yet!!! + options.put("OWN_PARTIES", new ConfigOption("Parties.Own", false, true)); options.put("FALL_DAMAGE", new ConfigOption("Damage.Fall", false, true)); options.put("DROWNING_DAMAGE", new ConfigOption("Damage.Drowning", false, true)); options.put("FIRE_DAMAGE", new ConfigOption("Damage.Fire", false, true)); diff --git a/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/utils/serialization/InventorySerializer.java b/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/utils/serialization/InventorySerializer.java index ab3dee43..0e3cab52 100644 --- a/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/utils/serialization/InventorySerializer.java +++ b/MiniGamesBox Classic/src/main/java/plugily/projects/minigamesbox/classic/utils/serialization/InventorySerializer.java @@ -75,39 +75,6 @@ public static boolean saveInventoryToFile(JavaPlugin plugin, Player player) { FileConfiguration invConfig = YamlConfiguration.loadConfiguration(invFile); - invConfig.set("ExperienceProgress", player.getExp()); - invConfig.set("ExperienceLevel", player.getLevel()); - invConfig.set("Current health", player.getHealth()); - invConfig.set("Food", player.getFoodLevel()); - invConfig.set("Saturation", player.getSaturation()); - invConfig.set("Fire ticks", player.getFireTicks()); - invConfig.set("GameMode", player.getGameMode().name()); - invConfig.set("Allow flight", player.getAllowFlight()); - invConfig.set("Flight speed", player.getFlySpeed()); - invConfig.set("Walk speed", player.getWalkSpeed()); - - invConfig.set("Size", inventory.getSize()); - invConfig.set("Max stack size", inventory.getMaxStackSize()); - Collection activeEffects = player.getActivePotionEffects(); - List activePotions = new ArrayList<>(activeEffects.size()); - - double maxHealth = VersionUtils.getMaxHealth(player); - - for(PotionEffect potion : activeEffects) { - activePotions.add(potion.getType().getName() + "#" + potion.getDuration() + "#" + potion.getAmplifier()); - if(potion.getType().equals(XPotion.HEALTH_BOOST.getPotionEffectType())) { - // Health boost effect gives +2 hearts per level, health is counted in half hearts so amplifier * 4 - maxHealth -= (potion.getAmplifier() + 1) * 4; - } - } - invConfig.set("Active potion effects", activePotions); - invConfig.set("Max health", maxHealth); - - org.bukkit.entity.HumanEntity holder = inventory.getHolder(); - if(holder instanceof Player) { - invConfig.set("Holder", holder.getName()); - } - ItemStack[] invContents = inventory.getContents(); for(int i = 0; i < invContents.length; i++) { ItemStack itemInInv = invContents[i]; @@ -136,6 +103,7 @@ public static boolean saveInventoryToFile(JavaPlugin plugin, Player player) { if(ServerVersion.Version.isCurrentEqualOrHigher(ServerVersion.Version.v1_9)) { invConfig.set("Offhand", inventory.getItemInOffHand()); + inventory.setItemInOffHand(null); } ItemStack[] armorContents = inventory.getArmorContents(); @@ -146,6 +114,43 @@ public static boolean saveInventoryToFile(JavaPlugin plugin, Player player) { } } + inventory.clear(); + inventory.setArmorContents(null); + + + invConfig.set("ExperienceProgress", player.getExp()); + invConfig.set("ExperienceLevel", player.getLevel()); + invConfig.set("Current health", player.getHealth()); + invConfig.set("Food", player.getFoodLevel()); + invConfig.set("Saturation", player.getSaturation()); + invConfig.set("Fire ticks", player.getFireTicks()); + invConfig.set("GameMode", player.getGameMode().name()); + invConfig.set("Allow flight", player.getAllowFlight()); + invConfig.set("Flight speed", player.getFlySpeed()); + invConfig.set("Walk speed", player.getWalkSpeed()); + + invConfig.set("Size", inventory.getSize()); + invConfig.set("Max stack size", inventory.getMaxStackSize()); + Collection activeEffects = player.getActivePotionEffects(); + List activePotions = new ArrayList<>(activeEffects.size()); + + double maxHealth = VersionUtils.getMaxHealth(player); + + for(PotionEffect potion : activeEffects) { + activePotions.add(potion.getType().getName() + "#" + potion.getDuration() + "#" + potion.getAmplifier()); + if(potion.getType().equals(XPotion.HEALTH_BOOST.getPotionEffectType())) { + // Health boost effect gives +2 hearts per level, health is counted in half hearts so amplifier * 4 + maxHealth -= (potion.getAmplifier() + 1) * 4; + } + } + invConfig.set("Active potion effects", activePotions); + invConfig.set("Max health", maxHealth); + + org.bukkit.entity.HumanEntity holder = inventory.getHolder(); + if(holder instanceof Player) { + invConfig.set("Holder", holder.getName()); + } + invConfig.save(invFile); plugin.getLogger().log(Level.INFO, "Saved inventory of {0}", player.getName()); return true; diff --git a/MiniGamesBox Database/pom.xml b/MiniGamesBox Database/pom.xml index 3220ec10..137bc97d 100644 --- a/MiniGamesBox Database/pom.xml +++ b/MiniGamesBox Database/pom.xml @@ -23,7 +23,7 @@ minigamesbox plugily.projects - 1.4.0 + 1.4.0-SNAPSHOT7 4.0.0 diff --git a/MiniGamesBox Inventory/pom.xml b/MiniGamesBox Inventory/pom.xml index 26113cf6..a5ec027e 100644 --- a/MiniGamesBox Inventory/pom.xml +++ b/MiniGamesBox Inventory/pom.xml @@ -23,7 +23,7 @@ minigamesbox plugily.projects - 1.4.0 + 1.4.0-SNAPSHOT7 4.0.0 diff --git a/MiniGamesBox Inventory/src/main/java/plugily/projects/minigamesbox/inventory/paged/PagedFastInv.java b/MiniGamesBox Inventory/src/main/java/plugily/projects/minigamesbox/inventory/paged/PagedFastInv.java deleted file mode 100644 index b4877aa1..00000000 --- a/MiniGamesBox Inventory/src/main/java/plugily/projects/minigamesbox/inventory/paged/PagedFastInv.java +++ /dev/null @@ -1,184 +0,0 @@ -/* - * MiniGamesBox - Library box with massive content that could be seen as minigames core. - * Copyright (C) 2023 Plugily Projects - maintained by Tigerpanzer_02 and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package plugily.projects.minigamesbox.inventory.paged; - -import org.bukkit.event.inventory.InventoryType; -import plugily.projects.minigamesbox.inventory.common.RefreshableFastInv; -import plugily.projects.minigamesbox.inventory.common.item.ClickableItem; -import plugily.projects.minigamesbox.inventory.common.item.ItemMap; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.function.BiFunction; - -/** - * A multi-paged inventory. - * Register the plugin via {@link fr.mrmicky.fastinv.FastInvManager#register(org.bukkit.plugin.Plugin)} before creating any inventory. - * - * @author HSGamer - */ -public class PagedFastInv extends RefreshableFastInv { - private final List pages = new ArrayList<>(); - private final AtomicInteger currentPage = new AtomicInteger(0); - private BiFunction lastLineSequence = null; - - public PagedFastInv(int size) { - super(size); - } - - public PagedFastInv(int size, String title) { - super(size, title); - } - - public PagedFastInv(InventoryType type) { - super(type); - } - - public PagedFastInv(InventoryType type, String title) { - super(type, title); - } - - @Override - protected ItemMap getItemMap() { - int page = getCurrentPage(); - if (page < 0) { - return ItemMap.EMPTY; - } - ItemMap map = getPage(page); - if (lastLineSequence == null) { - return map; - } - - // Clone the map and apply the last line sequence - ItemMap cloneMap = new ItemMap(map); - int inventorySize = getInventory().getSize(); - int startSlot = inventorySize - getSlotsPerLine(); - for (int slot = startSlot; slot < inventorySize; slot++) { - ClickableItem item = lastLineSequence.apply(slot - startSlot, cloneMap.getItem(slot)); - if (item != null) { - cloneMap.setItem(slot, item); - } - } - return cloneMap; - } - - private int getActualPage(int page) { - if (pages.isEmpty()) { - return -1; - } - int maxPage = getMaxPage(); - return (page + maxPage) % maxPage; - } - - /** - * Get the current page, starting from 0 - * - * @return current page, or -1 if no pages have been added - */ - public int getCurrentPage() { - return getActualPage(currentPage.get()); - } - - /** - * Set the current page - * - * @param page the page - */ - public void setCurrentPage(int page) { - currentPage.set(page); - } - - /** - * Get the page for displaying. - * It's actually {@link #getCurrentPage()} but starting from 1. - * - * @return the display page - */ - public int getDisplayPage() { - return getCurrentPage() + 1; - } - - /** - * Get the maximum number of pages - * - * @return the maximum number of pages - */ - public int getMaxPage() { - return pages.size(); - } - - /** - * Get the item map for the given page - * - * @param page the page - * @return the item map - */ - public ItemMap getPage(int page) { - int actualPage = getActualPage(page); - if (actualPage < 0) { - throw new IllegalStateException("No pages have been added to this inventory."); - } - return pages.get(actualPage); - } - - /** - * Create a new page - * - * @return the item map for that new page - */ - public ItemMap createNewPage() { - ItemMap map = new ItemMap(); - pages.add(map); - return map; - } - - /** - * Remove the page - * - * @param page the page - */ - public void removePage(int page) { - int actualPage = getActualPage(page); - if (actualPage < 0) { - throw new IllegalStateException("No pages have been added to this inventory."); - } - pages.remove(actualPage); - } - - /** - * Get the page list - * - * @return the list of all item map - */ - public List getPages() { - return pages; - } - - /** - * Set the last line sequence. - * This is used to add items to the last line of the inventory. - * You can use it to add next-page and previous-page buttons. - * - * @param lastLineSequence the last line sequence, gives the hotbar slot (0-8) and the item of the slot and returns the item to add - */ - public void setLastLineSequence(BiFunction lastLineSequence) { - this.lastLineSequence = lastLineSequence; - } -} diff --git a/MiniGamesBox Utils/pom.xml b/MiniGamesBox Utils/pom.xml index f66aa4da..2397e598 100644 --- a/MiniGamesBox Utils/pom.xml +++ b/MiniGamesBox Utils/pom.xml @@ -23,7 +23,7 @@ minigamesbox plugily.projects - 1.4.0 + 1.4.0-SNAPSHOT7 4.0.0 diff --git a/pom.xml b/pom.xml index 6042701d..35b74d1d 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,7 @@ plugily.projects minigamesbox - 1.4.0 + 1.4.0-SNAPSHOT7 pom @@ -105,6 +105,7 @@ ${java.version} ${java.version} + UTF-8