From eebd25cb185091d4f0717757cadcac4676c82445 Mon Sep 17 00:00:00 2001
From: "Pierre-Yves B." <10694593+PyvesB@users.noreply.github.com>
Date: Sat, 16 Oct 2021 19:35:45 +0200
Subject: [PATCH] Drop support for Minecraft versions older than 1.13
---
advanced-achievements-plugin/pom.xml | 4 -
.../advancement/AdvancementManager.java | 56 +---
.../completer/CommandTabCompleter.java | 22 +-
.../executable/AbstractRankingCommand.java | 15 +-
.../command/executable/BookCommand.java | 21 +-
.../command/executable/GenerateCommand.java | 14 +-
.../command/executable/HelpCommand.java | 26 +-
.../command/executable/MonthCommand.java | 6 +-
.../command/executable/StatsCommand.java | 15 +-
.../command/executable/TopCommand.java | 5 +-
.../command/executable/Upgrade13Command.java | 50 ----
.../command/executable/WeekCommand.java | 5 +-
.../config/ConfigurationParser.java | 63 +----
.../hm/achievement/config/RewardParser.java | 13 +-
.../hm/achievement/db/DatabaseUpdater.java | 118 +-------
.../java/com/hm/achievement/gui/GUIItems.java | 22 +-
.../achievement/lifecycle/PluginLoader.java | 5 +-
.../hm/achievement/listener/JoinListener.java | 12 +-
.../PlayerAdvancedAchievementListener.java | 95 ++-----
.../listener/TeleportListener.java | 12 +-
.../listener/statistics/AbstractListener.java | 4 +-
.../AbstractRateLimitedListener.java | 25 +-
.../AdvancementsCompletedListener.java | 6 +-
.../listener/statistics/AnvilsListener.java | 4 +-
.../listener/statistics/ArrowsListener.java | 4 +-
.../listener/statistics/BedsListener.java | 9 +-
.../statistics/BooksEditedListener.java | 9 +-
.../listener/statistics/BreaksListener.java | 14 +-
.../listener/statistics/BreedingListener.java | 4 +-
.../listener/statistics/BrewingListener.java | 17 +-
.../statistics/ConnectionsListener.java | 4 +-
.../statistics/ConsumedPotionsListener.java | 6 +-
.../listener/statistics/CraftsListener.java | 13 +-
.../listener/statistics/DeathsListener.java | 4 +-
.../listener/statistics/DropsListener.java | 4 +-
.../statistics/EatenItemsListener.java | 4 +-
.../statistics/EffectsHeldListener.java | 4 +-
.../listener/statistics/EggsListener.java | 4 +-
.../statistics/EnchantmentsListener.java | 6 +-
.../statistics/EnderPearlsListener.java | 4 +-
.../statistics/FertilisingLegacyListener.java | 87 ------
.../statistics/FertilisingListener.java | 6 +-
.../statistics/FireworksListener.java | 18 +-
.../listener/statistics/FishListener.java | 4 +-
.../statistics/HoePlowingListener.java | 4 +-
.../statistics/ItemBreaksListener.java | 4 +-
.../statistics/JobsRebornListener.java | 4 +-
.../listener/statistics/KillsListener.java | 6 +-
.../statistics/LavaBucketsListener.java | 9 +-
.../listener/statistics/LevelsListener.java | 4 +-
.../listener/statistics/MilksListener.java | 9 +-
.../statistics/MusicDiscsListener.java | 9 +-
.../statistics/PetMasterGiveListener.java | 6 +-
.../statistics/PetMasterReceiveListener.java | 6 +-
.../statistics/PickupsLegacyListener.java | 36 ---
.../listener/statistics/PickupsListener.java | 4 +-
.../listener/statistics/PlacesListener.java | 6 +-
.../statistics/PlayerCommandsListener.java | 6 +-
.../listener/statistics/RiptidesListener.java | 4 +-
.../listener/statistics/ShearsListener.java | 4 +-
.../listener/statistics/SmeltingListener.java | 11 +-
.../statistics/SnowballsListener.java | 4 +-
.../listener/statistics/TamesListener.java | 4 +-
.../statistics/TargetsShotListener.java | 4 +-
.../listener/statistics/TradesListener.java | 4 +-
.../statistics/TreasuresListener.java | 4 +-
.../statistics/WaterBucketsListener.java | 11 +-
.../listener/statistics/WinRaidListener.java | 4 +-
.../hm/achievement/module/CommandModule.java | 5 -
.../achievement/module/ReloadableModule.java | 130 ++++-----
.../module/ServerVersionModule.java | 6 +-
.../runnable/AchieveDistanceRunnable.java | 10 +-
.../runnable/AchievePlayTimeRunnable.java | 6 +-
.../hm/achievement/utils/BossBarHelper.java | 33 ---
.../com/hm/achievement/utils/ColorHelper.java | 40 ++-
.../achievement/utils/FancyMessageSender.java | 258 +++---------------
.../hm/achievement/utils/InventoryHelper.java | 19 +-
.../hm/achievement/utils/MaterialHelper.java | 13 +-
.../com/hm/achievement/utils/SoundPlayer.java | 36 +--
.../utils/StatisticIncreaseHandler.java | 10 +-
.../src/main/resources/config.yml | 59 +---
.../src/main/resources/gui-legacy.yml | 216 ---------------
.../src/main/resources/lang-BP.yml | 1 -
.../src/main/resources/lang-CN.yml | 1 -
.../src/main/resources/lang-CZ.yml | 1 -
.../src/main/resources/lang-DA.yml | 1 -
.../src/main/resources/lang-DE.yml | 1 -
.../src/main/resources/lang-ES.yml | 1 -
.../src/main/resources/lang-FI.yml | 1 -
.../src/main/resources/lang-FR.yml | 1 -
.../src/main/resources/lang-HU.yml | 1 -
.../src/main/resources/lang-PL.yml | 2 -
.../src/main/resources/lang-RU.yml | 1 -
.../src/main/resources/lang-SK.yml | 1 -
.../src/main/resources/lang-TR.yml | 2 -
.../src/main/resources/lang-TW.yml | 1 -
.../src/main/resources/lang-VN.yml | 1 -
.../src/main/resources/lang.yml | 1 -
.../completer/CommandTabCompleterTest.java | 66 +----
.../achievement/config/RewardParserTest.java | 21 +-
.../achievement/db/H2DatabaseManagerTest.java | 2 +-
...PlayerAdvancedAchievementListenerTest.java | 2 +-
.../hm/achievement/utils/ColorHelperTest.java | 4 +-
.../utils/InventoryHelperTest.java | 21 +-
.../achievement/utils/MaterialHelperTest.java | 29 +-
.../hm/achievement/utils/SoundPlayerTest.java | 36 +--
.../resources/config-reward-reception.yml | 2 +-
pom.xml | 5 -
108 files changed, 385 insertions(+), 1672 deletions(-)
delete mode 100644 advanced-achievements-plugin/src/main/java/com/hm/achievement/command/executable/Upgrade13Command.java
delete mode 100644 advanced-achievements-plugin/src/main/java/com/hm/achievement/listener/statistics/FertilisingLegacyListener.java
delete mode 100644 advanced-achievements-plugin/src/main/java/com/hm/achievement/listener/statistics/PickupsLegacyListener.java
delete mode 100644 advanced-achievements-plugin/src/main/java/com/hm/achievement/utils/BossBarHelper.java
delete mode 100644 advanced-achievements-plugin/src/main/resources/gui-legacy.yml
diff --git a/advanced-achievements-plugin/pom.xml b/advanced-achievements-plugin/pom.xml
index 6777588b4..72d5074e8 100644
--- a/advanced-achievements-plugin/pom.xml
+++ b/advanced-achievements-plugin/pom.xml
@@ -138,10 +138,6 @@
me.clip
placeholderapi
-
- com.github.shadowjonathan
- ParticleEffect
-
org.postgresql
postgresql
diff --git a/advanced-achievements-plugin/src/main/java/com/hm/achievement/advancement/AdvancementManager.java b/advanced-achievements-plugin/src/main/java/com/hm/achievement/advancement/AdvancementManager.java
index aba9b30df..312bc18a8 100644
--- a/advanced-achievements-plugin/src/main/java/com/hm/achievement/advancement/AdvancementManager.java
+++ b/advanced-achievements-plugin/src/main/java/com/hm/achievement/advancement/AdvancementManager.java
@@ -18,7 +18,6 @@
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.inventory.ItemStack;
-import com.darkblade12.particleeffect.ReflectionUtils.PackageType;
import com.hm.achievement.AdvancedAchievements;
import com.hm.achievement.advancement.AchievementAdvancement.AchievementAdvancementBuilder;
import com.hm.achievement.category.Category;
@@ -31,7 +30,7 @@
import com.hm.achievement.utils.StringHelper;
/**
- * Class in charge of registering achievements as advancements for servers running on Minecraft 1.12+.
+ * Class in charge of registering achievements as advancements.
*
* @author Pyves
*/
@@ -43,25 +42,12 @@ public class AdvancementManager implements Reloadable {
private static final String MINECRAFT_BOOK_KEY = "minecraft:book";
// Pattern to produce keys for advancements.
private static final Pattern REGEX_PATTERN_KEYS = Pattern.compile("[^A-Za-z0-9_]");
- // Strings related to Reflection.
- private static final String PACKAGE_INVENTORY = "inventory";
- private static final String CLASS_CRAFT_ITEM_STACK = "CraftItemStack";
- private static final String CLASS_ITEM = "Item";
- private static final String CLASS_ITEM_STACK = "ItemStack";
- private static final String CLASS_REGISTRY_MATERIALS = "RegistryMaterials";
- private static final String CLASS_MINECRAFT_KEY = "MinecraftKey";
- private static final String FIELD_REGISTRY = "REGISTRY";
- private static final String METHOD_AS_NMS_COPY = "asNMSCopy";
- private static final String METHOD_GET_ITEM = "getItem";
- private static final String METHOD_GET_KEY = "getKey";
- private static final String METHOD_B = "b";
private final YamlConfiguration mainConfig;
private final GUIItems guiItems;
private final AdvancedAchievements advancedAchievements;
private final Logger logger;
private final Set disabledCategories;
- private final int serverVersion;
private final AchievementMap achievementMap;
private boolean configRegisterAdvancementDescriptions;
@@ -72,13 +58,12 @@ public class AdvancementManager implements Reloadable {
@Inject
public AdvancementManager(@Named("main") YamlConfiguration mainConfig, GUIItems guiItems, AchievementMap achievementMap,
- AdvancedAchievements advancedAchievements, Logger logger, Set disabledCategories, int serverVersion) {
+ AdvancedAchievements advancedAchievements, Logger logger, Set disabledCategories) {
this.mainConfig = mainConfig;
this.guiItems = guiItems;
this.advancedAchievements = advancedAchievements;
this.logger = logger;
this.disabledCategories = disabledCategories;
- this.serverVersion = serverVersion;
this.achievementMap = achievementMap;
}
@@ -110,9 +95,6 @@ public void registerAdvancements() {
*/
private String parseBackgroundTexture() {
String configTexture = mainConfig.getString("AdvancementsBackground");
- if (serverVersion == 12) {
- return StringUtils.replace(configTexture, "/item/", "/items/");
- }
return StringUtils.replaceEach(configTexture, new String[] { "/items/", "book_enchanted.png" },
new String[] { "/item/", "enchanted_book.png" });
}
@@ -151,9 +133,6 @@ private void registerParentAdvancement() {
.description("")
.background(configBackgroundTexture)
.type(AdvancementType.GOAL);
- if (serverVersion == 12) {
- builder.iconData("0");
- }
Bukkit.getUnsafe().loadAdvancement(namespacedKey, AdvancementJsonHelper.toJson(builder.build()));
}
}
@@ -206,42 +185,13 @@ private String registerAdvancement(ItemStack item, Achievement achievement, Stri
}
AchievementAdvancementBuilder builder = new AchievementAdvancementBuilder()
- .iconItem(serverVersion == 12 ? getInternalName(item) : item.getType().name().toLowerCase())
+ .iconItem(item.getType().name().toLowerCase())
.title(displayName)
.description(description)
.parent("advancedachievements:" + parentKey)
.type(lastAchievement ? AdvancementType.CHALLENGE : AdvancementType.TASK);
- if (serverVersion == 12) {
- builder.iconData(Short.toString(item.getDurability()));
- }
Bukkit.getUnsafe().loadAdvancement(namespacedKey, AdvancementJsonHelper.toJson(builder.build()));
++generatedAdvancements;
return achKey;
}
-
- /**
- * Gets the internal item used by Vanilla Minecraft. These are the only names supported by advancements. Material
- * and internal names can differ quite significantly (for instance: book_and_quill vs. writable_book).
- *
- * @param item
- * @return the internal Minecraft name, prefixed with "minecraft:"
- */
- private String getInternalName(ItemStack item) {
- try {
- Object nmsItemStack = PackageType.CRAFTBUKKIT.getClass(PACKAGE_INVENTORY + "." + CLASS_CRAFT_ITEM_STACK)
- .getMethod(METHOD_AS_NMS_COPY, ItemStack.class).invoke(null, item);
- Object nmsItem = PackageType.MINECRAFT_SERVER.getClass(CLASS_ITEM_STACK).getMethod(METHOD_GET_ITEM)
- .invoke(nmsItemStack);
- Object registry = PackageType.MINECRAFT_SERVER.getClass(CLASS_ITEM).getField(FIELD_REGISTRY).get(null);
- Object minecraftKey = PackageType.MINECRAFT_SERVER.getClass(CLASS_REGISTRY_MATERIALS)
- .getMethod(METHOD_B, Object.class).invoke(registry, nmsItem);
- return "minecraft:" + PackageType.MINECRAFT_SERVER.getClass(CLASS_MINECRAFT_KEY).getMethod(METHOD_GET_KEY)
- .invoke(minecraftKey);
- } catch (Exception e) {
- logger.warning("Failed to get internal " + item.getType().name().toLowerCase() + " name for advancement icon. "
- + "Using book instead.");
- return MINECRAFT_BOOK_KEY;
- }
- }
-
}
diff --git a/advanced-achievements-plugin/src/main/java/com/hm/achievement/command/completer/CommandTabCompleter.java b/advanced-achievements-plugin/src/main/java/com/hm/achievement/command/completer/CommandTabCompleter.java
index 7eb89559d..27c089b33 100644
--- a/advanced-achievements-plugin/src/main/java/com/hm/achievement/command/completer/CommandTabCompleter.java
+++ b/advanced-achievements-plugin/src/main/java/com/hm/achievement/command/completer/CommandTabCompleter.java
@@ -19,9 +19,7 @@
import com.hm.achievement.command.executable.CommandSpec;
import com.hm.achievement.command.executable.DeleteCommand;
import com.hm.achievement.command.executable.EasterEggCommand;
-import com.hm.achievement.command.executable.GenerateCommand;
import com.hm.achievement.command.executable.ResetCommand;
-import com.hm.achievement.command.executable.Upgrade13Command;
import com.hm.achievement.config.AchievementMap;
/**
@@ -32,19 +30,14 @@
*/
public class CommandTabCompleter implements TabCompleter {
- private static final int MAX_LIST_LENGTH = 50;
-
private final AchievementMap achievementMap;
private final Set commandSpecs;
- private final int serverVersion;
@Inject
- public CommandTabCompleter(AchievementMap achievementMap, Set commands, int serverVersion) {
+ public CommandTabCompleter(AchievementMap achievementMap, Set commands) {
this.achievementMap = achievementMap;
- this.serverVersion = serverVersion;
this.commandSpecs = commands.stream()
- .filter(c -> !(c instanceof EasterEggCommand || c instanceof Upgrade13Command
- || serverVersion < 12 && c instanceof GenerateCommand))
+ .filter(c -> !(c instanceof EasterEggCommand))
.map(c -> c.getClass().getAnnotation(CommandSpec.class))
.collect(Collectors.toSet());
}
@@ -83,7 +76,7 @@ public List onTabComplete(CommandSender sender, Command command, String
/**
* Returns a partial list based on the input set. Members of the returned list must start with what the player has
- * types so far. The list also has a limited length prior to Minecraft 1.13 to avoid filling the player's screen.
+ * types so far.
*
* @param options
* @param prefix
@@ -94,18 +87,11 @@ private List getPartialList(Collection options, String prefix) {
// Replace spaces with an Open Box character to prevent completing wrong word. Prevented Behaviour:
// T -> Tamer -> Teleport Man -> Teleport The Avener -> Teleport The The Smelter
// Sort matching elements by alphabetical order.
- List allOptions = options.stream()
+ return options.stream()
.filter(s1 -> s1.toLowerCase().startsWith(prefix.toLowerCase()))
.map(s -> s.replace(' ', '\u2423'))
.sorted()
.collect(Collectors.toList());
-
- if (serverVersion < 13 && allOptions.size() > MAX_LIST_LENGTH) {
- allOptions = allOptions.subList(0, MAX_LIST_LENGTH - 1);
- // Suspension points to show that list was truncated.
- allOptions.add("\u2022\u2022\u2022");
- }
- return allOptions;
}
private boolean shouldReturnPlayerList(Command command, String[] args) {
diff --git a/advanced-achievements-plugin/src/main/java/com/hm/achievement/command/executable/AbstractRankingCommand.java b/advanced-achievements-plugin/src/main/java/com/hm/achievement/command/executable/AbstractRankingCommand.java
index 6d8a551ce..8762dcb2f 100644
--- a/advanced-achievements-plugin/src/main/java/com/hm/achievement/command/executable/AbstractRankingCommand.java
+++ b/advanced-achievements-plugin/src/main/java/com/hm/achievement/command/executable/AbstractRankingCommand.java
@@ -16,7 +16,6 @@
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
-import com.darkblade12.particleeffect.ParticleEffect;
import com.hm.achievement.command.pagination.CommandPagination;
import com.hm.achievement.db.AbstractDatabaseManager;
import com.hm.achievement.utils.SoundPlayer;
@@ -37,7 +36,6 @@ public abstract class AbstractRankingCommand extends AbstractCommand {
private static final int PER_PAGE = 16;
private final Logger logger;
- private final int serverVersion;
private final String languageKey;
private final AbstractDatabaseManager databaseManager;
private final SoundPlayer soundPlayer;
@@ -56,11 +54,9 @@ public abstract class AbstractRankingCommand extends AbstractCommand {
private long lastCacheUpdate = 0L;
AbstractRankingCommand(YamlConfiguration mainConfig, YamlConfiguration langConfig, StringBuilder pluginHeader,
- Logger logger, int serverVersion, String languageKey, AbstractDatabaseManager databaseManager,
- SoundPlayer soundPlayer) {
+ Logger logger, String languageKey, AbstractDatabaseManager databaseManager, SoundPlayer soundPlayer) {
super(mainConfig, langConfig, pluginHeader);
this.logger = logger;
- this.serverVersion = serverVersion;
this.languageKey = languageKey;
this.databaseManager = databaseManager;
this.soundPlayer = soundPlayer;
@@ -181,16 +177,11 @@ private String getRankingSymbol(int rank) {
*/
private void launchEffects(Player player) {
if (configAdditionalEffects) {
- if (serverVersion >= 9) {
- player.spawnParticle(Particle.PORTAL, player.getLocation(), 100, 0, 1, 0, 0.5f);
- } else {
- ParticleEffect.PORTAL.display(0, 1, 0, 0.5f, 1000, player.getLocation(), 1);
- }
+ player.spawnParticle(Particle.PORTAL, player.getLocation(), 100, 0, 1, 0, 0.5f);
}
if (configSound) {
- soundPlayer.play(player, configSoundRanking, "ENTITY_FIREWORK_ROCKET_BLAST", "ENTITY_FIREWORK_LARGE_BLAST",
- "FIREWORK_BLAST");
+ soundPlayer.play(player, configSoundRanking, "ENTITY_FIREWORK_ROCKET_BLAST");
}
}
}
diff --git a/advanced-achievements-plugin/src/main/java/com/hm/achievement/command/executable/BookCommand.java b/advanced-achievements-plugin/src/main/java/com/hm/achievement/command/executable/BookCommand.java
index 1f9c0a10d..a72682a2c 100644
--- a/advanced-achievements-plugin/src/main/java/com/hm/achievement/command/executable/BookCommand.java
+++ b/advanced-achievements-plugin/src/main/java/com/hm/achievement/command/executable/BookCommand.java
@@ -15,6 +15,7 @@
import javax.inject.Singleton;
import org.apache.commons.lang3.StringUtils;
+import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Particle;
import org.bukkit.command.CommandSender;
@@ -23,8 +24,6 @@
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BookMeta;
-import com.darkblade12.particleeffect.ParticleEffect;
-import com.darkblade12.particleeffect.ReflectionUtils.PackageType;
import com.hm.achievement.config.AchievementMap;
import com.hm.achievement.db.AbstractDatabaseManager;
import com.hm.achievement.db.data.AwardedDBAchievement;
@@ -126,16 +125,12 @@ void onExecute(CommandSender sender, String[] args) {
}
// Play special particle effect when receiving the book.
if (configAdditionalEffects) {
- if (serverVersion >= 9) {
- player.spawnParticle(Particle.ENCHANTMENT_TABLE, player.getLocation(), 1000, 0, 2, 0, 1);
- } else {
- ParticleEffect.ENCHANTMENT_TABLE.display(0, 2, 0, 1, 1000, player.getLocation(), 100);
- }
+ player.spawnParticle(Particle.ENCHANTMENT_TABLE, player.getLocation(), 1000, 0, 2, 0, 1);
}
// Play special sound when receiving the book.
if (configSound) {
- soundPlayer.play(player, configSoundBook, "ENTITY_PLAYER_LEVELUP", "ENTITY_PLAYER_LEVELUP", "LEVEL_UP");
+ soundPlayer.play(player, configSoundBook, "ENTITY_PLAYER_LEVELUP");
}
fillBook(playerAchievementsList, player);
@@ -214,15 +209,17 @@ private boolean isInCooldownPeriod(Player player) {
*/
@SuppressWarnings("unchecked")
private void setBookPages(List bookPages, BookMeta bookMeta) {
- if (serverVersion >= 11 && serverVersion <= 15) {
+ if (serverVersion <= 15) {
try {
// Code we're trying to execute: this.pages.add(CraftChatMessage.fromString(page, true)[0]); in
// CraftMetaBook.java.
- Class> craftMetaBookClass = PackageType.CRAFTBUKKIT
- .getClass(PACKAGE_INVENTORY + "." + CLASS_CRAFT_META_BOOK);
+ String versionIdentifier = Bukkit.getServer().getClass().getPackage().getName().substring(23);
+ Class> craftMetaBookClass = Class.forName("org.bukkit.craftbukkit." + versionIdentifier + "."
+ + PACKAGE_INVENTORY + "." + CLASS_CRAFT_META_BOOK);
List
-
- com.github.shadowjonathan
- ParticleEffect
- 1.7.1
-
org.postgresql
postgresql