Как сделать чтобы плагин работал на нескольких версиях

Он и так будет работать на буквально всех версиях майнкрафта, если там нет методов, которые были вырезаны в новых версиях или НМС
я тестил мне пишет unsupported api version
 
Код:
package org.ex.test;

 import me.clip.placeholderapi.PlaceholderAPI;
 import org.bukkit.Bukkit;
 import org.bukkit.ChatColor;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
 import org.bukkit.plugin.Plugin;
 import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
 import java.util.List;

public class Test extends JavaPlugin {
@Override
    public void onEnable() {
getServer().getPluginManager().registerEvents(new Event(this), this);
getServer().getPluginCommand("hello").setTabCompleter(new Tab());
Plugin placeholderAPI = Bukkit.getPluginManager().getPlugin("PlaceholderAPI");
        saveDefaultConfig();
getCommand("hello").setExecutor(new CommandExecutor() {
@Override
            public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
                Player player = (Player) sender;
if (!player.hasPermission("hello.command")) {
if (getConfig().isList("havent-permission")) {
List<String> list = getConfig().getStringList("havent-permission");
 for (String s : list) {
if (placeholderAPI != null && placeholderAPI.isEnabled()) {
String d = PlaceholderAPI.setPlaceholders(player, s);
String c = ChatColor.translateAlternateColorCodes('&', d);
                                player.sendMessage(c);
}else {
String c = ChatColor.translateAlternateColorCodes('&', s);
                                player.sendMessage(c);
                        }
} if (getConfig().isString("havent-permission")) {
String a = getConfig().getString("havent-permission");
if (placeholderAPI != null && placeholderAPI.isEnabled()) {
String d = PlaceholderAPI.setPlaceholders(player, a);
String c = ChatColor.translateAlternateColorCodes('&', d);
                                player.sendMessage(c);
} else {
String c = ChatColor.translateAlternateColorCodes('&', a);
                                player.sendMessage(c);
                            }
                        }
                    }
 return true;
                }
if (args.length == 0) {
if (getConfig().isList("no-arguments")) {
List<String> list1 = getConfig().getStringList("no-arguments");
 for (String s : list1) {
if (placeholderAPI != null && placeholderAPI.isEnabled()) {
String d = PlaceholderAPI.setPlaceholders(player, s);
String c = ChatColor.translateAlternateColorCodes('&', d);
                                player.sendMessage(c);
} else {
String c = ChatColor.translateAlternateColorCodes('&', s);
                                player.sendMessage(c);
                            }
                        }
} else if (getConfig().isString("no-arguments")) {
String a = getConfig().getString("no-arguments");
if (placeholderAPI != null && placeholderAPI.isEnabled()) {
String d = PlaceholderAPI.setPlaceholders(player, a);
String c = ChatColor.translateAlternateColorCodes('&', d);
                            player.sendMessage(c);
} else {
String c = ChatColor.translateAlternateColorCodes('&', a);
                            player.sendMessage(c);
                        }
                    }
 return true;
                }
if(args[0].equalsIgnoreCase("reload")){
    reloadConfig();
if (getConfig().isList("config-reloaded")) {
List<String> list1 = getConfig().getStringList("config-reloaded");
 for (String s : list1) {
if (placeholderAPI != null && placeholderAPI.isEnabled()) {
String d = PlaceholderAPI.setPlaceholders(player, s);
String c = ChatColor.translateAlternateColorCodes('&', d);
                player.sendMessage(c);
} else {
String c = ChatColor.translateAlternateColorCodes('&', s);
                player.sendMessage(c);
            }
        }
} else if (getConfig().isString("config-reloaded")) {
String a = getConfig().getString("config-reloaded");
if (placeholderAPI != null && placeholderAPI.isEnabled()) {
String d = PlaceholderAPI.setPlaceholders(player, a);
String c = ChatColor.translateAlternateColorCodes('&', d);
            player.sendMessage(c);
} else {
String c = ChatColor.translateAlternateColorCodes('&', a);
            player.sendMessage(c);
        }
    }
 return true;
}
 return true;
            }
        });
        }
    }
