[{"data":1,"prerenderedAt":1167},["ShallowReactive",2],{"docs-navigation:\u002Fdocs\u002Frecipes\u002Finventories\u002Fpaged-inventory":3,"docs-page-estimated-read-time:\u002Fdocs\u002Frecipes\u002Finventories\u002Fpaged-inventory":399,"docs-page:\u002Fdocs\u002Frecipes\u002Finventories\u002Fpaged-inventory":400},[4,9,41,69,282],{"title":5,"path":6,"stem":7,"icon":8},"Welcome to the Vital docs","\u002Fdocs\u002Fabout","docs\u002F1.about","i-lucide-info",{"title":10,"path":11,"stem":12,"children":13,"icon":40},"Getting started","\u002Fdocs\u002Fgetting-started","docs\u002F2.getting-started\u002F1.index",[14,16,35],{"title":15,"path":11,"stem":12,"icon":8},"What is Vital?",{"title":17,"icon":18,"path":19,"stem":20,"children":21,"page":34},"Installation","i-lucide-download","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F2.getting-started\u002F1.installation",[22,26,30],{"title":23,"path":24,"stem":25},"Using a starter project (~5 minutes)","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fstarter","docs\u002F2.getting-started\u002F1.installation\u002F2.starter",{"title":27,"path":28,"stem":29},"Manual configuration (~7-8 minutes)","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fmanual","docs\u002F2.getting-started\u002F1.installation\u002F3.manual",{"title":31,"path":32,"stem":33},"Using the initializer (~2-3 minutes)","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Finitializer","docs\u002F2.getting-started\u002F1.installation\u002F4.initializer",false,{"title":36,"path":37,"stem":38,"icon":39},"Main class","\u002Fdocs\u002Fgetting-started\u002Fmain-plugin-class","docs\u002F2.getting-started\u002F2.main-plugin-class","i-lucide-play","i-lucide-circle-play",{"title":42,"path":43,"stem":44,"children":45,"icon":68},"Conventions","\u002Fdocs\u002Fconventions","docs\u002F3.conventions\u002F1.index",[46,48,52,56,60,64],{"title":47,"path":43,"stem":44,"icon":8},"About",{"title":49,"path":50,"stem":51},"Spring","\u002Fdocs\u002Fconventions\u002Fspring","docs\u002F3.conventions\u002F2.spring",{"title":53,"path":54,"stem":55},"Platforms","\u002Fdocs\u002Fconventions\u002Fplatform-implementations","docs\u002F3.conventions\u002F3.platform-implementations",{"title":57,"path":58,"stem":59},"Metadata","\u002Fdocs\u002Fconventions\u002Fmetadata","docs\u002F3.conventions\u002F4.metadata",{"title":61,"path":62,"stem":63},"Lifecycles","\u002Fdocs\u002Fconventions\u002Flifecycles","docs\u002F3.conventions\u002F5.lifecycles",{"title":65,"path":66,"stem":67},"(Optional) Advanced class loading","\u002Fdocs\u002Fconventions\u002Fadvanced-classloading","docs\u002F3.conventions\u002F6.advanced-classloading","i-lucide-cog",{"title":70,"path":71,"stem":72,"children":73,"icon":281},"Modules","\u002Fdocs\u002Fmodules","docs\u002F4.modules\u002F1.index",[74,76,100,106,112,126,136,150,164,178,188,224,234,248,257,275],{"title":75,"path":71,"stem":72,"icon":8},"What are modules?",{"title":77,"path":78,"stem":79,"children":80,"icon":99},"vital-core","\u002Fdocs\u002Fmodules\u002Fvital-core","docs\u002F4.modules\u002F2.vital-core\u002F1.index",[81,83,87,91,95],{"title":82,"path":78,"stem":79,"icon":8},"About this module",{"title":84,"path":85,"stem":86},"Configuration","\u002Fdocs\u002Fmodules\u002Fvital-core\u002Fconfiguration","docs\u002F4.modules\u002F2.vital-core\u002F2.configuration",{"title":88,"path":89,"stem":90},"Listeners","\u002Fdocs\u002Fmodules\u002Fvital-core\u002Flisteners","docs\u002F4.modules\u002F2.vital-core\u002F3.listeners",{"title":92,"path":93,"stem":94},"Conditional beans","\u002Fdocs\u002Fmodules\u002Fvital-core\u002Fconditional-beans","docs\u002F4.modules\u002F2.vital-core\u002F4.conditional-beans",{"title":96,"path":97,"stem":98},"Repositories","\u002Fdocs\u002Fmodules\u002Fvital-core\u002Frepositories","docs\u002F4.modules\u002F2.vital-core\u002F5.repositories","",{"title":101,"path":102,"stem":103,"children":104,"icon":99},"vital-cloudnet4-bridge","\u002Fdocs\u002Fmodules\u002Fvital-cloudnet4-bridge","docs\u002F4.modules\u002Fvital-cloudnet4-bridge\u002F1.index",[105],{"title":82,"path":102,"stem":103,"icon":8},{"title":107,"path":108,"stem":109,"children":110,"icon":99},"vital-cloudnet4-driver","\u002Fdocs\u002Fmodules\u002Fvital-cloudnet4-driver","docs\u002F4.modules\u002Fvital-cloudnet4-driver\u002F1.index",[111],{"title":82,"path":108,"stem":109,"icon":8},{"title":113,"path":114,"stem":115,"children":116,"icon":99},"vital-commands","\u002Fdocs\u002Fmodules\u002Fvital-commands","docs\u002F4.modules\u002Fvital-commands\u002F1.index",[117,118,122],{"title":82,"path":114,"stem":115,"icon":8},{"title":119,"path":120,"stem":121},"Commands","\u002Fdocs\u002Fmodules\u002Fvital-commands\u002Fcommands","docs\u002F4.modules\u002Fvital-commands\u002Fcommands",{"title":123,"path":124,"stem":125},"Exception handling","\u002Fdocs\u002Fmodules\u002Fvital-commands\u002Fexception-handling","docs\u002F4.modules\u002Fvital-commands\u002Fexception-handling",{"title":127,"path":128,"stem":129,"children":130,"icon":99},"vital-configs","\u002Fdocs\u002Fmodules\u002Fvital-configs","docs\u002F4.modules\u002Fvital-configs\u002F1.index",[131,132],{"title":82,"path":128,"stem":129,"icon":8},{"title":133,"path":134,"stem":135},"Configs","\u002Fdocs\u002Fmodules\u002Fvital-configs\u002Fconfigs","docs\u002F4.modules\u002Fvital-configs\u002F2.configs",{"title":137,"path":138,"stem":139,"children":140,"icon":99},"vital-holograms","\u002Fdocs\u002Fmodules\u002Fvital-holograms","docs\u002F4.modules\u002Fvital-holograms\u002F1.index",[141,142,146],{"title":82,"path":138,"stem":139,"icon":8},{"title":143,"path":144,"stem":145},"Global holograms","\u002Fdocs\u002Fmodules\u002Fvital-holograms\u002Fglobal-holograms","docs\u002F4.modules\u002Fvital-holograms\u002F2.global-holograms",{"title":147,"path":148,"stem":149},"Player holograms","\u002Fdocs\u002Fmodules\u002Fvital-holograms\u002Fplayer-holograms","docs\u002F4.modules\u002Fvital-holograms\u002F3.player-holograms",{"title":151,"path":152,"stem":153,"children":154,"icon":99},"vital-inventories","\u002Fdocs\u002Fmodules\u002Fvital-inventories","docs\u002F4.modules\u002Fvital-inventories\u002F1.index",[155,156,160],{"title":82,"path":152,"stem":153,"icon":8},{"title":157,"path":158,"stem":159},"Normal inventories","\u002Fdocs\u002Fmodules\u002Fvital-inventories\u002Fnormal-inventories","docs\u002F4.modules\u002Fvital-inventories\u002F2.normal-inventories",{"title":161,"path":162,"stem":163},"Paged inventories","\u002Fdocs\u002Fmodules\u002Fvital-inventories\u002Fpaged-inventories","docs\u002F4.modules\u002Fvital-inventories\u002F3.paged-inventories",{"title":165,"path":166,"stem":167,"children":168,"icon":99},"vital-items","\u002Fdocs\u002Fmodules\u002Fvital-items","docs\u002F4.modules\u002Fvital-items\u002F1.index",[169,170,174],{"title":82,"path":166,"stem":167,"icon":8},{"title":171,"path":172,"stem":173},"Items","\u002Fdocs\u002Fmodules\u002Fvital-items\u002Fitems","docs\u002F4.modules\u002Fvital-items\u002F2.items",{"title":175,"path":176,"stem":177},"Item builders","\u002Fdocs\u002Fmodules\u002Fvital-items\u002Fitem-builders","docs\u002F4.modules\u002Fvital-items\u002F3.item-builders",{"title":179,"path":180,"stem":181,"children":182,"icon":99},"vital-localization","\u002Fdocs\u002Fmodules\u002Fvital-localization","docs\u002F4.modules\u002Fvital-localization\u002F1.index",[183,184],{"title":82,"path":180,"stem":181,"icon":8},{"title":185,"path":186,"stem":187},"Localization","\u002Fdocs\u002Fmodules\u002Fvital-localization\u002Flocalization","docs\u002F4.modules\u002Fvital-localization\u002F2.localization",{"title":189,"path":190,"stem":191,"children":192,"icon":99},"vital-minigames","\u002Fdocs\u002Fmodules\u002Fvital-minigames","docs\u002F4.modules\u002Fvital-minigames\u002F1.index",[193,194,208],{"title":82,"path":190,"stem":191,"icon":8},{"title":195,"path":196,"stem":197,"children":198,"icon":99},"Global games","\u002Fdocs\u002Fmodules\u002Fvital-minigames\u002Fglobal-games","docs\u002F4.modules\u002Fvital-minigames\u002F2.global-games\u002F1.index",[199,200,204],{"title":47,"path":196,"stem":197,"icon":8},{"title":201,"path":202,"stem":203},"States","\u002Fdocs\u002Fmodules\u002Fvital-minigames\u002Fglobal-games\u002Fstates","docs\u002F4.modules\u002Fvital-minigames\u002F2.global-games\u002F2.states",{"title":205,"path":206,"stem":207},"Countdown states","\u002Fdocs\u002Fmodules\u002Fvital-minigames\u002Fglobal-games\u002Fcountdown-states","docs\u002F4.modules\u002Fvital-minigames\u002F2.global-games\u002F3.countdown-states",{"title":209,"path":210,"stem":211,"children":212,"icon":99},"Instanced games","\u002Fdocs\u002Fmodules\u002Fvital-minigames\u002Finstanced-games","docs\u002F4.modules\u002Fvital-minigames\u002F3.instanced-games\u002F1.index",[213,214,218,221],{"title":47,"path":210,"stem":211,"icon":8},{"title":215,"path":216,"stem":217},"Instances","\u002Fdocs\u002Fmodules\u002Fvital-minigames\u002Finstanced-games\u002Finstances","docs\u002F4.modules\u002Fvital-minigames\u002F3.instanced-games\u002F2.instances",{"title":201,"path":219,"stem":220},"\u002Fdocs\u002Fmodules\u002Fvital-minigames\u002Finstanced-games\u002Fstates","docs\u002F4.modules\u002Fvital-minigames\u002F3.instanced-games\u002F3.states",{"title":205,"path":222,"stem":223},"\u002Fdocs\u002Fmodules\u002Fvital-minigames\u002Finstanced-games\u002Fcountdown-states","docs\u002F4.modules\u002Fvital-minigames\u002F3.instanced-games\u002F4.countdown-states",{"title":225,"path":226,"stem":227,"children":228,"icon":99},"vital-players","\u002Fdocs\u002Fmodules\u002Fvital-players","docs\u002F4.modules\u002Fvital-players\u002F1.index",[229,230],{"title":82,"path":226,"stem":227,"icon":8},{"title":231,"path":232,"stem":233},"Players","\u002Fdocs\u002Fmodules\u002Fvital-players\u002Fplayers","docs\u002F4.modules\u002Fvital-players\u002F2.players",{"title":235,"path":236,"stem":237,"children":238,"icon":99},"vital-scoreboards","\u002Fdocs\u002Fmodules\u002Fvital-scoreboards","docs\u002F4.modules\u002Fvital-scoreboards\u002F1.index",[239,240,244],{"title":82,"path":236,"stem":237,"icon":8},{"title":241,"path":242,"stem":243},"Global scoreboards","\u002Fdocs\u002Fmodules\u002Fvital-scoreboards\u002Fglobal-scoreboards","docs\u002F4.modules\u002Fvital-scoreboards\u002Fglobal-scoreboards",{"title":245,"path":246,"stem":247},"Player scoreboards","\u002Fdocs\u002Fmodules\u002Fvital-scoreboards\u002Fplayer-scoreboards","docs\u002F4.modules\u002Fvital-scoreboards\u002Fplayer-scoreboards",{"title":249,"path":250,"stem":251,"children":252,"icon":99},"vital-statistics","\u002Fdocs\u002Fmodules\u002Fvital-statistics","docs\u002F4.modules\u002Fvital-statistics\u002F1.index",[253,254],{"title":82,"path":250,"stem":251,"icon":8},{"title":84,"path":255,"stem":256},"\u002Fdocs\u002Fmodules\u002Fvital-statistics\u002Fconfiguration","docs\u002F4.modules\u002Fvital-statistics\u002F2.configuration",{"title":258,"path":259,"stem":260,"children":261,"icon":99},"vital-tasks","\u002Fdocs\u002Fmodules\u002Fvital-tasks","docs\u002F4.modules\u002Fvital-tasks\u002F1.index",[262,263,267,271],{"title":82,"path":259,"stem":260,"icon":8},{"title":264,"path":265,"stem":266},"Repeatable tasks","\u002Fdocs\u002Fmodules\u002Fvital-tasks\u002Frepeatable-tasks","docs\u002F4.modules\u002Fvital-tasks\u002F2.repeatable-tasks",{"title":268,"path":269,"stem":270},"Countdown tasks","\u002Fdocs\u002Fmodules\u002Fvital-tasks\u002Fcountdown-tasks","docs\u002F4.modules\u002Fvital-tasks\u002F3.countdown-tasks",{"title":272,"path":273,"stem":274},"Scheduled tasks","\u002Fdocs\u002Fmodules\u002Fvital-tasks\u002Fscheduled-tasks","docs\u002F4.modules\u002Fvital-tasks\u002F4.scheduled-tasks",{"title":276,"path":277,"stem":278,"children":279,"icon":99},"vital-utils (Also for non Vital projects)","\u002Fdocs\u002Fmodules\u002Fvital-utils","docs\u002F4.modules\u002Fvital-utils\u002F1.index",[280],{"title":82,"path":277,"stem":278,"icon":8},"i-lucide-package",{"title":283,"path":284,"stem":285,"children":286,"icon":398},"Recipes","\u002Fdocs\u002Frecipes","docs\u002F5.recipes\u002F1.index",[287,289,301,305,317,330,341,344,368,371,384],{"title":288,"path":284,"stem":285,"icon":8},"What are recipes?",{"title":119,"path":290,"stem":291,"children":292,"page":34},"\u002Fdocs\u002Frecipes\u002Fcommands","docs\u002F5.recipes\u002Fcommands",[293,297],{"title":294,"path":295,"stem":296},"Command with arg exception handler","\u002Fdocs\u002Frecipes\u002Fcommands\u002Fcommands","docs\u002F5.recipes\u002Fcommands\u002Fcommands",{"title":298,"path":299,"stem":300},"Global command exception handler","\u002Fdocs\u002Frecipes\u002Fcommands\u002Fglobal-exception-handler","docs\u002F5.recipes\u002Fcommands\u002Fglobal-exception-handler",{"title":302,"path":303,"stem":304},"Config","\u002Fdocs\u002Frecipes\u002Fconfig","docs\u002F5.recipes\u002Fconfig",{"title":306,"path":307,"stem":308,"children":309,"page":34},"Holograms","\u002Fdocs\u002Frecipes\u002Fholograms","docs\u002F5.recipes\u002Fholograms",[310,314],{"title":311,"path":312,"stem":313},"Global hologram","\u002Fdocs\u002Frecipes\u002Fholograms\u002Fglobal-holograms","docs\u002F5.recipes\u002Fholograms\u002Fglobal-holograms",{"title":147,"path":315,"stem":316},"\u002Fdocs\u002Frecipes\u002Fholograms\u002Fplayer-holograms","docs\u002F5.recipes\u002Fholograms\u002Fplayer-holograms",{"title":318,"path":319,"stem":320,"children":321,"page":34},"Inventories","\u002Fdocs\u002Frecipes\u002Finventories","docs\u002F5.recipes\u002Finventories",[322,326],{"title":323,"path":324,"stem":325},"Normal inventory","\u002Fdocs\u002Frecipes\u002Finventories\u002Fnormal-inventory","docs\u002F5.recipes\u002Finventories\u002Fnormal-inventory",{"title":327,"path":328,"stem":329},"Paged inventory","\u002Fdocs\u002Frecipes\u002Finventories\u002Fpaged-inventory","docs\u002F5.recipes\u002Finventories\u002Fpaged-inventory",{"title":171,"path":331,"stem":332,"children":333,"page":34},"\u002Fdocs\u002Frecipes\u002Fitems","docs\u002F5.recipes\u002Fitems",[334,338],{"title":335,"path":336,"stem":337},"Interactable items","\u002Fdocs\u002Frecipes\u002Fitems\u002Finteractable-items","docs\u002F5.recipes\u002Fitems\u002Finteractable-items",{"title":175,"path":339,"stem":340},"\u002Fdocs\u002Frecipes\u002Fitems\u002Fitem-builders","docs\u002F5.recipes\u002Fitems\u002Fitem-builders",{"title":185,"path":342,"stem":343},"\u002Fdocs\u002Frecipes\u002Flocalization","docs\u002F5.recipes\u002Flocalization",{"title":345,"path":346,"stem":347,"children":348,"page":34},"Minigames","\u002Fdocs\u002Frecipes\u002Fminigames","docs\u002F5.recipes\u002Fminigames",[349,353,357,361,365],{"title":350,"path":351,"stem":352},"Global minigame countdown states","\u002Fdocs\u002Frecipes\u002Fminigames\u002Fglobal-countdown-states","docs\u002F5.recipes\u002Fminigames\u002Fglobal-countdown-states",{"title":354,"path":355,"stem":356},"Global minigame states","\u002Fdocs\u002Frecipes\u002Fminigames\u002Fglobal-states","docs\u002F5.recipes\u002Fminigames\u002Fglobal-states",{"title":358,"path":359,"stem":360},"Instance countdown states","\u002Fdocs\u002Frecipes\u002Fminigames\u002Finstance-countdown-states","docs\u002F5.recipes\u002Fminigames\u002Finstance-countdown-states",{"title":362,"path":363,"stem":364},"Instance states","\u002Fdocs\u002Frecipes\u002Fminigames\u002Finstance-states","docs\u002F5.recipes\u002Fminigames\u002Finstance-states",{"title":215,"path":366,"stem":367},"\u002Fdocs\u002Frecipes\u002Fminigames\u002Finstances","docs\u002F5.recipes\u002Fminigames\u002Finstances",{"title":231,"path":369,"stem":370},"\u002Fdocs\u002Frecipes\u002Fplayers","docs\u002F5.recipes\u002Fplayers",{"title":372,"path":373,"stem":374,"children":375,"page":34},"Scoreboards","\u002Fdocs\u002Frecipes\u002Fscoreboards","docs\u002F5.recipes\u002Fscoreboards",[376,380],{"title":377,"path":378,"stem":379},"Global scoreboard","\u002Fdocs\u002Frecipes\u002Fscoreboards\u002Fglobal-scoreboard","docs\u002F5.recipes\u002Fscoreboards\u002Fglobal-scoreboard",{"title":381,"path":382,"stem":383},"Player scoreboard","\u002Fdocs\u002Frecipes\u002Fscoreboards\u002Fplayer-scoreboard","docs\u002F5.recipes\u002Fscoreboards\u002Fplayer-scoreboard",{"title":385,"path":386,"stem":387,"children":388,"page":34},"Tasks","\u002Fdocs\u002Frecipes\u002Ftasks","docs\u002F5.recipes\u002Ftasks",[389,392,395],{"title":268,"path":390,"stem":391},"\u002Fdocs\u002Frecipes\u002Ftasks\u002Fcountdown-tasks","docs\u002F5.recipes\u002Ftasks\u002Fcountdown-tasks",{"title":264,"path":393,"stem":394},"\u002Fdocs\u002Frecipes\u002Ftasks\u002Frepeatable-tasks","docs\u002F5.recipes\u002Ftasks\u002Frepeatable-tasks",{"title":272,"path":396,"stem":397},"\u002Fdocs\u002Frecipes\u002Ftasks\u002Fscheduled-tasks","docs\u002F5.recipes\u002Ftasks\u002Fscheduled-tasks","i-lucide-cooking-pot",2,{"id":401,"title":402,"body":403,"description":1160,"extension":1161,"meta":1162,"navigation":1163,"path":328,"rawbody":1164,"seo":1165,"stem":329,"__hash__":1166},"docs\u002Fdocs\u002F5.recipes\u002Finventories\u002Fpaged-inventory.md","Recipe for a paged inventory",{"type":404,"value":405,"toc":1158},"minimark",[406,410,414,1154],[407,408,327],"h1",{"id":409},"paged-inventory",[411,412,413],"p",{},"Below is an example of a paged inventory (9x3 slots).",[415,416,421],"pre",{"className":417,"code":418,"filename":419,"language":420,"meta":99,"style":99},"language-java shiki shiki-themes material-theme-lighter github-light github-dark","@VitalPagedInventory.Info(fromSlot = 10, toSlot = 16)\n@VitalInventory.Info(type = VitalInventory.Type.GENERIC_9X3, name = \"My paged inventory\")\npublic class MyPagedInventory extends VitalPagedInventory {\n    @Override\n    public void onUpdate() {\n        \u002F\u002F This item doesn’t do anything.\n        setItem(0, new ItemStack(Material.STICK));\n    }\n\n    @Override\n    public void onUpdate(Player player) {\n        \u002F\u002F This item can be clicked.\n        setItem(1, new ItemStack(Material.COBBLESTONE), (e) -> {\n            \u002F\u002F Do something when this item is clicked.\n            player.sendMessage(\"You have clicked the item in slot 1\");\n        });\n\n        \u002F\u002F Use this lifecycle to set dynamic items that may change when this inventory is updated.\n    }\n\n    @Override\n    public void onPageChange(int page, Player player) {\n        final var someData = List.of(\"Element 1\", \"Element 2\", \"Element 3\");\n        final var pageContent = sliceForPage(player, someData);\n\n        final var fromSlot = getInfo(VitalPagedInventory.Info.class);\n        for (int i = 0; i \u003C pageContent.size(); I++) {\n            final var content = pageContent.get(i);\n            final var slot = fromSlot + i;\n            \n            final var item = new ItemStack(Material.PAPER);\n            item.setDisplayName(content);\n            setItem(slot, item, (e) -> {\n                player.sendMessage(\"You have clicked the paged item '\" + content + \"'!\");\n            });\n        }\n\n        \u002F\u002F Use this lifecycle to set dynamic items for your paged content.\n        \u002F\u002F Normally, you would only set items in the configured \"fromSlot\" and \"toSlot\" here.\n    }\n}\n","MyPagedInventory.java","java",[422,423,424,466,515,537,546,564,571,604,610,617,624,648,654,695,701,724,730,735,741,746,751,758,787,839,866,871,903,950,977,1000,1006,1033,1051,1079,1114,1120,1126,1131,1137,1143,1148],"code",{"__ignoreMap":99},[425,426,429,433,437,440,444,448,452,455,458,460,463],"span",{"class":427,"line":428},"line",1,[425,430,432],{"class":431},"sP7_E","@",[425,434,436],{"class":435},"sbsja","VitalPagedInventory.Info",[425,438,439],{"class":431},"(",[425,441,443],{"class":442},"sZMiF","fromSlot",[425,445,447],{"class":446},"smGrS"," =",[425,449,451],{"class":450},"srdBf"," 10",[425,453,454],{"class":431},",",[425,456,457],{"class":442}," toSlot",[425,459,447],{"class":446},[425,461,462],{"class":450}," 16",[425,464,465],{"class":431},")\n",[425,467,468,470,473,475,478,480,484,487,490,492,495,497,500,502,506,510,513],{"class":427,"line":399},[425,469,432],{"class":431},[425,471,472],{"class":435},"VitalInventory.Info",[425,474,439],{"class":431},[425,476,477],{"class":442},"type",[425,479,447],{"class":446},[425,481,483],{"class":482},"su5hD"," VitalInventory",[425,485,486],{"class":431},".",[425,488,489],{"class":482},"Type",[425,491,486],{"class":431},[425,493,494],{"class":482},"GENERIC_9X3",[425,496,454],{"class":431},[425,498,499],{"class":442}," name",[425,501,447],{"class":446},[425,503,505],{"class":504},"sjJ54"," \"",[425,507,509],{"class":508},"s_sjI","My paged inventory",[425,511,512],{"class":504},"\"",[425,514,465],{"class":431},[425,516,518,521,524,528,531,534],{"class":427,"line":517},3,[425,519,520],{"class":435},"public",[425,522,523],{"class":435}," class",[425,525,527],{"class":526},"sbgvK"," MyPagedInventory",[425,529,530],{"class":435}," extends",[425,532,533],{"class":526}," VitalPagedInventory",[425,535,536],{"class":431}," {\n",[425,538,540,543],{"class":427,"line":539},4,[425,541,542],{"class":431},"    @",[425,544,545],{"class":435},"Override\n",[425,547,549,552,555,559,562],{"class":427,"line":548},5,[425,550,551],{"class":435},"    public",[425,553,554],{"class":435}," void",[425,556,558],{"class":557},"sGLFI"," onUpdate",[425,560,561],{"class":431},"()",[425,563,536],{"class":431},[425,565,567],{"class":427,"line":566},6,[425,568,570],{"class":569},"sutJx","        \u002F\u002F This item doesn’t do anything.\n",[425,572,574,577,579,582,584,588,591,593,596,598,601],{"class":427,"line":573},7,[425,575,576],{"class":557},"        setItem",[425,578,439],{"class":431},[425,580,581],{"class":450},"0",[425,583,454],{"class":431},[425,585,587],{"class":586},"sVHd0"," new",[425,589,590],{"class":557}," ItemStack",[425,592,439],{"class":431},[425,594,595],{"class":482},"Material",[425,597,486],{"class":431},[425,599,600],{"class":482},"STICK",[425,602,603],{"class":431},"));\n",[425,605,607],{"class":427,"line":606},8,[425,608,609],{"class":431},"    }\n",[425,611,613],{"class":427,"line":612},9,[425,614,616],{"emptyLinePlaceholder":615},true,"\n",[425,618,620,622],{"class":427,"line":619},10,[425,621,542],{"class":431},[425,623,545],{"class":435},[425,625,627,629,631,633,635,639,643,646],{"class":427,"line":626},11,[425,628,551],{"class":435},[425,630,554],{"class":435},[425,632,558],{"class":557},[425,634,439],{"class":431},[425,636,638],{"class":637},"s_bVq","Player",[425,640,642],{"class":641},"s99_P"," player",[425,644,645],{"class":431},")",[425,647,536],{"class":431},[425,649,651],{"class":427,"line":650},12,[425,652,653],{"class":569},"        \u002F\u002F This item can be clicked.\n",[425,655,657,659,661,664,666,668,670,672,674,676,679,682,685,688,690,693],{"class":427,"line":656},13,[425,658,576],{"class":557},[425,660,439],{"class":431},[425,662,663],{"class":450},"1",[425,665,454],{"class":431},[425,667,587],{"class":586},[425,669,590],{"class":557},[425,671,439],{"class":431},[425,673,595],{"class":482},[425,675,486],{"class":431},[425,677,678],{"class":482},"COBBLESTONE",[425,680,681],{"class":431},"),",[425,683,684],{"class":431}," (",[425,686,687],{"class":482},"e",[425,689,645],{"class":431},[425,691,692],{"class":435}," ->",[425,694,536],{"class":431},[425,696,698],{"class":427,"line":697},14,[425,699,700],{"class":569},"            \u002F\u002F Do something when this item is clicked.\n",[425,702,704,707,709,712,714,716,719,721],{"class":427,"line":703},15,[425,705,706],{"class":482},"            player",[425,708,486],{"class":431},[425,710,711],{"class":557},"sendMessage",[425,713,439],{"class":431},[425,715,512],{"class":504},[425,717,718],{"class":508},"You have clicked the item in slot 1",[425,720,512],{"class":504},[425,722,723],{"class":431},");\n",[425,725,727],{"class":427,"line":726},16,[425,728,729],{"class":431},"        });\n",[425,731,733],{"class":427,"line":732},17,[425,734,616],{"emptyLinePlaceholder":615},[425,736,738],{"class":427,"line":737},18,[425,739,740],{"class":569},"        \u002F\u002F Use this lifecycle to set dynamic items that may change when this inventory is updated.\n",[425,742,744],{"class":427,"line":743},19,[425,745,609],{"class":431},[425,747,749],{"class":427,"line":748},20,[425,750,616],{"emptyLinePlaceholder":615},[425,752,754,756],{"class":427,"line":753},21,[425,755,542],{"class":431},[425,757,545],{"class":435},[425,759,761,763,765,768,770,773,776,778,781,783,785],{"class":427,"line":760},22,[425,762,551],{"class":435},[425,764,554],{"class":435},[425,766,767],{"class":557}," onPageChange",[425,769,439],{"class":431},[425,771,772],{"class":435},"int",[425,774,775],{"class":641}," page",[425,777,454],{"class":431},[425,779,780],{"class":637}," Player",[425,782,642],{"class":641},[425,784,645],{"class":431},[425,786,536],{"class":431},[425,788,790,793,796,799,802,805,807,810,812,814,817,819,821,823,826,828,830,832,835,837],{"class":427,"line":789},23,[425,791,792],{"class":435},"        final",[425,794,795],{"class":435}," var",[425,797,798],{"class":482}," someData ",[425,800,801],{"class":446},"=",[425,803,804],{"class":482}," List",[425,806,486],{"class":431},[425,808,809],{"class":557},"of",[425,811,439],{"class":431},[425,813,512],{"class":504},[425,815,816],{"class":508},"Element 1",[425,818,512],{"class":504},[425,820,454],{"class":431},[425,822,505],{"class":504},[425,824,825],{"class":508},"Element 2",[425,827,512],{"class":504},[425,829,454],{"class":431},[425,831,505],{"class":504},[425,833,834],{"class":508},"Element 3",[425,836,512],{"class":504},[425,838,723],{"class":431},[425,840,842,844,846,849,851,854,856,859,861,864],{"class":427,"line":841},24,[425,843,792],{"class":435},[425,845,795],{"class":435},[425,847,848],{"class":482}," pageContent ",[425,850,801],{"class":446},[425,852,853],{"class":557}," sliceForPage",[425,855,439],{"class":431},[425,857,858],{"class":482},"player",[425,860,454],{"class":431},[425,862,863],{"class":482}," someData",[425,865,723],{"class":431},[425,867,869],{"class":427,"line":868},25,[425,870,616],{"emptyLinePlaceholder":615},[425,872,874,876,878,881,883,886,888,891,893,896,898,901],{"class":427,"line":873},26,[425,875,792],{"class":435},[425,877,795],{"class":435},[425,879,880],{"class":482}," fromSlot ",[425,882,801],{"class":446},[425,884,885],{"class":557}," getInfo",[425,887,439],{"class":431},[425,889,890],{"class":482},"VitalPagedInventory",[425,892,486],{"class":431},[425,894,895],{"class":482},"Info",[425,897,486],{"class":431},[425,899,900],{"class":482},"class",[425,902,723],{"class":431},[425,904,906,909,911,913,916,918,921,924,926,929,932,934,937,940,943,946,948],{"class":427,"line":905},27,[425,907,908],{"class":586},"        for",[425,910,684],{"class":431},[425,912,772],{"class":435},[425,914,915],{"class":482}," i ",[425,917,801],{"class":446},[425,919,920],{"class":450}," 0",[425,922,923],{"class":431},";",[425,925,915],{"class":482},[425,927,928],{"class":446},"\u003C",[425,930,931],{"class":482}," pageContent",[425,933,486],{"class":431},[425,935,936],{"class":557},"size",[425,938,939],{"class":431},"();",[425,941,942],{"class":482}," I",[425,944,945],{"class":446},"++",[425,947,645],{"class":431},[425,949,536],{"class":431},[425,951,953,956,958,961,963,965,967,970,972,975],{"class":427,"line":952},28,[425,954,955],{"class":435},"            final",[425,957,795],{"class":435},[425,959,960],{"class":482}," content ",[425,962,801],{"class":446},[425,964,931],{"class":482},[425,966,486],{"class":431},[425,968,969],{"class":557},"get",[425,971,439],{"class":431},[425,973,974],{"class":482},"i",[425,976,723],{"class":431},[425,978,980,982,984,987,989,991,994,997],{"class":427,"line":979},29,[425,981,955],{"class":435},[425,983,795],{"class":435},[425,985,986],{"class":482}," slot ",[425,988,801],{"class":446},[425,990,880],{"class":482},[425,992,993],{"class":446},"+",[425,995,996],{"class":482}," i",[425,998,999],{"class":431},";\n",[425,1001,1003],{"class":427,"line":1002},30,[425,1004,1005],{"class":482},"            \n",[425,1007,1009,1011,1013,1016,1018,1020,1022,1024,1026,1028,1031],{"class":427,"line":1008},31,[425,1010,955],{"class":435},[425,1012,795],{"class":435},[425,1014,1015],{"class":482}," item ",[425,1017,801],{"class":446},[425,1019,587],{"class":586},[425,1021,590],{"class":557},[425,1023,439],{"class":431},[425,1025,595],{"class":482},[425,1027,486],{"class":431},[425,1029,1030],{"class":482},"PAPER",[425,1032,723],{"class":431},[425,1034,1036,1039,1041,1044,1046,1049],{"class":427,"line":1035},32,[425,1037,1038],{"class":482},"            item",[425,1040,486],{"class":431},[425,1042,1043],{"class":557},"setDisplayName",[425,1045,439],{"class":431},[425,1047,1048],{"class":482},"content",[425,1050,723],{"class":431},[425,1052,1054,1057,1059,1062,1064,1067,1069,1071,1073,1075,1077],{"class":427,"line":1053},33,[425,1055,1056],{"class":557},"            setItem",[425,1058,439],{"class":431},[425,1060,1061],{"class":482},"slot",[425,1063,454],{"class":431},[425,1065,1066],{"class":482}," item",[425,1068,454],{"class":431},[425,1070,684],{"class":431},[425,1072,687],{"class":482},[425,1074,645],{"class":431},[425,1076,692],{"class":435},[425,1078,536],{"class":431},[425,1080,1082,1085,1087,1089,1091,1093,1096,1098,1101,1103,1105,1107,1110,1112],{"class":427,"line":1081},34,[425,1083,1084],{"class":482},"                player",[425,1086,486],{"class":431},[425,1088,711],{"class":557},[425,1090,439],{"class":431},[425,1092,512],{"class":504},[425,1094,1095],{"class":508},"You have clicked the paged item '",[425,1097,512],{"class":504},[425,1099,1100],{"class":446}," +",[425,1102,960],{"class":482},[425,1104,993],{"class":446},[425,1106,505],{"class":504},[425,1108,1109],{"class":508},"'!",[425,1111,512],{"class":504},[425,1113,723],{"class":431},[425,1115,1117],{"class":427,"line":1116},35,[425,1118,1119],{"class":431},"            });\n",[425,1121,1123],{"class":427,"line":1122},36,[425,1124,1125],{"class":431},"        }\n",[425,1127,1129],{"class":427,"line":1128},37,[425,1130,616],{"emptyLinePlaceholder":615},[425,1132,1134],{"class":427,"line":1133},38,[425,1135,1136],{"class":569},"        \u002F\u002F Use this lifecycle to set dynamic items for your paged content.\n",[425,1138,1140],{"class":427,"line":1139},39,[425,1141,1142],{"class":569},"        \u002F\u002F Normally, you would only set items in the configured \"fromSlot\" and \"toSlot\" here.\n",[425,1144,1146],{"class":427,"line":1145},40,[425,1147,609],{"class":431},[425,1149,1151],{"class":427,"line":1150},41,[425,1152,1153],{"class":431},"}\n",[1155,1156,1157],"style",{},"html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .s_bVq, html code.shiki .s_bVq{--shiki-light:#9C3EDA;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":99,"searchDepth":399,"depth":399,"links":1159},[],"This page defines a recipe (pre-written code snippet) for a paged inventory, that can be copied by a developer instead of manually writing it.","md",{},{"title":327},"---\ntitle: Recipe for a paged inventory\ndescription: This page defines a recipe (pre-written code snippet) for a paged inventory, that can be copied by a developer instead of manually writing it.\nnavigation:\n  title: Paged inventory\n---\n\n# Paged inventory\n\nBelow is an example of a paged inventory (9x3 slots).\n\n```java [MyPagedInventory.java]\n@VitalPagedInventory.Info(fromSlot = 10, toSlot = 16)\n@VitalInventory.Info(type = VitalInventory.Type.GENERIC_9X3, name = \"My paged inventory\")\npublic class MyPagedInventory extends VitalPagedInventory {\n\t@Override\n\tpublic void onUpdate() {\n\t\t\u002F\u002F This item doesn’t do anything.\n\t\tsetItem(0, new ItemStack(Material.STICK));\n\t}\n\n\t@Override\n\tpublic void onUpdate(Player player) {\n\t\t\u002F\u002F This item can be clicked.\n\t\tsetItem(1, new ItemStack(Material.COBBLESTONE), (e) -> {\n\t\t\t\u002F\u002F Do something when this item is clicked.\n\t\t\tplayer.sendMessage(\"You have clicked the item in slot 1\");\n\t\t});\n\n\t\t\u002F\u002F Use this lifecycle to set dynamic items that may change when this inventory is updated.\n\t}\n\n\t@Override\n\tpublic void onPageChange(int page, Player player) {\n\t\tfinal var someData = List.of(\"Element 1\", \"Element 2\", \"Element 3\");\n\t\tfinal var pageContent = sliceForPage(player, someData);\n\n\t\tfinal var fromSlot = getInfo(VitalPagedInventory.Info.class);\n\t\tfor (int i = 0; i \u003C pageContent.size(); I++) {\n\t\t\tfinal var content = pageContent.get(i);\n\t\t\tfinal var slot = fromSlot + i;\n\t\t\t\n\t\t\tfinal var item = new ItemStack(Material.PAPER);\n\t\t\titem.setDisplayName(content);\n\t\t\tsetItem(slot, item, (e) -> {\n\t\t\t\tplayer.sendMessage(\"You have clicked the paged item '\" + content + \"'!\");\n\t\t\t});\n\t\t}\n\n\t\t\u002F\u002F Use this lifecycle to set dynamic items for your paged content.\n\t\t\u002F\u002F Normally, you would only set items in the configured \"fromSlot\" and \"toSlot\" here.\n\t}\n}\n```\n",{"title":402,"description":1160},"m5VqaM_C4F3UHXZn9Ndke7gggNaRkoIFO2er1DRV04o",1789308660721]