use of net.minecraft.server.v1_15_R1.ItemStack in project CitizensBooks by NicoNekoDev.
the class DistributionHandler method applyPlaceholders.
@SuppressWarnings({ "ConstantConditions", "unchecked" })
@Override
public ItemStack applyPlaceholders(Player player, ItemStack book, NPC npc) throws IllegalAccessException {
Validate.notNull(book, "The ItemStack is null! This is not an error with CitizensBooks," + " so please don't report it. Make sure the plugins that uses CitizensBooks as dependency are correctly configured.");
Validate.isTrue(book.getType() == Material.WRITTEN_BOOK, "The ItemStack is not a written book! This is not an error with CitizensBooks," + " so please don't report it. Make sure the plugins that uses CitizensBooks as dependency are correctly configured.");
BookMeta bookMeta = (BookMeta) book.getItemMeta();
List<String> pages = bookMeta.hasPages() ? super.papiReplaceStrList.apply(player, ((List<IChatBaseComponent>) this.pagesField.get(bookMeta)).stream().map(IChatBaseComponent.ChatSerializer::a).toList(), Optional.ofNullable(npc)) : new ArrayList<>();
String author = bookMeta.hasAuthor() ? super.papiReplaceStr.apply(player, bookMeta.getAuthor(), Optional.ofNullable(npc)) : "Server";
String title = bookMeta.hasTitle() ? super.papiReplaceStr.apply(player, bookMeta.getTitle(), Optional.ofNullable(npc)) : "Title";
ItemStack newBook = new ItemStack(Material.WRITTEN_BOOK);
bookMeta.setAuthor(author);
bookMeta.setTitle(title);
this.pagesField.set(bookMeta, pages.stream().map(IChatBaseComponent.ChatSerializer::a).toList());
newBook.setItemMeta(bookMeta);
return newBook;
}
use of net.minecraft.server.v1_15_R1.ItemStack in project CitizensBooks by NicoNekoDev.
the class DistributionHandler method convertJsonToBook.
@SuppressWarnings("ConstantConditions")
@Override
public ItemStack convertJsonToBook(JsonObject jsonBook) throws IllegalAccessException {
ItemStack newBook = new ItemStack(Material.WRITTEN_BOOK);
BookMeta bookMeta = (BookMeta) newBook.getItemMeta();
JsonPrimitive jsonAuthor = jsonBook.getAsJsonPrimitive("author");
JsonPrimitive jsonTitle = jsonBook.getAsJsonPrimitive("title");
JsonArray jsonPages = jsonBook.getAsJsonArray("pages");
bookMeta.setAuthor(jsonAuthor.isString() ? jsonAuthor.getAsString() : "Server");
bookMeta.setTitle(jsonTitle.isString() ? jsonTitle.getAsString() : "Title");
List<IChatBaseComponent> pages = new ArrayList<>();
for (JsonElement jsonPage : jsonPages) {
pages.add(IChatBaseComponent.ChatSerializer.a(jsonPage.toString()));
}
this.pagesField.set(bookMeta, pages);
newBook.setItemMeta(bookMeta);
return newBook;
}
use of net.minecraft.server.v1_15_R1.ItemStack in project CitizensBooks by NicoNekoDev.
the class DistributionHandler method convertBookToJson.
@SuppressWarnings({ "ConstantConditions", "unchecked" })
@Override
public JsonObject convertBookToJson(ItemStack book) throws IllegalAccessException {
BookMeta bookMeta = (BookMeta) book.getItemMeta();
List<IChatBaseComponent> pages = bookMeta.hasPages() ? (List<IChatBaseComponent>) this.pagesField.get(bookMeta) : new ArrayList<>();
JsonArray jsonPages = new JsonArray();
for (IChatBaseComponent page : pages) {
jsonPages.add(super.gson.fromJson(IChatBaseComponent.ChatSerializer.a(page), JsonElement.class));
}
JsonPrimitive jsonAuthor = new JsonPrimitive(bookMeta.hasAuthor() ? bookMeta.getAuthor() : "Server");
JsonPrimitive jsonTitle = new JsonPrimitive(bookMeta.hasTitle() ? bookMeta.getTitle() : "Title");
JsonObject jsonBook = new JsonObject();
jsonBook.add("author", jsonAuthor);
jsonBook.add("title", jsonTitle);
jsonBook.add("pages", jsonPages);
return jsonBook;
}
use of net.minecraft.server.v1_15_R1.ItemStack in project SilkSpawners by timbru31.
the class NMSHandler method setNBTEntityID.
@Override
public ItemStack setNBTEntityID(final ItemStack item, final String entity) {
if (item == null || StringUtils.isBlank(entity)) {
Bukkit.getLogger().warning("[SilkSpawners] Skipping invalid spawner to set NBT data on.");
return null;
}
String prefixedEntity;
if (!entity.startsWith("minecraft:")) {
prefixedEntity = "minecraft:" + entity;
} else {
prefixedEntity = entity;
}
net.minecraft.server.v1_15_R1.ItemStack itemStack = null;
final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item);
itemStack = CraftItemStack.asNMSCopy(craftStack);
NBTTagCompound tag = itemStack.getOrCreateTag();
// Check for SilkSpawners key
if (!tag.hasKey("SilkSpawners")) {
tag.set("SilkSpawners", new NBTTagCompound());
}
tag.getCompound("SilkSpawners").setString("entity", entity);
// Check for Vanilla keys
if (!tag.hasKey("BlockEntityTag")) {
tag.set("BlockEntityTag", new NBTTagCompound());
}
tag = tag.getCompound("BlockEntityTag");
// EntityId - Deprecated in 1.9
tag.setString("EntityId", entity);
tag.setString("id", TileEntityTypes.a(TileEntityTypes.MOB_SPAWNER).getKey());
// SpawnData
if (!tag.hasKey("SpawnData")) {
tag.set("SpawnData", new NBTTagCompound());
}
tag.getCompound("SpawnData").setString("id", prefixedEntity);
if (!tag.hasKey("SpawnPotentials")) {
tag.set("SpawnPotentials", new NBTTagCompound());
}
// SpawnEgg data
if (!tag.hasKey("EntityTag")) {
tag.set("EntityTag", new NBTTagCompound());
}
tag.getCompound("EntityTag").setString("id", prefixedEntity);
return CraftItemStack.asCraftMirror(itemStack);
}
use of net.minecraft.server.v1_15_R1.ItemStack in project SilkSpawners by timbru31.
the class NMSHandler method getVanillaNBTEntityID.
@Override
@Nullable
public String getVanillaNBTEntityID(final ItemStack item) {
net.minecraft.server.v1_15_R1.ItemStack itemStack = null;
final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item);
itemStack = CraftItemStack.asNMSCopy(craftStack);
NBTTagCompound tag = itemStack.getTag();
if (tag == null || !tag.hasKey("BlockEntityTag")) {
return null;
}
tag = tag.getCompound("BlockEntityTag");
if (tag.hasKey("EntityId")) {
return tag.getString("EntityId");
} else if (tag.hasKey("SpawnData") && tag.getCompound("SpawnData").hasKey("id")) {
return tag.getCompound("SpawnData").getString("id");
} else if (tag.hasKey("SpawnPotentials") && !tag.getList("SpawnPotentials", 8).isEmpty()) {
return tag.getList("SpawnPotentials", 8).getCompound(0).getCompound("Entity").getString("id");
} else {
return null;
}
}
Aggregations