Menu Spell - TheComputerGeek2/MagicSpells GitHub Wiki

Source Code

This spell extends its options from Instant Spell.

spell-class: ".MenuSpell"
  • special - Plays the effect at the caster's location when they open a menu.
Value Supported
entity true
location true
entity_from_location false

Description:

A spell that opens an inventory GUI with options.

Configuration:

Since 4.0 Beta 13 some of these options support dynamic values through numeric or string expressions.

Option Description Type Default Supports expressions
title The title of the menu. Supports variable replacement. Rich Text "Window Title <spellName>" true
delay Delays the open event by server ticks. You should set this to at least 1 when chaining menu spells. Delay 0 true
require-entity-target If set to true targets entities to cast a spell on. Boolean false true
require-location-target If set to true target locations to cast the spell at. Boolean false true
target-opens-menu-instead If set to true, open the GUI for the targeted entity if require-entity-target is true. Boolean false true
bypass-normal-cast If set to false, all sub-spells in all options will not be cast as a sub-spell, but as a main spell. By default, sub-spells are cast in partial mode, ignoring cooldowns and other things listed. Using this spell option ignores all other cast arguments, and it is the equivalent of configuring all sub-spells to be cast in full mode. Boolean true true
filler An item to fill slots without items. Uses the Magic Item String format. String false
stay-open-non-option If set to true, when empty slots or fillers are clicked, the menu will stay open. Boolean false true
min-rows The spell usually resizes the GUI to fit in all options. You can alternatively set a minimum amount of set rows. Integer 0 true
options A config section with keys that may be random, and values which follow Menu Option configuration. Config Section

Option Configuration:

Option Description
slot The slot to put this item in. The latest will override the previous item if two items have the same slot. Option modifiers can control this and have a specific item appear based on the condition.
slots A list of slots to put the item in. The behaviour is the same as above. If both slot and slots are defined, slot will be ignored.
item Magic item to display. Can be in string format using the Magic Item String or Magic Item Config format. Custom name and lore support variable replacement.
items List of magic items, using the Magic Item String format, to pick one random item from. If this is defined, it will ignore item.
quantity Quantity of the specified item. This can be a variable name.
modifiers Modifiers which determine whether the item is displayed in the slot.
spell Sub-spell cast if the item is left clicked.
spell-right Sub-spell cast if the item is right clicked.
spell-middle Removed in 4.0 Beta 13. Undetectable unless in Creative mode since around 1.18. Sub-spell cast if the item is middle mouse clicked.
spell-sneak-left Sub-spell cast if the item is left clicked while sneaking.
spell-sneak-right Sub-spell cast if the item is right clicked while sneaking.
spell-drop Since 4.0 Beta 13. Sub-spell cast if the item is dropped with the drop key.
spell-swap Since 4.0 Beta 13. Sub-spell cast if the item is swapped offhand with the swap key.
power The spell power of the clicked spell.
stay-open Defaults to false. Determines whether the menu should stay open when an item is clicked. The menu is reopened (refreshed) if the item is clicked cast a spell that was cast successfully. If it doesn't cast successfully, it doesn't close the menu.

Examples:

Menu:
    spell-class: ".MenuSpell"
    cooldown: 2
    bypass-normal-cast: false
    options: # You can have more than one defined option
        option1: # The name of the option can be anything
            slot: 0 # The first slot starts from 0 to 53
            item: stone
            quantity: 64
            stay-open: false
        option2:
            slot: 1
            item: stone
            quantity: 32
            stay-open: true # Leave the menu open if you select this
CoordsMenu: # A simple example yet a great way to use variable replacement in a MenuSpell
    spell-class: ".MenuSpell"
    cast-item: compass
    title: "&4This GUI shows your coordinates!"
    options:
        coordinates:
            slot: 1
            item: # In this case the item option is a configuration section
              type: compass
              name: "&7&lCoordinates"
              lore:
                - "&9You are now at..."
                - "&cX: &4%var:meta_location_x:0% &cY: &4%var:meta_location_y:0% &cZ: &4%var:meta_location_z:0%"
            stay-open: true
        bedcordinates:
            slot: 7
            item:
              type: bed
              name: "&b&lBed Coordinates"
              lore:
                - "&9You are now at..."
                - "&cX: &4%var:meta_bed_location_x:0% &cY: &4%var:meta_bed_location_y:0% &cZ: &4%var:meta_bed_location_z:0%"
            stay-open: true
⚠️ **GitHub.com Fallback** ⚠️