Search in sources :

Example 1 with JWriter

use of me.devtec.shared.json.JWriter in project TheAPI by TheDevTec.

the class BukkitLoader method initTheAPI.

private static void initTheAPI(JavaPlugin plugin) {
    // OfflineCache support!
    API.initOfflineCache(Bukkit.getOnlineMode(), new Config("plugins/TheAPI/Cache.dat"));
    Ref.init(Ref.getClass("net.md_5.bungee.api.ChatColor") != null ? (Ref.getClass("net.kyori.adventure.Adventure") != null ? ServerType.PAPER : ServerType.SPIGOT) : ServerType.BUKKIT, // Server version
    Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3]);
    if (Ref.serverType() != ServerType.BUKKIT)
        ComponentAPI.init((Bungee<?>) Ref.newInstanceByClass(Ref.getClass("me.devtec.shared.components.BungeeComponentAPI")), Ref.serverType() == ServerType.PAPER ? (Adventure<?>) Ref.newInstanceByClass(Ref.getClass("me.devtec.shared.components.AdventureComponentAPI")) : null);
    if (Ref.isNewerThan(7))
        // Modern version of Guava
        Json.init(new ModernJsonReader(), new ModernJsonWriter());
    else
        // Old version of Guava
        Json.init((JReader) Ref.newInstanceByClass(Ref.getClass("me.devtec.shared.json.legacy.LegacyJsonReader")), (JWriter) Ref.newInstanceByClass(Ref.getClass("me.devtec.shared.json.legacy.LegacyJsonWriter")));
    API.library = new LibraryLoader() {

        List<File> loaded = new ArrayList<>();

        ImplementableJar jar;

        SimpleClassLoader lloader;

        @Override
        public void load(File file) {
            if (isLoaded(file) || !file.exists())
                return;
            loaded.add(file);
            ClassLoader loader = plugin.getClass().getClassLoader();
            if (getJavaVersion() <= 15) {
                if (addUrl == null)
                    addUrl = Ref.method(URLClassLoader.class, "addURL", URL.class);
                try {
                    // Simple!
                    Ref.invoke(loader, addUrl, file.toURI().toURL());
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                }
            } else {
                if (Ref.isNewerThan(16) || Ref.isNewerThan(15) && Ref.serverType() == ServerType.PAPER) {
                    // 1.16.X with Paper or 1.17 and newer
                    if (lloader == null) {
                        try {
                            lloader = new SimpleClassLoader(new URL[] { file.toURI().toURL() });
                        } catch (MalformedURLException e) {
                            e.printStackTrace();
                        }
                        Ref.set(loader, "library", lloader);
                    } else
                        try {
                            lloader.addURL(file.toURI().toURL());
                        } catch (MalformedURLException e) {
                            e.printStackTrace();
                        }
                }
                try {
                    // Just small hack for modern Java.. - Does not working for files inside jar
                    if (jar == null) {
                        jar = new ImplementableJar((File) Ref.get(loader, "file"));
                        Ref.set(loader, "manifest", jar);
                        Ref.set(loader, "jar", jar);
                    }
                    jar.file.add(new JarFile(file));
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        @Override
        public boolean isLoaded(File file) {
            return loaded.contains(file);
        }
    };
    API.basics().load();
    StringUtils.rainbowSplit = Pattern.compile("(#[A-Fa-f0-9]{6}([&§][K-Ok-oRr])*|[&§][Xx]([&§][A-Fa-f0-9]){6}([&§][K-Ok-oRr])*|[&§][A-Fa-f0-9K-ORrk-oUuXx]([&§][K-Ok-oRr])*)");
    StringUtils.color = new ColormaticFactory() {

        char[] characters = "abcdef0123456789".toCharArray();

        Random random = new Random();

        Pattern getLast = Pattern.compile("(#[A-Fa-f0-9k-oK-ORrXxUu]{6}|§[Xx](§[A-Fa-f0-9k-oK-ORrXxUu]){6}|§[A-Fa-f0-9k-oK-ORrXxUu]|&[Uu])"), hex = Pattern.compile("(#[a-fA-F0-9]{6})");

        @Override
        public String gradient(String msg, String fromHex, String toHex) {
            return API.basics().gradient(msg, fromHex, toHex);
        }

        @Override
        public String generateColor() {
            StringBuilder b = new StringBuilder("#");
            for (int i = 0; i < 6; ++i) b.append(characters[random.nextInt(16)]);
            return b.toString();
        }

        @Override
        public String[] getLastColors(String text) {
            return API.basics().getLastColors(getLast, text);
        }

        @Override
        public String replaceHex(String msg) {
            Matcher match = hex.matcher(msg);
            while (match.find()) {
                String color = match.group();
                String hex = "§x";
                for (char c : color.substring(1).toCharArray()) hex += "§" + c;
                msg = msg.replace(color, hex);
            }
            return msg;
        }
    };
}
Also used : ModernJsonReader(me.devtec.shared.json.modern.ModernJsonReader) MalformedURLException(java.net.MalformedURLException) Matcher(java.util.regex.Matcher) Config(me.devtec.shared.dataholder.Config) Bungee(me.devtec.shared.components.Bungee) ArrayList(java.util.ArrayList) LibraryLoader(me.devtec.shared.utility.LibraryLoader) URL(java.net.URL) Random(java.util.Random) ColormaticFactory(me.devtec.shared.utility.StringUtils.ColormaticFactory) URLClassLoader(java.net.URLClassLoader) JReader(me.devtec.shared.json.JReader) Pattern(java.util.regex.Pattern) JWriter(me.devtec.shared.json.JWriter) IOException(java.io.IOException) JarFile(java.util.jar.JarFile) ModernJsonWriter(me.devtec.shared.json.modern.ModernJsonWriter) URLClassLoader(java.net.URLClassLoader) JarFile(java.util.jar.JarFile) File(java.io.File)

Aggregations

File (java.io.File)1 IOException (java.io.IOException)1 MalformedURLException (java.net.MalformedURLException)1 URL (java.net.URL)1 URLClassLoader (java.net.URLClassLoader)1 ArrayList (java.util.ArrayList)1 Random (java.util.Random)1 JarFile (java.util.jar.JarFile)1 Matcher (java.util.regex.Matcher)1 Pattern (java.util.regex.Pattern)1 Bungee (me.devtec.shared.components.Bungee)1 Config (me.devtec.shared.dataholder.Config)1 JReader (me.devtec.shared.json.JReader)1 JWriter (me.devtec.shared.json.JWriter)1 ModernJsonReader (me.devtec.shared.json.modern.ModernJsonReader)1 ModernJsonWriter (me.devtec.shared.json.modern.ModernJsonWriter)1 LibraryLoader (me.devtec.shared.utility.LibraryLoader)1 ColormaticFactory (me.devtec.shared.utility.StringUtils.ColormaticFactory)1