A wrapper on BBConfigMapper, which manages configuration
instances and adds value converters, like the item-buildable as well as the bukkit-evaluable itself, which provides
many bukkit type interpretations and support for the use of &
-colors.
In order to signal to the system that a key's value is an evaluable expression, add a trailing dollar sign to it's name ($
).
All permission nodes of a plugin can be configured to a custom value, based on a unique internal key.
permissions:
# permission: The missing permission node string
missingMessage$: 'lut["prefix"] & "&7You\sre lacking the permission &c" & permission'
# Map of internal name to custom configurable node value
nodes:
open: headcatalog.open
request: headcatalog.request
The item-stack section can be used to either define a custom item from scratch, patch another item description in order to customize/update/adapt it to a special use-case or to describe a matcher for already existing item-stacks. For a matcher, non-specified properties act as wildcards. For a patcher, only specified values get updated, according to the patch-flags.
This full example shows off all available keys. A section like this wouldn't make any sense, as some properties are only applicable to a certain material type, but it still serves as a great template.
amount: 32
type: DIAMOND_PICKAXE
name: '&6My fancy pickaxe'
lore:
- ' '
- '&7This is a &dlore line&7!'
- '&7This is another &dlore line&7!'
flags:
- HIDE_ATTRIBUTES
- HIDE_UNBREAKABLE
color: ORANGE
enchantments:
-
enchantment: ARROW_FIRE
level: 4
-
enchantment: KNOCKBACK
level: 2
textures: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTE4YTJkZDViZWYwYjA3M2IxMzI3MWE3ZWViOWNmZWE3YWZlODU5M2M1N2E5MzgyMWU0MzE3NTU3MjQ2MTgxMiJ9fX0='
baseEffect:
type: HARM
extended: false
upgraded: true
customEffects:
-
effect: HUNGER
duration: 200
amplifier: 3
ambient: false
particles: true
icon: true
bannerPatterns:
-
pattern: STRIPE_TOP
color: RED
-
pattern: STRIPE_BOTTOM
color: BLUE
patchFlags:
- OVERRIDE_LORE
- OVERRIDE_BANNER_PATTERNS
Bukkit colors already come with a set of predefined constants, which
you can specify on properties of type color. If a custom RGB-color is required, it can be written down as R G B
, where each letter
can take on a value from 0
to 255
, including both ends.
The amount of items, interpreted as an integer value.
The type (material), interpreted as a XMaterial Enum.
The display-name, interpreted as a string value.
The displayed lore lines, interpreted as a string-list.
The active item-flags, interpreted as a set of ItemFlag Enumeration Values.
The color of this item, applied if the item is colorizable (leather-armor, potion, map, ...), interpreted as a Bukkit Color.
All enchantments which are present on this item, interpreted as a list of enchantment sections
.
An enchantment to be applied to an item, consisting of the following properties:
Property | Description | Interpretation |
---|---|---|
enchantment | Enchantment to be applied | XEnchantment Enum |
level | Level of the enchantment | Integer value |
The base64 textures value to be applied to a skull item, interpreted as a string.
A potion's base effect, consisting of the following properties:
Property | Description | Interpretation |
---|---|---|
type | Potion effect to be applied | XPotion Enum or PotionType Enum |
extended | Whether the duration is extended | Boolean value |
upgraded | Whether the effect has been upgraded | Boolean value |
All custom potion effects which are present on this item, interpreted as a list of custom effect sections
.
A potion's custom effect, consisting of the following properties:
Property | Description | Interpretation |
---|---|---|
effect | Potion effect to be applied | XPotion Enum |
duration | Duration of the effect in ticks | Integer value |
amplifier | Amplifier of the effect | Integer value |
ambient | More translucent particles | Boolean value |
particles | Whether to show particles | Boolean value |
icon | Whether to show an icon | Boolean value |
All custom banner patterns which are present on this item, interpreted as a list of banner pattern sections
.
A banner's custom pattern, consisting of the following properties:
Property | Description | Interpretation |
---|---|---|
pattern | Pattern to be applied | PatternType Enum |
color | Color of the pattern | DyeColor Enum |
Active patch flags when this item-stack section is being used to patch (customize, adapt) another item-stack section, interpreted as a set of Patch Flags.
These are override true flags, so if they're specified, the representing property is being overridden. If it's not specified, it's extended.
This library adds a few functions to the base evaluation environment of all retrievable values:
Decodes the passed base64 encoded string, parses it as JSON and returns the extracted textures.SKIN.url string value.
base64_to_skin_url("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTE4YTJkZDViZWYwYjA3M2IxMzI3MWE3ZWViOWNmZWE3YWZlODU5M2M1N2E5MzgyMWU0MzE3NTU3MjQ2MTgxMiJ9fX0=")
-> "http://textures.minecraft.net/texture/118a2dd5bef0b073b13271a7eeb9cfea7afe8593c57a93821e43175572461812"
Creates the json string required to provide skin texture urls and returns the base64 encoded value of that json string.
skin_url_to_base64("http://textures.minecraft.net/texture/118a2dd5bef0b073b13271a7eeb9cfea7afe8593c57a93821e43175572461812")
-> "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTE4YTJkZDViZWYwYjA3M2IxMzI3MWE3ZWViOWNmZWE3YWZlODU5M2M1N2E5MzgyMWU0MzE3NTU3MjQ2MTgxMiJ9fX0="
The top level section named "lut"
is a standard section in every configuration file and serves as a central store for
constants and duplicate data in general. It's of type map and is available as a static variable by the name "lut"
within
the base (and thus every) evaluation environment. As this table is bound at the evaluation level, it can be specified at the
bottom of the file and still be used anywhere, in contrast to yaml anchors.
Here's a shortened excerpt, used as an example:
commonItems:
previousPage:
type: PLAYER_HEAD
textures$: 'lut[if current_page > 1 then "ARROW_LEFT" else "ARROW_LEFT_RED"]'
lut:
ARROW_LEFT: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTE4YTJkZDViZWYwYjA3M2IxMzI3MWE3ZWViOWNmZWE3YWZlODU5M2M1N2E5MzgyMWU0MzE3NTU3MjQ2MTgxMiJ9fX0='
ARROW_LEFT_RED: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWRmNWMyZjg5M2JkM2Y4OWNhNDA3MDNkZWQzZTQyZGQwZmJkYmE2ZjY3NjhjODc4OWFmZGZmMWZhNzhiZjYifX19'