ShatteredScrolls is an RPG-themed replacement for warps and homes, by using scroll items that can be bound to any location or set to transport to specific spots!
Crafting
Binding and Teleporting
Warp System
Backup Image Links
Version 2 Information
As of version 2, the entire plugin has been rewritten to be a little more robust, and allow for expansion by other developers. A short summary of changes includes:
- You now need ShatteredCore. You can get that here. I'll post it to Spigot soon for Aternos users.
- Scrolls now can be given out that are bound to Essentials warps, and an API exists to add other warp providers.
- Scrolls now can be bound in different ways, and that can also be expanded through an API.
- Scrolls now have arbitrary costs, and more can be added through an API.
- Scrolls now can be refueled with a configurable item, and each use of the item can give a configurable number of charges back.
- Scrolls now can have a crafting recipe set.
- There are now unlimited types of scrolls.
- This *should* convert without issues from v1, but that's the part I worry about the most. Back up your configs.
Spoiler: scrolls.json
Code (json (Unknown Language)):
[
{
"id": "BindingScroll",
"name": "Unbound Scroll",
"material": "PAPER",
"bindingData": {
"type": "unbound",
"data": {}
},
"displays": {
"location": {
"name": "\u0026rTeleportation Scroll",
"preserveName": false,
"lore": [
"\u00267It goes to \u0026f%x% %y% %z% \u00267 in \u0026f%world%\u00267.",
"\u0026f%charges% \u00267charges.",
"\u00267Right click to teleport."
],
"glow": false,
"customModelData": 4
},
"unbound": {
"name": "\u0026rUnbound Scroll",
"preserveName": false,
"lore": [
"\u0026f%charges% \u00267charges.",
"\u00267Right click to bind to your location."
],
"glow": false,
"customModelData": 2
},
"warp": {
"name": "\u0026rWarp Scroll",
"preserveName": false,
"lore": [
"\u0026f%charges% \u00267charges.",
"\u00267Right click to warp to \u0026f%warp%\u00267."
],
"glow": false,
"customModelData": 2
}
},
"crafting": {
"recipe": {
"items": [
" E ",
"EPE",
" E "
],
"mapping": {
"P": "PAPER",
"E": "ENDER_PEARL"
}
},
"repairMaterial": "ENDER_PEARL",
"repairAmount": 2,
"craftAmount": 1
},
"cost": {
"type": "none",
"data": {}
},
"infinite": false,
"defaultCharges": 5
}
]
{
"id": "BindingScroll",
"name": "Unbound Scroll",
"material": "PAPER",
"bindingData": {
"type": "unbound",
"data": {}
},
"displays": {
"location": {
"name": "\u0026rTeleportation Scroll",
"preserveName": false,
"lore": [
"\u00267It goes to \u0026f%x% %y% %z% \u00267 in \u0026f%world%\u00267.",
"\u0026f%charges% \u00267charges.",
"\u00267Right click to teleport."
],
"glow": false,
"customModelData": 4
},
"unbound": {
"name": "\u0026rUnbound Scroll",
"preserveName": false,
"lore": [
"\u0026f%charges% \u00267charges.",
"\u00267Right click to bind to your location."
],
"glow": false,
"customModelData": 2
},
"warp": {
"name": "\u0026rWarp Scroll",
"preserveName": false,
"lore": [
"\u0026f%charges% \u00267charges.",
"\u00267Right click to warp to \u0026f%warp%\u00267."
],
"glow": false,
"customModelData": 2
}
},
"crafting": {
"recipe": {
"items": [
" E ",
"EPE",
" E "
],
"mapping": {
"P": "PAPER",
"E": "ENDER_PEARL"
}
},
"repairMaterial": "ENDER_PEARL",
"repairAmount": 2,
"craftAmount": 1
},
"cost": {
"type": "none",
"data": {}
},
"infinite": false,
"defaultCharges": 5
}
]
All messages can be customized through messages.yml:
Spoiler: messages.yml
Code (YAML):
prefix
:
"&2ShatteredScrolls &7» &f"
no-console : "&cConsole is not allowed to use this command."
not-enough-args : "&cNot enough arguments. Got &f%argc%&c, expected &f%argx%&c."
not-enough-args-nc : "&cNot enough arguments."
no-permission : "&cYou don't have permission to use that."
no-blank : "&f%key% &ccannot be blank."
invalid-integer : "&cInvalid number '&f%offender%&c.' Expected a valid integer."
invalid-float : "&cInvalid number '&f%offender%&c.' Expected a valid float."
invalid-double : "&cInvalid number '&f%offender%&c.' Expected a valid double."
invalid-world : "&cInvalid world '&f%offender%&c.'"
invalid-player : "&cInvalid player '&f%offender%&c.'"
invalid-choice : "&cInvalid option '&f%offender%&c.' Valid choices are &f%choices%."
invalid-scroll : "&cInvalid scroll type '&f%offender%&c.' Valid options are &f%options%&c."
invalid-warp : "&cInvalid warp '&f%offender%&c.' Valid options are &f'%options%&c."
invalid-binding-type : "&cInvalid binding type '&f%offender%&c.' Valid options are &f%options%&c."
invalid-cost-type : "&cInvalid cost type '&f%offender%&c.' Valid options are &f%options%&c."
infinite : "∞"
create-warp : "Created &a%name%&f. Use &a/scrolls warp goto %id%&f to get back to it."
delete-warp : "Deleted &a%id%&f."
goto-warp : "Teleported to &a%name%&f."
edit-warp : "Set &a%key%&f on &a%name%&f to &a%value%&f."
get-scroll : "Giving %count%x &a%name% (%id%)&f to you with &a%charges%&f charges."
give-scroll : "Giving %count%x &a%name% (%id%)&f to &a%name%&f with &a%charges%&f charges."
edit-scroll : "Set &a%key%&f on &a%name%&f to &a%value%."
create-scroll : "Created &a%name%&f. Use &a/scrolls scroll edit %id%&f to edit it."
delete-scroll : "Deleted &a%name%&f."
no-delete-default : "&cThe default scroll type cannot be deleted."
external-warp-delete : "&cCould not delete &f%id%&c because it is managed by another plugin."
external-warp-edit : "&cCould not edit &f%id%&c because it is managed by another plugin."
load : "&eReplacing data with data saved on disk."
save : "&eSaving data to disk."
unsafe-location-unbind : "&cThat teleport location was unsafe. The scroll has been unbound."
unsafe-location-cancel : "&cThat teleport location was unsafe. You could not be teleported."
unknown-warp-unbind : "&cThe warp that this was bound to no longer exists. The scroll has been unbound."
unknown-warp-cancel : "&cThe warp that this was bound to no longer exists. You could not be teleported."
unknown-world-unbind : "&cThe world that this was bound to no longer exists. The scroll has been unbound."
unknown-world-cancel : "&cThe world that this was bound to no longer exists. You could not be teleported."
scroll:
name : "name"
id : "id"
charges : "charges"
infinite : "infinite"
cost : "cost"
binding : "binding"
display:
name : "%display% name"
lore : "%display% lore"
glow : "%display% glow"
model : "%display% model"
command:
base : |
&2ShatteredScrolls
&7- &a/%label% scroll &8- &fCommands dealing with scrolls.
&7- &a/%label% warp &8- &fCommands dealing with warps.
&7- &a/%label% load &8- &fReplaces current plugin data with data on disk.
&7- &a/%label% save &8- &fSaves current plugin data to disk.
version : |
&2ShatteredScrolls &7v%version%%update-status%
&fAuthor:&a UberPilot
&fSupport:&9 https://discord.gg/zUbNX9t
&fDonate:&e https://patreon.com/UberPilot
warp:
base : |
&2ShatteredScrolls &7- &aWarps
&7- &a/%label% goto &8- &fTeleport to a warp.
&7- &a/%label% send &8- &f to a warp.
&7- &a/%label% create &8- &fCreate a warp.
&7- &a/%label% edit &8- &fEdit an existing warp.
&7- &a/%label% remove &8- &fRemove a warp.
&7- &a/%label% convert &8- &fConvert an external warp to an internal warp.
goto : |
&2ShatteredScrolls &7- &aGoto Warp
&7About: &fTeleports you to the warp with &aid&f.
&7Usage: &f/%label% <id>
&7Permission: &f%permission%
create : |
&2ShatteredScrolls &7- &aGoto Warp
&7About: &fTeleports you to the warp with &aid&f.
&7Usage: &f/%label% <id>
&7Permission: &f%permission%
edit : |
&2ShatteredScrolls &7- &aEdit Warp
&7About: &fEdits a warp to have &akey&f set equal to &avalue&f. Note that changing &aid&f may result in broken scrolls.
&7Options: &fid, name, location
&7Usage: &f/%label% <id> <key> <value>
&7Permission: &f%permission%
remove : |
&2ShatteredScrolls &7- &aGoto Warp
&7About: &fTeleports you to the warp with &aid&f.
&7Usage: &f/%label% <id>
&7Permission: &f%permission%
convert : |
&2ShatteredScrolls &7- &aConvert Warp
&7About: &fCreates a new warp from external warp &aid&f with new id &anew id&f.
&7Usage: &f/%label% <id> <newid>
&7Permission: &f%permission%
scroll:
base : |
&2ShatteredScrolls &7- &aScrolls
&7- &a/%label% get &8- &fGive yourself a scroll.
&7- &a/%label% give &8- &fGive someone else a scroll.
&7- &a/%label% create &8- &fCreate a new scroll.
&7- &a/%label% edit &8- &fEdit an existing scroll.
&7- &a/%label% remove &8- &fRemove an existing scroll.
get : |
&2ShatteredScrolls &7- &aGet Scroll
&7About: &fGives a scroll of type &aScroll Type&f to you.
&7Usage: &f/%label% <Scroll Type> [Charges = 5] [Count = 1] [Binding Type] [Binding Type Args...]
&7Permission: &f%permission%
give : |
&2ShatteredScrolls &7- &aGive Scroll
&7About: &fGives a scroll of type &aScroll Type&f to &aPlayer&f.
&7Usage: &f/%label% <Player> <Scroll Type> [Charges = 5] [Count = 1] [Binding Type] [Binding Type Args...]
&7Permission: &f%permission%
create : |
&2ShatteredScrolls &7- &aCreate Scroll
&7About: &fCreates a scroll type with &aid&f and default values for everything else.
&7Usage: &f/%label% <id>
&7Permission: &f%permission%
edit : |
&2ShatteredScrolls &7- &aEdit Scroll
&7About: &fEdits a scroll type to have &akey&f set equal to &avalue&f. Note that changing &aid&f may result in broken scrolls, scrolls reverting to default types, or plugin issues.
&7Options: &fid, name, material, customModelData, glow, cost, infinite, defaultCharges, bindingData, display
&7Usage: &f/%label% <id> <key> <value>
&7Permission: &f%permission%
edit-display : |
&2ShatteredScrolls &7- &aEdit Scroll Display
&7About: &fEdits a scroll display to have &akey&f set equal to &avalue&f on binding type &atype&f.
&7Options: &fname, lore, glow, model
&7Usage: &f/%label% <type> <key> <value>
&7Permission: &f%permission%
delete : |
&2ShatteredScrolls &7- &aDelete Scroll
&7About: &fDeletes the scroll type with &aid&f. Note that deleting types may cause scrolls to revert to the default type, or be removed if that does not exist.
&7Usage: &f/%label% <id>
&7Permission: &f%permission%
up-to-date : " &f(Current)"
update-available : " &a(Update %version% Available!)"
no-console : "&cConsole is not allowed to use this command."
not-enough-args : "&cNot enough arguments. Got &f%argc%&c, expected &f%argx%&c."
not-enough-args-nc : "&cNot enough arguments."
no-permission : "&cYou don't have permission to use that."
no-blank : "&f%key% &ccannot be blank."
invalid-integer : "&cInvalid number '&f%offender%&c.' Expected a valid integer."
invalid-float : "&cInvalid number '&f%offender%&c.' Expected a valid float."
invalid-double : "&cInvalid number '&f%offender%&c.' Expected a valid double."
invalid-world : "&cInvalid world '&f%offender%&c.'"
invalid-player : "&cInvalid player '&f%offender%&c.'"
invalid-choice : "&cInvalid option '&f%offender%&c.' Valid choices are &f%choices%."
invalid-scroll : "&cInvalid scroll type '&f%offender%&c.' Valid options are &f%options%&c."
invalid-warp : "&cInvalid warp '&f%offender%&c.' Valid options are &f'%options%&c."
invalid-binding-type : "&cInvalid binding type '&f%offender%&c.' Valid options are &f%options%&c."
invalid-cost-type : "&cInvalid cost type '&f%offender%&c.' Valid options are &f%options%&c."
infinite : "∞"
create-warp : "Created &a%name%&f. Use &a/scrolls warp goto %id%&f to get back to it."
delete-warp : "Deleted &a%id%&f."
goto-warp : "Teleported to &a%name%&f."
edit-warp : "Set &a%key%&f on &a%name%&f to &a%value%&f."
get-scroll : "Giving %count%x &a%name% (%id%)&f to you with &a%charges%&f charges."
give-scroll : "Giving %count%x &a%name% (%id%)&f to &a%name%&f with &a%charges%&f charges."
edit-scroll : "Set &a%key%&f on &a%name%&f to &a%value%."
create-scroll : "Created &a%name%&f. Use &a/scrolls scroll edit %id%&f to edit it."
delete-scroll : "Deleted &a%name%&f."
no-delete-default : "&cThe default scroll type cannot be deleted."
external-warp-delete : "&cCould not delete &f%id%&c because it is managed by another plugin."
external-warp-edit : "&cCould not edit &f%id%&c because it is managed by another plugin."
load : "&eReplacing data with data saved on disk."
save : "&eSaving data to disk."
unsafe-location-unbind : "&cThat teleport location was unsafe. The scroll has been unbound."
unsafe-location-cancel : "&cThat teleport location was unsafe. You could not be teleported."
unknown-warp-unbind : "&cThe warp that this was bound to no longer exists. The scroll has been unbound."
unknown-warp-cancel : "&cThe warp that this was bound to no longer exists. You could not be teleported."
unknown-world-unbind : "&cThe world that this was bound to no longer exists. The scroll has been unbound."
unknown-world-cancel : "&cThe world that this was bound to no longer exists. You could not be teleported."
scroll:
name : "name"
id : "id"
charges : "charges"
infinite : "infinite"
cost : "cost"
binding : "binding"
display:
name : "%display% name"
lore : "%display% lore"
glow : "%display% glow"
model : "%display% model"
command:
base : |
&2ShatteredScrolls
&7- &a/%label% scroll &8- &fCommands dealing with scrolls.
&7- &a/%label% warp &8- &fCommands dealing with warps.
&7- &a/%label% load &8- &fReplaces current plugin data with data on disk.
&7- &a/%label% save &8- &fSaves current plugin data to disk.
version : |
&2ShatteredScrolls &7v%version%%update-status%
&fAuthor:&a UberPilot
&fSupport:&9 https://discord.gg/zUbNX9t
&fDonate:&e https://patreon.com/UberPilot
warp:
base : |
&2ShatteredScrolls &7- &aWarps
&7- &a/%label% goto &8- &fTeleport to a warp.
&7- &a/%label% send &8- &f to a warp.
&7- &a/%label% create &8- &fCreate a warp.
&7- &a/%label% edit &8- &fEdit an existing warp.
&7- &a/%label% remove &8- &fRemove a warp.
&7- &a/%label% convert &8- &fConvert an external warp to an internal warp.
goto : |
&2ShatteredScrolls &7- &aGoto Warp
&7About: &fTeleports you to the warp with &aid&f.
&7Usage: &f/%label% <id>
&7Permission: &f%permission%
create : |
&2ShatteredScrolls &7- &aGoto Warp
&7About: &fTeleports you to the warp with &aid&f.
&7Usage: &f/%label% <id>
&7Permission: &f%permission%
edit : |
&2ShatteredScrolls &7- &aEdit Warp
&7About: &fEdits a warp to have &akey&f set equal to &avalue&f. Note that changing &aid&f may result in broken scrolls.
&7Options: &fid, name, location
&7Usage: &f/%label% <id> <key> <value>
&7Permission: &f%permission%
remove : |
&2ShatteredScrolls &7- &aGoto Warp
&7About: &fTeleports you to the warp with &aid&f.
&7Usage: &f/%label% <id>
&7Permission: &f%permission%
convert : |
&2ShatteredScrolls &7- &aConvert Warp
&7About: &fCreates a new warp from external warp &aid&f with new id &anew id&f.
&7Usage: &f/%label% <id> <newid>
&7Permission: &f%permission%
scroll:
base : |
&2ShatteredScrolls &7- &aScrolls
&7- &a/%label% get &8- &fGive yourself a scroll.
&7- &a/%label% give &8- &fGive someone else a scroll.
&7- &a/%label% create &8- &fCreate a new scroll.
&7- &a/%label% edit &8- &fEdit an existing scroll.
&7- &a/%label% remove &8- &fRemove an existing scroll.
get : |
&2ShatteredScrolls &7- &aGet Scroll
&7About: &fGives a scroll of type &aScroll Type&f to you.
&7Usage: &f/%label% <Scroll Type> [Charges = 5] [Count = 1] [Binding Type] [Binding Type Args...]
&7Permission: &f%permission%
give : |
&2ShatteredScrolls &7- &aGive Scroll
&7About: &fGives a scroll of type &aScroll Type&f to &aPlayer&f.
&7Usage: &f/%label% <Player> <Scroll Type> [Charges = 5] [Count = 1] [Binding Type] [Binding Type Args...]
&7Permission: &f%permission%
create : |
&2ShatteredScrolls &7- &aCreate Scroll
&7About: &fCreates a scroll type with &aid&f and default values for everything else.
&7Usage: &f/%label% <id>
&7Permission: &f%permission%
edit : |
&2ShatteredScrolls &7- &aEdit Scroll
&7About: &fEdits a scroll type to have &akey&f set equal to &avalue&f. Note that changing &aid&f may result in broken scrolls, scrolls reverting to default types, or plugin issues.
&7Options: &fid, name, material, customModelData, glow, cost, infinite, defaultCharges, bindingData, display
&7Usage: &f/%label% <id> <key> <value>
&7Permission: &f%permission%
edit-display : |
&2ShatteredScrolls &7- &aEdit Scroll Display
&7About: &fEdits a scroll display to have &akey&f set equal to &avalue&f on binding type &atype&f.
&7Options: &fname, lore, glow, model
&7Usage: &f/%label% <type> <key> <value>
&7Permission: &f%permission%
delete : |
&2ShatteredScrolls &7- &aDelete Scroll
&7About: &fDeletes the scroll type with &aid&f. Note that deleting types may cause scrolls to revert to the default type, or be removed if that does not exist.
&7Usage: &f/%label% <id>
&7Permission: &f%permission%
up-to-date : " &f(Current)"
update-available : " &a(Update %version% Available!)"
And here's the config:
Spoiler: config.json
Code (json (Unknown Language)):
{
"cancelMode": "UNBIND",
"defaultType": "BindingScroll",
"safetyCheck": false,
"cooldown": 1000,
"allowedWorlds": [
"world",
"world_nether",
"world_the_end"
]
}
"cancelMode": "UNBIND",
"defaultType": "BindingScroll",
"safetyCheck": false,
"cooldown": 1000,
"allowedWorlds": [
"world",
"world_nether",
"world_the_end"
]
}
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft version listed: 1.20
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
ShatteredScrolls is a free Minecraft Java mod. Compatible with Minecraft 1.20. Downloaded 886 times (via Spigot). Download it and open it directly in the game.