/**
* Adds pages to the BookMeta. A Spigot commit in the late days of Minecraft 1.11.2 started enforcing extremely low
* limits (why? If it's not broken, don't fix it.), with books limited in page size and total number of pages, as
* well as title length. This function bypasses such limits and restores the original CraftBukkit behaviour. See
* https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/commits/4acd0f49e07e0912096e79494472535baf0db2ab
* for more information.
*
* @param bookPages
* @param bookMeta
*/
@SuppressWarnings("unchecked")
private void setBookPages(List<String> bookPages, BookMeta bookMeta) {
if (plugin.getServerVersion() >= 11) {
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);
List<Object> pages = (List<Object>) craftMetaBookClass.getField(FIELD_PAGES)
.get(craftMetaBookClass.cast(bookMeta));
Method fromStringMethod = PackageType.CRAFTBUKKIT
.getClass(PACKAGE_UTIL + "." + CLASS_CRAFT_CHAT_MESSAGE)
.getMethod(METHOD_FROM_STRING, String.class, boolean.class);
for (String bookPage : bookPages) {
pages.add(((Object[]) fromStringMethod.invoke(null, bookPage, true))[0]);
}
} catch (Exception e) {
plugin.getLogger().warning(
"Error while creating book pages. Your achievements book may be trimmed down to 50 pages.");
bookMeta.setPages(bookPages);
}
} else {
bookMeta.setPages(bookPages);
}
}
BookCommand.java 文件源码
java
阅读 23
收藏 0
点赞 0
评论 0
项目:AdvancedAchievements
作者:
评论列表
文章目录