Inventory Saving

  • 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 community!

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

  • LOOKING FOR A VERSION OF SKRIPT?

    You can always check out skUnity Downloads for downloads and any other information about Skript!

chief pickle

Member
Sep 3, 2025
18
0
1
Hi, I'm making this Backpack skript and it all works, I just have one problem, when the server restarts, the inventory clears whatever the player had previously put in it, could someone please help?


options:

command_backpack_no_permission_message: &f| &cInsufficient Permissions!
backpack_upgrade_cost: 5000
backpack_upgrade_button_display_name: &b&lUpgrade Backpack
backpack_upgrade_button_display_lore: &f&l| &7Cost: &2$&a

backpack_upgrade_success_message: &2Successfully Upgraded your &bBackpack &2to &e%{bpr::%uuid of player%}% &2rows!
backpack_upgrade_failure_message: &cInsufficient Funds!

command /backpack:
aliases: /bp, /shadowvale:backpack, /shadowvale:bp
executable by: players
permission: shadowvale.backpack
permission message: "{@command_backpack_no_permission_message}"
usage: &e/backpack
trigger:
set {bpr::%uuid of player%} to ({backpackRows::%uuid of player%} - 1)
set {_p} to player
set {_uuid} to uuid of {_p}
set {_filler} to light blue stained glass pane named "" with lore ""
set {_bpi} to {backpackitem} named "{@backpack_upgrade_button_display_name}" with lore "{@backpack_upgrade_button_display_lore}{@backpack_upgrade_cost}"

if {backpackRows::%{_uuid}%} is not set:
set {backpackRows::%{_uuid}%} to 2

if {backpack::%{_uuid}%} is not set:
set {backpack::%{_uuid}%} to chest inventory with {backpackRows::%{_uuid}%} rows named "%{_p}%'s Backpack"

set {_bp} to {backpack::%{_uuid}%}

if {backpackRows::%{_uuid}%} is 2:
set slot 9, 10, 11, 12, 14, 15, 16, 17 of {_bp} to {_filler}
set slot 13 of {_bp} to {_bpi}

else if {backpackRows::%{_uuid}%} is 3:
set slot 18, 19, 20, 21, 23, 24, 25, 26 of {_bp} to {_filler}
set slot 22 of {_bp} to {_bpi}

else if {backpackRows::%{_uuid}%} is 4:
set slot 27, 28, 29, 30, 32, 33, 34, 35 of {_bp} to {_filler}
set slot 31 of {_bp} to {_bpi}

else if {backpackRows::%{_uuid}%} is 5:
set slot 36, 37, 38, 39, 41, 42, 43, 44 of {_bp} to {_filler}
set slot 40 of {_bp} to {_bpi}

else if {backpackRows::%{_uuid}%} is 6:
set slot 45, 46, 47, 48, 50, 51, 52, 53 of {_bp} to {_filler}
set slot 49 of {_bp} to {_bpi}

open {_bp} to {_p}
play sound "item.bundle.drop_contents" to player
 
