This plugin is compatible with all Minecraft versions from 1.8 onwards, including any future versions. Unless there's some major API change, I won't need to update the plugin to support newer Minecraft versions.
MagicalCrafting allows admins to define structures, like altars, which players can build themselves later. These altars let players sacrifice items to obtain new ones. An altar has a core block for the main ingredient (mandatory) and pedestal blocks for the other ingredients (optional).
Admins can create, remove, and edit structure schematics and recipes. Recipes can be specific to certain altars or shared across multiple altars. Recipe editing, including changing ingredients, the main ingredient, the result, and the crafting time, is done through an easy-to-use GUI.
When a player places an item on the core or pedestal block, the item will float above the respective block.
/craftstructure [id] {remove}
Description: Defines a structure between two selected points.
Usage: /craftstructure [id] {remove}
remove is optional; if included, the structure is removed.
Aliases: /cstructure, /cstruct
Permission: magicalcrafting.managestructure
/crrecipe [add/remove] [id]
Description: Adds or removes a recipe with a specific ID.
Usage: /crrecipe [add/remove] [id]
Permission: magicalcrafting.createremove
/lrecipe
Description: Displays a list of recipe IDs.
Usage: /lrecipe
Aliases: /lrecipes
Permission: magicalcrafting.list
/editrecipe [id]
Description: Edits the properties of a specific recipe.
Usage: /editrecipe [id]
Permission: magicalcrafting.editrecipe
/magicalcrafting
Description: Reloads the plugin’s configuration.
Usage: /magicalcrafting
Permission: magicalcrafting.reload
/scrr [add/remove] [structureId/] [recipeId/]
Description: Modifies the available recipes for a structure.
Description: Displays the recipes associated with the selected structure.
Usage: /srstructure [id]
Permission: magicalcrafting.seerecipes
/mcarfriend [add/remove] [name]
Description: Add/remove a friend from your altar settings
Usage: /mcarfriend [add/remove] [playerName]
Permission: magicalcrafting.addremovefriends
/oasgui
Description: Edit the settings for your altars
Usage: /oasgui
Permission: magicalcrafting.altarsettings
Config related settings+permissions:
requirePermissionToBuild (disabled by default): If this setting is enabled, players will need the magicalcrafting.buildstructure permission to build an altar.
onlyOwnerCanInteract (enabled by default): If this setting is enabled, only the player who built the altar or staff members with the magicalcrafting.ownerbypass permission can interact with it.
updateNotifications (enabled by default): If this setting is enabled, staff members with the magicalcrafting.managestructure permission will receive a notification upon joining if a newer version of the plugin is available for download.
To remove an altar: /craftstructure [id] remove
To create an altar, follow these steps:
Selecting Points: Grab an enchanted book (any enchantment will work) and use it to select two points. Left-click to set the first point and right-click to set the second. Both points must be in the same world. The structure you select must be fully connected, without any gaps.
Defining the Structure: The structure will be selected from the cube formed between the two points, excluding the blocks on the outer edges. This means only the blocks inside the cube are included. For best results, it's recommended to have the structure suspended in the air.
Marking the Core and Pedestal Blocks:
To mark the core block, left-click it with a diamond. If you need to remove the mark, left-click it again.
To mark a pedestal block, right-click it with a diamond. To remove the mark, right-click it again.
Finalizing the Structure: Once the core and pedestal blocks are marked, use the following command to finalize the altar:: /craftstructure [id]
After using the /crrecipe command to add a recipe, you can edit its properties with the /editrecipe command.
First Item: This opens a second inventory where you can define up to 54 ingredients. For the recipe to work, each ingredient must match exactly in terms of amount, name, lore, material, NBT tags, etc.
Second Item: This allows you to set the main ingredient, which will be placed on the core block. To do this, left-click any item in your inventory. The same rules apply as with the ingredient list—the item must match exactly. The core item is optional, and you can remove it by left-clicking it in the GUI.
Third Slot: This defines the result that will spawn on the core block and consume the other ingredients. The result will be an exact copy of the item you define. To set it, right-click an item in your inventory. This item can be left null, meaning players will receive nothing when the recipe is completed.
Fourth Item: This lets you set the time it takes for the recipe to complete once initiated. Selecting this item will close your inventory and allow you to type the time in the chat. The format is [amount]s/m/h/d (for seconds, minutes, hours, or days). Entering an invalid format will keep the old value. The time cannot be negative or less than 1 second.
You can leave the GUI at any point and continue setting up the recipe later; your progress will be saved.
If you remove a recipe, it will automatically be removed from any altar prefab, and any ongoing recipes using that ID will be stopped.
PHP:
reloadConfig
:'&aYou have reloaded the config' noPermission
:'&4You do not have the permission to execute this command'
# This option allows the plugin to collect anonymous statistics. # No personal or sensitive information is shared, only general usage data. useBStats
:true
# Players who are OPed or have the magicalcrafting.managestructure permission will receive an in-game notification about plugin updates when they join. updateNotifications
:true
# When enabled, only the owner player of the altar, or players with the magicalcrafting.ownerbypass permission, can interact with structures. onlyOwnerCanInteract
:true
invalidLocations
:'&c&lInvalid Location! &7Please ensure both points are in the same world.' noBlock
:'&c&lNo Blocks Found! &7There are no valid blocks between the selected points.' sameId
:'&c&lDuplicate ID! &7A structure with this ID already exists.' structureCreated
:'&a&lStructure Created! &7Structure {id} has been created with &a{blocks} blocks &7and &a{pedestals} pedestals.' structureRemoved
:'&a&lStructure Removed! &7The structure {id} has been removed. Players will no longer be able to build it.' noCore
:'&c&lCore Block Missing! &7The structure does not have a core block selected.'
pos1Selected
:'&a&lPosition 1 Set! &7Location: {world} at ({x}, {y}, {z})' pos2Selected
:'&a&lPosition 2 Set! &7Location: {world} at ({x}, {y}, {z})' invalidCommand
:'&c&lInvalid Command! &7Usage: /craftstructure [id] {remove} - Using {remove} removes the ID, otherwise, it creates one.' invalidId
:'&c&lInvalid ID! &7There is no structure with the ID {id}.'
# When true, only players with the magicalcrafting.buildstructure permission can build altars. requirePermissionToBuild
:false
selectedCore
:'&a&lCore Block Selected! &7The clicked block has been set as the core block.' unselectedCore
:'&c&lCore Block Deselected! &7The clicked block has been removed as the core block.' selectedPedestal
:'&a&lPedestal Block Selected! &7The clicked block has been set as a pedestal block.' unselectedPedestal
:'&c&lPedestal Block Deselected! &7The clicked block has been removed as a pedestal block.'
recipeDoesNotExist
:'&c&lRecipe Not Found! &7No recipe exists with the ID {id}.' recipeAlreadyExists
:'&c&lDuplicate Recipe! &7A recipe with the ID {id} already exists.' createRemoveCmdUsage
:'&c&lCommand Usage: &7/crrecipe [add/remove] [id]' editRecipeCmdUsage
:'&c&lCommand Usage: &7/editrecipe [id]' recipeCreated
:'&a&lRecipe Created! &7A new recipe with the ID {id} has been created. Use /editrecipe {id} to modify it.' recipeRemoved
:'&a&lRecipe Removed! &7The recipe with the ID {id} has been removed.'
structureCreateRemoveCmdUsage
:'&c&lCommand Usage: &7/scrr [add/remove] [structureId/*] [recipeId/*]' structureDoesNotExist
:'&c&lStructure Not Found! &7Structure {structure} does not exist.' structureCreateRemoveCmdUse
:'&a&lAction Completed! &7You have {action} the recipe {recipe} to the structure {structure}.' seeRecipesStructureCmdUsage
:'&c&lCommand Usage: &7/srstructure [id]'
# Inventory section awaitInputMainMessage
:'&a&lAwaiting Input! &7Please input a delay in chat, for example: 5s, 35m, 1h, 2d.' invalidInputMainMessage
:'&c&lInvalid Input! &7The time delay {invalid} is not recognized.'
altarSettingsInventoryName
:'&c&lAltar Settings' friendsCmdUsage
:'&c&lCommand Usage: &7/mcarfriend [add/remove] [username]' playerInvalid
:'&c&lPlayer Not Found! &7Player {player} has never played on this server.' addedFriend
:'&a&lFriend Added! &7You have added {player} to your friend list.' alreadyFriend
:'&e&lAlready Friends! &7{player} is already on your friend list.' removeFriend
:'&a&lFriend Removed! &7You have removed {player} from your friend list.' notFriend
:'&c&lNot Friends! &7{player} is not on your friend list.' cannotAddFriendSelf
:'&7You cannot add yourself as a friend.'
# End Update 1.1
# Update 1.2
# Available tags you can use ALL, AMOUNT, DURABILITY, ITEM_META, NAME, LORE, CUSTOM_MODEL_DATA, ENCHANTS, ITEM_FLAGS, ALL_CUSTOM_NBT_TAGS # ALL only checks if the two items have the same material # AMOUNT skips the check for the amount between item. So on for the other settings # ITEM_META skips everything that is under item meta, so there's no reason to put NAME, LORE, etc. # Newer versions of minecraft hold DURABILITY inside the item meta, so you need to keep track of that if that's the case with your server's versions # ALL_CUSTOM_NBT_TAGS only works for 1.13.2+ item
-check
-skips
: -NULL # - ITEM_META
# End update 1.2
# Materials that end with _STAINED_GLASS_PANE will use STAINED_GLASS_PANE instead for old versions # This only works for materials that end _STAINED_GLASS_PANE as it is the default example items
: filler
: material
: BLACK_STAINED_GLASS_PANE
materialData
:15 customModelData
:0 amount
:1 name
:' '
# Used in the edit recipe GUI edit
-ingredients
: material
: FEATHER
name
:'&a&lModify Ingredients' lore
:'&7Currently selected recipe: &a{id}' hasGlow
:true select
-main
-ingredient
: material
: ENDER_PEARL
name
:'&c&lMain Ingredient Not Selected' lore
: -'&7When you select a main ingredient, it will appear here.' -'&7Left-click an item in your inventory to select it.' -'&7Left-click this item again to remove the main ingredient.' -'&7Right-click this item to receive a copy of it in your inventory, if you have space.' -'&7Currently selected recipe: &a{id}' select
-result
: material
: GLASS
name
:'&c&lResult Item Not Selected' lore
: -'&7When you select a result item, it will appear here.' -'&7Right-click an item in your inventory to select it.' -'&7Left-click this item again to remove the result item.' -'&7Right-click this item to receive a copy of it in your inventory, if you have space.' -'&7Currently selected recipe: &a{id}' change
-wait
-time: material
: COMPASS
hasGlow
:true name
:'&a&lChange Wait Time' lore
: -'&7Left-click and input the time in chat using the format {amount}:{format}.' -'&7Available formats: s (seconds), m (minutes), h (hours), d (days).' -'&7Example: &a37s &7= 37 seconds.' -'&7Current selected wait time: &a{waitTime}' -'&7Currently selected recipe: &a{id}'
#Used in the altar settings GUI structure
-access
-mode
: material
: BOOK
name
:'&a&lChange Access Mode' lore
: -'&7Select who can interact with the items from your altars.' -'&7If a certain config option is turned on, this option will always be &cPRIVATE&7.' -'&7Available modes: &cPRIVATE&7, &aFRIENDS_ONLY&7, &bPUBLIC&7.' -'&7Current mode: &a{mode}'
# Fancy stuff - Future features concept section
# The features described below are currently a concept and not implemented yet. # If positive feedback is received, these features might be developed in the future.
# Possible future events: onStructureBuild, onStructureDestroy, onStructureStartRecipe, onStructureStopRecipe, onStructureRecipeOnGoing # onStructureRecipeOnGoing includes an interval setting, determining how often the following actions execute. Minimum interval is one second. # For ancient versions (1.8) without particle support, you will need to use 'effect' instead: # onStructureBuild: # onCore: # - 'sound [sound] [volume] [pitch]' # - 'lightning' # - 'particle [particle] [amount]' # - 'sendMessage &a&lStructure built successfully!' # onPedestals: # forEachBlock: # - 'particle [particle] [amount]' # - 'lightning' # onMiscBlocks:
#Do not modify, or you might lose data
configVersion
:0.0
Future Plans:
Bug Fixes: I will address any bugs that are found.
Potential Features: I may implement some of the ideas mentioned in the config.yml under the "#Fancy stuff" section. I recommend reading it first. If the plugin gains popularity and receives positive feedback, I plan to continue adding new features in the future.
If you have any feedback, suggestions, or need to report bugs or errors, please contact me on Discord:
balustrada
I rarely log in to my Spigot page, so if you leave reviews, start discussions, or send me direct messages on Spigot, it may take me a long time to respond. For quicker communication, contact me on Discord first.