Drop support for all versions of MC < 1.17

- Only versions 1.17 and up are supported from now on.
This commit is contained in:
Pim van der Loos 2021-11-04 13:39:45 +01:00
parent 9f9c5b7980
commit 28522ccbf6
No known key found for this signature in database
GPG Key ID: C16F020ADAE6D5A8
2 changed files with 10 additions and 57 deletions

View File

@ -5,7 +5,6 @@ import nl.pim16aap2.armoredElytra.handlers.CommandHandler;
import nl.pim16aap2.armoredElytra.handlers.EventHandlers; import nl.pim16aap2.armoredElytra.handlers.EventHandlers;
import nl.pim16aap2.armoredElytra.handlers.FlyDurabilityHandler; import nl.pim16aap2.armoredElytra.handlers.FlyDurabilityHandler;
import nl.pim16aap2.armoredElytra.handlers.ItemDropListener; import nl.pim16aap2.armoredElytra.handlers.ItemDropListener;
import nl.pim16aap2.armoredElytra.handlers.LoginHandler;
import nl.pim16aap2.armoredElytra.handlers.NetheriteUpgradeListener; import nl.pim16aap2.armoredElytra.handlers.NetheriteUpgradeListener;
import nl.pim16aap2.armoredElytra.handlers.SmithingTableCraftHandler; import nl.pim16aap2.armoredElytra.handlers.SmithingTableCraftHandler;
import nl.pim16aap2.armoredElytra.handlers.Uninstaller; import nl.pim16aap2.armoredElytra.handlers.Uninstaller;
@ -30,10 +29,9 @@ import org.bukkit.plugin.java.JavaPlugin;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.Collections; import java.util.Collections;
import java.util.EnumMap; import java.util.EnumMap;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Objects;
import java.util.logging.Level; import java.util.logging.Level;
public class ArmoredElytra extends JavaPlugin implements Listener public class ArmoredElytra extends JavaPlugin implements Listener
@ -42,7 +40,6 @@ public class ArmoredElytra extends JavaPlugin implements Listener
.get(Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3]); .get(Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3]);
private static ArmoredElytra INSTANCE; private static ArmoredElytra INSTANCE;
private final Set<Enchantment> allowedEnchantments = new HashSet<>();
private Messages messages; private Messages messages;
private ConfigLoader config; private ConfigLoader config;
@ -50,34 +47,23 @@ public class ArmoredElytra extends JavaPlugin implements Listener
private UpdateManager updateManager; private UpdateManager updateManager;
private NBTEditor nbtEditor; private NBTEditor nbtEditor;
private DurabilityManager durabilityManager;
@Override @Override
public void onEnable() public void onEnable()
{ {
INSTANCE = this; INSTANCE = this;
if (minecraftVersion.isOlderThan(MinecraftVersion.v1_15)) if (minecraftVersion.isOlderThan(MinecraftVersion.v1_17))
{ {
myLogger(Level.SEVERE, "Trying to run this plugin on an unsupported version... ABORT!"); myLogger(Level.SEVERE, "Trying to run this plugin on an unsupported version... ABORT!");
setEnabled(false); setEnabled(false);
return; return;
} }
if (isBlacklistedVersion())
{
myLogger(Level.SEVERE,
"You are trying to run this plugin on a blacklisted version of Spigot! Please update Spigot!");
Bukkit.getPluginManager().registerEvents(
new LoginHandler(this, ChatColor.RED +
"[ArmoredElytra] The plugin failed to start because you are running on a " +
"blacklisted version of Spiogt! Please update Spigot!"), this);
return;
}
nbtEditor = new NBTEditor(); nbtEditor = new NBTEditor();
config = new ConfigLoader(this); config = new ConfigLoader(this);
durabilityManager = new DurabilityManager(nbtEditor, config); DurabilityManager durabilityManager = new DurabilityManager(nbtEditor, config);
messages = new Messages(this); messages = new Messages(this);
readMessages(); readMessages();
@ -99,7 +85,8 @@ public class ArmoredElytra extends JavaPlugin implements Listener
"seeing higher user numbers helps me stay motivated!"); "seeing higher user numbers helps me stay motivated!");
Bukkit.getPluginManager().registerEvents(new EventHandlers(this, nbtEditor, durabilityManager), this); Bukkit.getPluginManager().registerEvents(new EventHandlers(this, nbtEditor, durabilityManager), this);
getCommand("ArmoredElytra").setExecutor(new CommandHandler(this, nbtEditor, durabilityManager)); Objects.requireNonNull(getCommand("ArmoredElytra"), "ArmoredElytra base command not found!")
.setExecutor(new CommandHandler(this, nbtEditor, durabilityManager));
// Load the plugin normally if not in uninstall mode. // Load the plugin normally if not in uninstall mode.
if (!config.uninstallMode()) if (!config.uninstallMode())
@ -131,24 +118,6 @@ public class ArmoredElytra extends JavaPlugin implements Listener
} }
} }
/**
* Checks if the current version is blacklisted.
* <p>
* This is needed for 1.16, as on the initial release there was a bug with NBT stuff that would crash clients when
* they saw an Armored Elytra. When they obtained one using a command they wouldn't be able to rejoin the game again
* until an NBTEditor was used to remove the item from their inventory.
*
* @return True if the current version is blacklisted.
*/
public boolean isBlacklistedVersion()
{
if (minecraftVersion != MinecraftVersion.v1_16)
return false;
String[] parts = Bukkit.getVersion().substring("git-Spigot-".length()).split("-");
return parts.length > 0 && parts[0].equals("758abbe");
}
public MinecraftVersion getMinecraftVersion() public MinecraftVersion getMinecraftVersion()
{ {
return minecraftVersion; return minecraftVersion;

View File

@ -137,13 +137,13 @@ public class ConfigLoader
}; };
String[] craftingInSmithingTableComment = String[] craftingInSmithingTableComment =
{ {
"This option only works on 1.16+! When enabled, armored elytra creation in anvils is disabled. ", "When enabled, armored elytra creation in anvils is disabled. ",
"Instead, you will have to craft them in a smithy. Enchanting/repairing them still works via the anvil." "Instead, you will have to craft them in a smithy. Enchanting/repairing them still works via the anvil."
}; };
String[] allowUpgradeToNetheriteComment = String[] allowUpgradeToNetheriteComment =
{ {
"Whether or not to allow upgrading diamond armored elytras to netherite ones is possible.", "Whether or not to allow upgrading diamond armored elytras to netherite ones is possible.",
"When allowed (on 1.16+), you can combine a diamond one with a netherite ingot in a smithing table", "When allowed, you can combine a diamond one with a netherite ingot in a smithing table",
"and you'll receive a netherite one." "and you'll receive a netherite one."
}; };
String[] allowRenamingComment = String[] allowRenamingComment =
@ -189,28 +189,13 @@ public class ConfigLoader
throw new IllegalStateException("Incorrect repair counts array size! Expected size " + throw new IllegalStateException("Incorrect repair counts array size! Expected size " +
armorTierCount + " but got size " + repairCounts.length); armorTierCount + " but got size " + repairCounts.length);
craftingInSmithingTable = addNewConfigOption(config, "craftingInSmithingTable", true,
final boolean smithingTableAllowed = plugin.getMinecraftVersion().isNewerThan(MinecraftVersion.v1_15);
craftingInSmithingTable = addNewConfigOption(config, "craftingInSmithingTable", smithingTableAllowed,
craftingInSmithingTableComment); craftingInSmithingTableComment);
if (craftingInSmithingTable && !smithingTableAllowed) allowUpgradeToNetherite = addNewConfigOption(config, "allowUpgradeToNetherite", true,
{
Bukkit.getLogger().log(Level.WARNING, "You tried to enable crafting in smithing tables, " +
"but this is only supported on 1.16+! Reverting to disabled.");
craftingInSmithingTable = false;
}
allowUpgradeToNetherite = addNewConfigOption(config, "allowUpgradeToNetherite", smithingTableAllowed,
allowUpgradeToNetheriteComment); allowUpgradeToNetheriteComment);
if (allowUpgradeToNetherite && !smithingTableAllowed)
{
Bukkit.getLogger().log(Level.WARNING, "You tried to enable crafting in smithing tables, " +
"but this is only supported on 1.16+! Reverting to disabled.");
allowUpgradeToNetherite = false;
}
defaultAllowedEnchantments = addNewConfigOption(config, "allowedEnchantments", defaultAllowedEnchantments, defaultAllowedEnchantments = addNewConfigOption(config, "allowedEnchantments", defaultAllowedEnchantments,
enchantmentsComment); enchantmentsComment);
allowedEnchantments = new LinkedHashSet<>(); allowedEnchantments = new LinkedHashSet<>();
defaultAllowedEnchantments.forEach( defaultAllowedEnchantments.forEach(
fullKey -> fullKey ->
@ -253,8 +238,7 @@ public class ConfigLoader
private <T> T addNewConfigOption(FileConfiguration config, String optionName, T defaultValue, String[] comment) private <T> T addNewConfigOption(FileConfiguration config, String optionName, T defaultValue, String[] comment)
{ {
nl.pim16aap2.armoredElytra.util.ConfigOption<T> option = new nl.pim16aap2.armoredElytra.util.ConfigOption<>( ConfigOption<T> option = new ConfigOption<>(plugin, config, optionName, defaultValue, comment);
plugin, config, optionName, defaultValue, comment);
configOptionsList.add(option); configOptionsList.add(option);
return option.getValue(); return option.getValue();
} }