[{"data":1,"prerenderedAt":918},["ShallowReactive",2],{"docs-navigation:\u002Fdocs\u002Fmodules\u002Fvital-items\u002Fitems":3,"docs-page-estimated-read-time:\u002Fdocs\u002Fmodules\u002Fvital-items\u002Fitems":399,"docs-page:\u002Fdocs\u002Fmodules\u002Fvital-items\u002Fitems":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",3,{"id":401,"title":171,"body":402,"description":911,"extension":912,"meta":913,"navigation":914,"path":172,"rawbody":915,"seo":916,"stem":173,"__hash__":917},"docs\u002Fdocs\u002F4.modules\u002Fvital-items\u002F2.items.md",{"type":403,"value":404,"toc":906},"minimark",[405,409,422,519,522,613,626,633,732,737,744,747,770,773,790,816,828,831,902],[406,407,171],"h1",{"id":408},"items",[410,411,412,413,417,418,421],"p",{},"Every interactable item will be its own class that extends ",[414,415,416],"code",{},"VitalItem"," and is annotated with ",[414,419,420],{},"@VitalItem.Info",".",[423,424,429],"pre",{"className":425,"code":426,"filename":427,"language":428,"meta":99,"style":99},"language-java shiki shiki-themes material-theme-lighter github-light github-dark","@VitalItem.Info(name = \"My item\", type = Material.COBBLESTONE)\npublic class MyItem extends VitalItem {\n  \n}\n","MyItem.java","java",[414,430,431,486,508,513],{"__ignoreMap":99},[432,433,436,440,444,447,451,455,459,463,466,469,472,474,478,480,483],"span",{"class":434,"line":435},"line",1,[432,437,439],{"class":438},"sP7_E","@",[432,441,443],{"class":442},"sbsja","VitalItem.Info",[432,445,446],{"class":438},"(",[432,448,450],{"class":449},"sZMiF","name",[432,452,454],{"class":453},"smGrS"," =",[432,456,458],{"class":457},"sjJ54"," \"",[432,460,462],{"class":461},"s_sjI","My item",[432,464,465],{"class":457},"\"",[432,467,468],{"class":438},",",[432,470,471],{"class":449}," type",[432,473,454],{"class":453},[432,475,477],{"class":476},"su5hD"," Material",[432,479,421],{"class":438},[432,481,482],{"class":476},"COBBLESTONE",[432,484,485],{"class":438},")\n",[432,487,489,492,495,499,502,505],{"class":434,"line":488},2,[432,490,491],{"class":442},"public",[432,493,494],{"class":442}," class",[432,496,498],{"class":497},"sbgvK"," MyItem",[432,500,501],{"class":442}," extends",[432,503,504],{"class":497}," VitalItem",[432,506,507],{"class":438}," {\n",[432,509,510],{"class":434,"line":399},[432,511,512],{"class":476},"  \n",[432,514,516],{"class":434,"line":515},4,[432,517,518],{"class":438},"}\n",[410,520,521],{},"Now you can give this item to a player, e.g., when he joins the server.",[423,523,526],{"className":425,"code":524,"filename":525,"language":428,"meta":99,"style":99},"@EventHandler\npublic void onPlayerJoin(PlayerJoinEvent e) {\n  e.getPlayer().getInventory().setItem(0, myItem.getItemStack(e.getPlayer()));\n}\n","MyListener.java",[414,527,528,535,560,609],{"__ignoreMap":99},[432,529,530,532],{"class":434,"line":435},[432,531,439],{"class":438},[432,533,534],{"class":442},"EventHandler\n",[432,536,537,539,542,546,548,552,555,558],{"class":434,"line":488},[432,538,491],{"class":442},[432,540,541],{"class":442}," void",[432,543,545],{"class":544},"sGLFI"," onPlayerJoin",[432,547,446],{"class":438},[432,549,551],{"class":550},"s_bVq","PlayerJoinEvent",[432,553,554],{"class":476}," e",[432,556,557],{"class":438},")",[432,559,507],{"class":438},[432,561,562,565,567,570,573,576,578,581,583,587,589,592,594,597,599,602,604,606],{"class":434,"line":399},[432,563,564],{"class":476},"  e",[432,566,421],{"class":438},[432,568,569],{"class":544},"getPlayer",[432,571,572],{"class":438},"().",[432,574,575],{"class":544},"getInventory",[432,577,572],{"class":438},[432,579,580],{"class":544},"setItem",[432,582,446],{"class":438},[432,584,586],{"class":585},"srdBf","0",[432,588,468],{"class":438},[432,590,591],{"class":476}," myItem",[432,593,421],{"class":438},[432,595,596],{"class":544},"getItemStack",[432,598,446],{"class":438},[432,600,601],{"class":476},"e",[432,603,421],{"class":438},[432,605,569],{"class":544},[432,607,608],{"class":438},"()));\n",[432,610,611],{"class":434,"line":515},[432,612,518],{"class":438},[614,615,616],"blockquote",{},[410,617,618,619,621,622,625],{},"Note that we have to call the ",[414,620,596],{}," method of our ",[414,623,624],{},"MyItem"," instance to get a copy of the item that our class defines.",[410,627,628,629,632],{},"Now if we want to react to an interaction, like a right-click, we can use the ",[414,630,631],{},"onRightClick"," lifecycle.",[423,634,636],{"className":425,"code":635,"filename":427,"language":428,"meta":99,"style":99},"@VitalItem.Info(name = \"My item\", type = Material.COBBLESTONE)\npublic class MyItem extends VitalItem {\n  @Override\n  public void onRightClick(PlayerInteractEvent e) {\n    \u002F\u002F ...\n  }\n}\n",[414,637,638,670,684,692,714,721,727],{"__ignoreMap":99},[432,639,640,642,644,646,648,650,652,654,656,658,660,662,664,666,668],{"class":434,"line":435},[432,641,439],{"class":438},[432,643,443],{"class":442},[432,645,446],{"class":438},[432,647,450],{"class":449},[432,649,454],{"class":453},[432,651,458],{"class":457},[432,653,462],{"class":461},[432,655,465],{"class":457},[432,657,468],{"class":438},[432,659,471],{"class":449},[432,661,454],{"class":453},[432,663,477],{"class":476},[432,665,421],{"class":438},[432,667,482],{"class":476},[432,669,485],{"class":438},[432,671,672,674,676,678,680,682],{"class":434,"line":488},[432,673,491],{"class":442},[432,675,494],{"class":442},[432,677,498],{"class":497},[432,679,501],{"class":442},[432,681,504],{"class":497},[432,683,507],{"class":438},[432,685,686,689],{"class":434,"line":399},[432,687,688],{"class":438},"  @",[432,690,691],{"class":442},"Override\n",[432,693,694,697,699,702,704,707,710,712],{"class":434,"line":515},[432,695,696],{"class":442},"  public",[432,698,541],{"class":442},[432,700,701],{"class":544}," onRightClick",[432,703,446],{"class":438},[432,705,706],{"class":550},"PlayerInteractEvent",[432,708,554],{"class":709},"s99_P",[432,711,557],{"class":438},[432,713,507],{"class":438},[432,715,717],{"class":434,"line":716},5,[432,718,720],{"class":719},"sutJx","    \u002F\u002F ...\n",[432,722,724],{"class":434,"line":723},6,[432,725,726],{"class":438},"  }\n",[432,728,730],{"class":434,"line":729},7,[432,731,518],{"class":438},[733,734,736],"h2",{"id":735},"cooldowns","Cooldowns",[410,738,739,740,743],{},"Items also support cooldowns.",[741,742],"br",{},"\nEvery cooldown is tied to the player that interacted with the item and will automatically work right out of the box without you having to configure anything.",[410,745,746],{},"Just define the cooldown in your info annotation (millis).",[423,748,750],{"className":425,"code":749,"filename":427,"language":428,"meta":99,"style":99},"@VitalItem.Info(cooldown = 1_000)\n",[414,751,752],{"__ignoreMap":99},[432,753,754,756,758,760,763,765,768],{"class":434,"line":435},[432,755,439],{"class":438},[432,757,443],{"class":442},[432,759,446],{"class":438},[432,761,762],{"class":449},"cooldown",[432,764,454],{"class":453},[432,766,767],{"class":585}," 1_000",[432,769,485],{"class":438},[733,771,185],{"id":772},"localization",[410,774,775,776,778,779,783,785,786,789],{},"Plugins that also use ",[414,777,179],{}," can benefit from localized items that are displayed and ",[780,781,782],"strong",{},"automatically updated when a player changes his locale!",[741,784],{},"\nSimply set the item name in your info annotation to your resource key, and Vital will automatically display the correct translated version of your item name, just how you provided it in your ",[414,787,788],{},"messages_*.properties"," files.",[423,791,793],{"className":425,"code":792,"filename":427,"language":428,"meta":99,"style":99},"@VitalItem.Info(name = \"servername.pluginname.item.myitem\")\n",[414,794,795],{"__ignoreMap":99},[432,796,797,799,801,803,805,807,809,812,814],{"class":434,"line":435},[432,798,439],{"class":438},[432,800,443],{"class":442},[432,802,446],{"class":438},[432,804,450],{"class":449},[432,806,454],{"class":453},[432,808,458],{"class":457},[432,810,811],{"class":461},"servername.pluginname.item.myitem",[432,813,465],{"class":457},[432,815,485],{"class":438},[614,817,818],{},[410,819,820,821,824,825,421],{},"When you change the locale of a player via ",[414,822,823],{},"VitalLocalizationModule.Spigot.setVitalLocale(Player, Locale)",", Vital will ",[780,826,827],{},"automatically translate all items of the player's inventory",[733,829,61],{"id":830},"lifecycles",[832,833,834,848],"table",{},[835,836,837],"thead",{},[838,839,840,845],"tr",{},[841,842,844],"th",{"align":843},"left","Lifecycle",[841,846,847],{"align":843},"Usage",[849,850,851,862,872,882,892],"tbody",{},[838,852,853,859],{},[854,855,856],"td",{"align":843},[414,857,858],{},"onLeftClick(PlayerInteractEvent)",[854,860,861],{"align":843},"Perform an action when this item is left-clicked while not on cooldown.",[838,863,864,869],{},[854,865,866],{"align":843},[414,867,868],{},"onRightClick(PlayerInteractEvent)",[854,870,871],{"align":843},"Perform an action when this item is right-clicked while not on cooldown.",[838,873,874,879],{},[854,875,876],{"align":843},[414,877,878],{},"onCooldown(PlayerInteractEvent)",[854,880,881],{"align":843},"Perform an action when this item is left- or right-clicked while on cooldown.",[838,883,884,889],{},[854,885,886],{"align":843},[414,887,888],{},"onCooldownTick(Player)",[854,890,891],{"align":843},"Perform an action when the cooldown of this item is ticked (every 50ms \u002F 1 game tick).",[838,893,894,899],{},[854,895,896],{"align":843},[414,897,898],{},"onCooldownExpire(Player)",[854,900,901],{"align":843},"Perform an action when the cooldown of this item reaches 0.",[903,904,905],"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 .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 .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}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);}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s_bVq, html code.shiki .s_bVq{--shiki-light:#9C3EDA;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 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}",{"title":99,"searchDepth":488,"depth":488,"links":907},[908,909,910],{"id":735,"depth":488,"text":736},{"id":772,"depth":488,"text":185},{"id":830,"depth":488,"text":61},"This page explains how to create an interactable item using `vital-items`.","md",{},{"title":171},"---\ntitle: Items\ndescription: This page explains how to create an interactable item using `vital-items`.\nnavigation:\n  title: Items\n---\n\n# Items\n\nEvery interactable item will be its own class that extends `VitalItem` and is annotated with `@VitalItem.Info`.\n```java [MyItem.java]\n@VitalItem.Info(name = \"My item\", type = Material.COBBLESTONE)\npublic class MyItem extends VitalItem {\n  \n}\n```\n\nNow you can give this item to a player, e.g., when he joins the server.\n```java [MyListener.java]\n@EventHandler\npublic void onPlayerJoin(PlayerJoinEvent e) {\n  e.getPlayer().getInventory().setItem(0, myItem.getItemStack(e.getPlayer()));\n}\n```\n\n> Note that we have to call the `getItemStack` method of our `MyItem` instance to get a copy of the item that our class defines.\n\nNow if we want to react to an interaction, like a right-click, we can use the `onRightClick` lifecycle.\n```java [MyItem.java]\n@VitalItem.Info(name = \"My item\", type = Material.COBBLESTONE)\npublic class MyItem extends VitalItem {\n  @Override\n  public void onRightClick(PlayerInteractEvent e) {\n    \u002F\u002F ...\n  }\n}\n```\n\n## Cooldowns\n\nItems also support cooldowns.  \nEvery cooldown is tied to the player that interacted with the item and will automatically work right out of the box without you having to configure anything.\n\nJust define the cooldown in your info annotation (millis).\n```java [MyItem.java]\n@VitalItem.Info(cooldown = 1_000)\n```\n\n## Localization\n\nPlugins that also use `vital-localization` can benefit from localized items that are displayed and **automatically updated when a player changes his locale!**  \nSimply set the item name in your info annotation to your resource key, and Vital will automatically display the correct translated version of your item name, just how you provided it in your `messages_*.properties` files.\n```java [MyItem.java]\n@VitalItem.Info(name = \"servername.pluginname.item.myitem\")\n```\n\n> When you change the locale of a player via `VitalLocalizationModule.Spigot.setVitalLocale(Player, Locale)`, Vital will **automatically translate all items of the player's inventory**.\n\n## Lifecycles\n\n| Lifecycle                           | Usage                                                                                  |\n|:------------------------------------|:---------------------------------------------------------------------------------------|\n| `onLeftClick(PlayerInteractEvent)`  | Perform an action when this item is left-clicked while not on cooldown.                |\n| `onRightClick(PlayerInteractEvent)` | Perform an action when this item is right-clicked while not on cooldown.               |\n| `onCooldown(PlayerInteractEvent)`   | Perform an action when this item is left- or right-clicked while on cooldown.          |\n| `onCooldownTick(Player)`            | Perform an action when the cooldown of this item is ticked (every 50ms \u002F 1 game tick). |\n| `onCooldownExpire(Player)`          | Perform an action when the cooldown of this item reaches 0.                            |\n",{"title":171,"description":911},"a_-Qg_bLSkBT1Ka0UfcFVsF8Ch26oNKhbSKwyZx4Z2U",1789308658758]