Код:
package org.ex.test;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import me.clip.placeholderapi.PlaceholderAPI;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Event implements Listener {
private final JavaPlugin plugin;
public Event(JavaPlugin plugin) {
this.plugin = plugin;
    }
@EventHandler(priority = EventPriority.HIGHEST)
public void onJoin(PlayerJoinEvent event) {
Plugin placeholderAPI = Bukkit.getPluginManager().getPlugin("PlaceholderAPI");
        Player player = event.getPlayer();
 if (!player.hasPlayedBefore()) {
if (plugin.getConfig().isList("first-join-message")) {
List<String> list = plugin.getConfig().getStringList("first-join-message");
 for (String s : list) {
if (placeholderAPI != null && placeholderAPI.isEnabled()) {
String d = PlaceholderAPI.setPlaceholders(player, s);
String c = ChatColor.translateAlternateColorCodes('&', d);
                        player.sendMessage(c);
} else {
String c = ChatColor.translateAlternateColorCodes('&', s);
                        player.sendMessage(c);
                    }
                }
            }
if (plugin.getConfig().isString("first-join-message")) {
String a = plugin.getConfig().getString("first-join-message");
if (placeholderAPI != null && placeholderAPI.isEnabled()) {
String d = PlaceholderAPI.setPlaceholders(player, a);
String c = ChatColor.translateAlternateColorCodes('&', d);
                    player.sendMessage(c);
} else {
String c = ChatColor.translateAlternateColorCodes('&', a);
                    player.sendMessage(c);
                }
            }
} if (plugin.getConfig().isList("join-message") && player.hasPlayedBefore()) {
List<String> list = plugin.getConfig().getStringList("join-message");
 for (String s : list) {
if (placeholderAPI != null && placeholderAPI.isEnabled()) {
String d = PlaceholderAPI.setPlaceholders(player, s);
String c = ChatColor.translateAlternateColorCodes('&', d);
                        player.sendMessage(c);
} else {
String c = ChatColor.translateAlternateColorCodes('&', s);
                        player.sendMessage(c);
                    }
                }
} if (plugin.getConfig().isString("join-message") && player.hasPlayedBefore()) {
String a = plugin.getConfig().getString(color("join-message"));
if (placeholderAPI != null && placeholderAPI.isEnabled()) {
String d = PlaceholderAPI.setPlaceholders(player, a);
String c = ChatColor.translateAlternateColorCodes('&', d);
                    player.sendMessage(c);
} else {
String c = ChatColor.translateAlternateColorCodes('&', a);
                    player.sendMessage(c);
                }
            }
        }
public static String color(String from) {
Pattern pattern = Pattern.compile("#[a-fA-F\0-9]{6}");
        Matcher matcher = pattern.matcher(from);
 while (matcher.find()) {
            String hexCode = from.substring(matcher.start(), matcher.end());
String replaceSharp = hexCode.replace('#', 'x');
 char[] ch = replaceSharp.toCharArray();
StringBuilder builder = new StringBuilder();
for (char c : ch)
builder.append("&").append(c);
            from = from.replace(hexCode, builder.toString());
            matcher = pattern.matcher(from);
        }
return ChatColor.translateAlternateColorCodes('&', from);
    }
    }
Код:
package org.ex.test;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Tab implements TabCompleter {
@Override
    public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if (args.length == 1) {
return Arrays.asList("reload");
        }
 return new ArrayList<>();
    }
}
 
[22:29:07 ERROR]: Could not load 'plugins\hello.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: Unsupported API version 1.12
at org.bukkit.craftbukkit.v1_16_R3.util.CraftMagicNumbers.checkSupported(CraftMagicNumbers.java:361) ~[patched_1.16.5.jar:git-Purpur-1171]
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:149) ~[patched_1.16.5.jar:git-Purpur-1171]
at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:414) ~[patched_1.16.5.jar:git-Purpur-1171]
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:322) ~[patched_1.16.5.jar:git-Purpur-1171]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.loadPlugins(CraftServer.java:393) ~[patched_1.16.5.jar:git-Purpur-1171]
at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:279) ~[patched_1.16.5.jar:git-Purpur-1171]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1074) ~[patched_1.16.5.jar:git-Purpur-1171]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:293) ~[patched_1.16.5.jar:git-Purpur-1171]
at java.lang.Thread.run(Thread.java:829) [?:?]
на 1 12 работает на 1 16 нет
 
[22:29:07 ERROR]: Could not load 'plugins\hello.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: Unsupported API version 1.12
at org.bukkit.craftbukkit.v1_16_R3.util.CraftMagicNumbers.checkSupported(CraftMagicNumbers.java:361) ~[patched_1.16.5.jar:git-Purpur-1171]
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:149) ~[patched_1.16.5.jar:git-Purpur-1171]
at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:414) ~[patched_1.16.5.jar:git-Purpur-1171]
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:322) ~[patched_1.16.5.jar:git-Purpur-1171]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.loadPlugins(CraftServer.java:393) ~[patched_1.16.5.jar:git-Purpur-1171]
at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:279) ~[patched_1.16.5.jar:git-Purpur-1171]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1074) ~[patched_1.16.5.jar:git-Purpur-1171]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:293) ~[patched_1.16.5.jar:git-Purpur-1171]
at java.lang.Thread.run(Thread.java:829) [?:?]
на 1 12 работает на 1 16 нет
По тому что нет такой штуки как api-version 1.12
 
Назад
Сверху Снизу