Enchanted books (Create/Add Enchantments)

  • Welcome to skUnity!

    Welcome to skUnity! This is a forum where members of the Skript community can communicate and interact. Skript Resource Creators can post their Resources for all to see and use.

    If you haven't done so already, feel free to join our official Discord server to expand your level of interaction with the comminuty!

    Now, what are you waiting for? Join the community now!

ShaneBee

Supporter +
Addon Developer
Sep 7, 2017
2,247
241
73
Vancouver, Canada
This will allow you to create new enchanted books (even though you can get them in creative) but also ADD enchantments to your books, making super custom books
Requires Skript-Mirror


This is the actual command to create the books and/or add enchantments to books
code_language.skript:
import:
    org.bukkit.enchantments.Enchantment
    org.bukkit.event.server.TabCompleteEvent
    java.util.Arrays

command /test <enchantment>:
    trigger:
        enchant player's tool with arg-1

command /bookench <text> <enchantment> [<integer=1>]:
    usage: &a/BookEnch &7<&bnew&7/&badd&7> <&benchantment&7> [&6level&7]
    permission: book.ench
    permission message: You do not have permission to use this command
    trigger:
        if arg-1 is "new":
            if arg-3 <= arg-2.getMaxLevel():
                set {_book} to "enchanted book" parsed as item
                set {_meta} to {_book}.getItemMeta()
                set {_ench} to arg-2
                {_meta}.addStoredEnchant({_ench}, arg-3, false)
                {_book}.setItemMeta({_meta})
                give player {_book}
                if arg-3 >= 2:
                    send "&aNew enchanted book of &b%arg-2% %arg-3% &acreated!"
                else:
                    send "&aNew enchanted book of &b%arg-2% &acreated!"
            else:
                send "&cENCHANTMENT LEVEL TOO HIGH"
        else if arg-1 is "add":
            if player's tool is enchanted book:
                if arg-3 <= arg-2.getMaxLevel():
                    set {_book} to player's tool
                    set {_meta} to {_book}.getItemMeta()
                    set {_ench} to arg-2
                    {_meta}.addStoredEnchant({_ench}, arg-3, false)
                    {_book}.setItemMeta({_meta})
                    if arg-3 >= 2:
                        send "&b%arg-2% %arg-3% &ahas been added to your book"
                    else:
                        send "&b%arg-2% &ahas been added to your book"
                else:
                    send "&cENCHANTMENT LEVEL TOO HIGH"
            else:
                send "&cYOU NEED AN ENCAHNTED BOOK TO USE THIS COMMAND"

This part is the tab completer for when you are creating a book, it'll auto fill in info for you
code_language.skript:
on TabCompleteEvent:
    if event.getBuffer() contains "/bookench new " or "/bookench add ":
        set {_buff} to event.getBuffer()
        replace "/bookench new " and "/bookench add " with "" in {_buff}
        set {_list} to "%Enchantment.values()%"
        set {_list::*} to {_list} split at ", "
        set {_num} to length of {_buff}
        loop {_list::*}:
            if first {_num} characters of loop-value is {_buff}:
                add loop-value to {_newbuff::*}
        if {_buff} contains " ":
            if last character of {_buff} is " ":
                set {_ench} to first (length of {_buff} - 1) characters of {_buff}
                set {_ench} to {_ench} parsed as enchantment
                set {_max} to {_ench}.getMaxLevel()
                event.setCompletions(Arrays.asList("[<max-level=%{_max}%>]"))
        else:
            if size of {_newbuff::*} = 0:
                event.setCompletions(Arrays.asList({_list::*}))
            else if size of {_newbuff::*} >= 1:
                event.setCompletions(Arrays.asList({_newbuff::*}))
    else if event.getBuffer() = "/bookench ":
        set {_list::*} to "new" and "add"
        event.setCompletions(Arrays.asList({_list::*}))
    else if event.getBuffer() = "/bookench a" or "/bookench ad":
        event.setCompletions(Arrays.asList("add"))
    else if event.getBuffer() = "/bookench n" or "/bookench ne":
        event.setCompletions(Arrays.asList("new"))
 
  • Like
Reactions: Dabriel
This is actually pretty neat.
can be used in some stuff and it's a good thing to actually look at the code and learn from it. Nice :thumbs_up:
 
This is actually pretty neat.
can be used in some stuff and it's a good thing to actually look at the code and learn from it. Nice :thumbs_up:
Thanks.
I kept trying to deal with custom books in the past having no luck, so this system really helped that out. Took a while to create but it works, YAY!