variables that belong to players, as stated in warnings when skript is reloaded, don't save upon server restart.
for example: {variable::%player's uuid%}.

to save an inventory to a variable, you should include the player's username rather than their uuid.
though i do not know the exact error which you are experiencing, here is a basic way (which i'm sure works) to save it.


Code:
on inventory close:
    if name of event-inventory is "%{_p}%'s Backpack":
        set {backpack.%player%::*} to items in event-inventory
 
Thank you, and there were no actual errors I just wanted to know how to save the inventory upon server restarting, I'll try this out, Thanks!
 
options:

command_backpack_no_permission_message: &f| &cInsufficient Permissions!
backpack_upgrade_cost: 5000
backpack_upgrade_button_display_name: &b&lUpgrade Backpack
backpack_upgrade_button_display_lore: &f&l| &7Cost: &2$&a

backpack_upgrade_success_message: &2Successfully Upgraded your &bBackpack &2to &e%{bpr::%uuid of player%}% &2rows!
backpack_upgrade_failure_message: &cInsufficient Funds!

command /backpack:
aliases: /bp, /shadowvale:backpack, /shadowvale:bp
executable by: players
permission: shadowvale.backpack
permission message: "{@command_backpack_no_permission_message}"
usage: &e/backpack
trigger:
set {bpr::%uuid of player%} to ({backpackRows::%uuid of player%} - 1)
set {_p} to player
set {_uuid} to uuid of {_p}
set {_filler} to light blue stained glass pane named "" with lore ""
set {_bpi} to {backpackitem} named "{@backpack_upgrade_button_display_name}" with lore "{@backpack_upgrade_button_display_lore}{@backpack_upgrade_cost}"

if {backpackRows::%{_p}%} is not set:
set {backpackRows::%{_p}%} to 2

if {backpack.%player%} is not set:
set {backpack.%player%} to chest inventory with {backpackRows::%{_p}%} rows named "%{_p}%'s Backpack"

set {_bp} to {backpack.%player%}

if {backpackRows::%{_p}%} is 2:
set slot 9, 10, 11, 12, 14, 15, 16, 17 of {_bp} to {_filler}
set slot 13 of {_bp} to {_bpi}

else if {backpackRows::%{_p}%} is 3:
set slot 18, 19, 20, 21, 23, 24, 25, 26 of {_bp} to {_filler}
set slot 22 of {_bp} to {_bpi}

else if {backpackRows::%{_p}%} is 4:
set slot 27, 28, 29, 30, 32, 33, 34, 35 of {_bp} to {_filler}
set slot 31 of {_bp} to {_bpi}

else if {backpackRows::%{_p}%} is 5:
set slot 36, 37, 38, 39, 41, 42, 43, 44 of {_bp} to {_filler}
set slot 40 of {_bp} to {_bpi}

else if {backpackRows::%{_p}%} is 6:
set slot 45, 46, 47, 48, 50, 51, 52, 53 of {_bp} to {_filler}
set slot 49 of {_bp} to {_bpi}

open {_bp} to {_p}
play sound "item.bundle.drop_contents" to player



command /setBackPackItem:
permission: admin.bpi
permission message: "&f| &cInsufficient Permissions!"
trigger:
set {_nbt} to nbt compound of player's tool
set {backpackitem} to player's tool with nbt {_nbt}


on inventory click:
set {_p} to player
set {_uuid} to uuid of {_p}
set {_i} to event-inventory
set {_filler} to light blue stained glass pane named "" with lore ""
set {_bpi} to {backpackitem} named "{@backpack_upgrade_button_display_name}" with lore "{@backpack_upgrade_button_display_lore}{@backpack_upgrade_cost}"
set {_bal} to {_p}'s balance

if {_i} is {backpack.%player%}:
if event-item is {_filler}:
cancel event
stop
if event-item is {_bpi}:
cancel event
if {_bal} >= {@backpack_upgrade_cost}:
remove {@backpack_upgrade_cost} from player's balance
play sound "entity.item.drop" to {_p}

set {_oldInv} to {backpack.%player%}

add 1 to {backpackRows::%{_p}%}
set {_rows} to {backpackRows::%{_p}%}

set {_bp} to chest inventory with {_rows} rows named "%name of {_p}%'s Backpack"

set {_slot} to 0
loop items of {_oldInv}:
if loop-value is not air:
set slot {_slot} of {_bp} to loop-value
add 1 to {_slot}

set {_slot} to 0
loop items of {_bp}:
if loop-value is {_filler}:
clear slot {_slot} of {_bp}
else if loop-value is {_bpi}:
clear slot {_slot} of {_bp}
add 1 to {_slot}

if {_rows} is 2:
set slot 9, 10, 11, 12, 14, 15, 16, 17 of {_bp} to {_filler}
set slot 13 of {_bp} to {_bpi}
else if {_rows} is 3:
set slot 18, 19, 20, 21, 23, 24, 25, 26 of {_bp} to {_filler}
set slot 22 of {_bp} to {_bpi}
else if {_rows} is 4:
set slot 27, 28, 29, 30, 32, 33, 34, 35 of {_bp} to {_filler}
set slot 31 of {_bp} to {_bpi}
else if {_rows} is 5:
set slot 36, 37, 38, 39, 41, 42, 43, 44 of {_bp} to {_filler}
set slot 40 of {_bp} to {_bpi}
else if {_rows} is 6:
set slot 45, 46, 47, 48, 50, 51, 52, 53 of {_bp} to {_filler}
set slot 49 of {_bp} to {_bpi}

set {backpack.%player%} to {_bp}

add 1 to {bpr::%player%}
send "{@backpack_upgrade_success_message}" to {_p}
close inventory of {_p}
wait 1 tick
execute player command "backpack"

else:
send "{@backpack_upgrade_failure_message}" to {_p}
play sound "entity.villager.no" to {_p}



command /resetbackpack <player>:
aliases: /shadowvale:resetbackpack, /shadowvale:resetbp, /resetbp
permission: admin.backpackreset
permission message: "&cInsufficient Permissions!"
trigger:
delete {backpack.%player%}
set {backpackRows::%arg-1%} to 2
set {bpr::%player%} to 1


on inventory close:
if name of event-inventory is "%{_p}%'s Backpack":
set {backpack.%player%::*} to items in event-inventory