use of me.devtec.shared.json.JReader 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;
}
};
}
Aggregations