[{"data":1,"prerenderedAt":1205},["ShallowReactive",2],{"docs-navigation:\u002Fdocs\u002Frecipes\u002Fminigames\u002Finstance-countdown-states":3,"docs-page-estimated-read-time:\u002Fdocs\u002Frecipes\u002Fminigames\u002Finstance-countdown-states":399,"docs-page:\u002Fdocs\u002Frecipes\u002Fminigames\u002Finstance-countdown-states":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":1198,"extension":1199,"meta":1200,"navigation":1201,"path":359,"rawbody":1202,"seo":1203,"stem":360,"__hash__":1204},"docs\u002Fdocs\u002F5.recipes\u002Fminigames\u002Finstance-countdown-states.md","Recipe for minigame instance countdown states",{"type":404,"value":405,"toc":1196},"minimark",[406,411,423,429,1077,1086,1192],[407,408,410],"h1",{"id":409},"minigame-instance-countdown-states","Minigame instance countdown states",[412,413,414,415,418,419,422],"p",{},"Below is an example for a mini-game instance countdown state for ",[416,417,189],"code",{},".",[420,421],"br",{},"\nIn a game, only one state can currently be active at a given time.",[412,424,425,426,428],{},"Only the currently active state will receive events and decrease the countdown.",[420,427],{},"\nThe example shown below will define a countdown of 10 seconds that will decrease every 1 second.",[430,431,436],"pre",{"className":432,"code":433,"filename":434,"language":435,"meta":99,"style":99},"language-java shiki shiki-themes material-theme-lighter github-light github-dark","@VitalCountdown.Info(interval = 1_000, countdown = 10)\npublic class MyInstanceCountdownState extends VitalMinigameInstanceCountdownState\u003CMyInstance> {\n    public MyInstanceState(MyInstance instance) {\n        super(instance);\n    }\n\n    @Override\n    public void onEnable() {\n        for (final var player : getInstance().getWorld().getPlayers()) {\n            player.sendMessage(\"This instance countdown state was enabled.\");\n        }\n    }\n\n    @Override\n    public void onDisable() {\n        for (final var player : getInstance().getWorld().getPlayers()) {\n            player.sendMessage(\"This instance countdown state was disabled.\");\n        }\n    }\n\n    @Override\n    public void onStart() {\n        for (final var player : getInstance().getWorld().getPlayers()) {\n            player.sendMessage(\"This instance countdown state countdown was started.\");\n        }\n    }\n\n    @Override\n    public void onTick() {\n        for (final var player : getInstance().getWorld().getPlayers()) {\n            player.sendMessage(\"This instance countdown state was ticked.\");\n        }\n    }\n\n    @Override\n    public void onExpire() {\n        for (final var player : getInstance().getWorld().getPlayers()) {\n            player.sendMessage(\"This instance countdown state has expired.\");\n        }\n    }\n\n    @EventHandler\n    public void onPlayerJoin(PlayerJoinEvent e) {\n        e.getPlayer().sendMessage(\"You joined this instance countdown state.\");\n    }\n}\n","MyInstanceCountdownState.java","java",[416,437,438,480,510,534,550,556,563,572,588,629,654,660,665,670,677,691,720,740,745,750,755,762,776,805,825,830,835,840,847,861,890,910,915,920,925,932,946,975,995,1000,1005,1010,1018,1040,1066,1071],{"__ignoreMap":99},[439,440,443,447,451,454,458,462,466,469,472,474,477],"span",{"class":441,"line":442},"line",1,[439,444,446],{"class":445},"sP7_E","@",[439,448,450],{"class":449},"sbsja","VitalCountdown.Info",[439,452,453],{"class":445},"(",[439,455,457],{"class":456},"sZMiF","interval",[439,459,461],{"class":460},"smGrS"," =",[439,463,465],{"class":464},"srdBf"," 1_000",[439,467,468],{"class":445},",",[439,470,471],{"class":456}," countdown",[439,473,461],{"class":460},[439,475,476],{"class":464}," 10",[439,478,479],{"class":445},")\n",[439,481,482,485,488,492,495,498,501,504,507],{"class":441,"line":399},[439,483,484],{"class":449},"public",[439,486,487],{"class":449}," class",[439,489,491],{"class":490},"sbgvK"," MyInstanceCountdownState",[439,493,494],{"class":449}," extends",[439,496,497],{"class":490}," VitalMinigameInstanceCountdownState",[439,499,500],{"class":445},"\u003C",[439,502,503],{"class":449},"MyInstance",[439,505,506],{"class":445},">",[439,508,509],{"class":445}," {\n",[439,511,513,516,520,522,525,529,532],{"class":441,"line":512},3,[439,514,515],{"class":449},"    public",[439,517,519],{"class":518},"sGLFI"," MyInstanceState",[439,521,453],{"class":445},[439,523,503],{"class":524},"s_bVq",[439,526,528],{"class":527},"s99_P"," instance",[439,530,531],{"class":445},")",[439,533,509],{"class":445},[439,535,537,541,543,547],{"class":441,"line":536},4,[439,538,540],{"class":539},"s_hVV","        super",[439,542,453],{"class":445},[439,544,546],{"class":545},"su5hD","instance",[439,548,549],{"class":445},");\n",[439,551,553],{"class":441,"line":552},5,[439,554,555],{"class":445},"    }\n",[439,557,559],{"class":441,"line":558},6,[439,560,562],{"emptyLinePlaceholder":561},true,"\n",[439,564,566,569],{"class":441,"line":565},7,[439,567,568],{"class":445},"    @",[439,570,571],{"class":449},"Override\n",[439,573,575,577,580,583,586],{"class":441,"line":574},8,[439,576,515],{"class":449},[439,578,579],{"class":449}," void",[439,581,582],{"class":518}," onEnable",[439,584,585],{"class":445},"()",[439,587,509],{"class":445},[439,589,591,595,598,601,604,607,610,613,616,619,621,624,627],{"class":441,"line":590},9,[439,592,594],{"class":593},"sVHd0","        for",[439,596,597],{"class":445}," (",[439,599,600],{"class":449},"final",[439,602,603],{"class":449}," var",[439,605,606],{"class":545}," player ",[439,608,609],{"class":593},":",[439,611,612],{"class":518}," getInstance",[439,614,615],{"class":445},"().",[439,617,618],{"class":518},"getWorld",[439,620,615],{"class":445},[439,622,623],{"class":518},"getPlayers",[439,625,626],{"class":445},"())",[439,628,509],{"class":445},[439,630,632,635,637,640,642,646,650,652],{"class":441,"line":631},10,[439,633,634],{"class":545},"            player",[439,636,418],{"class":445},[439,638,639],{"class":518},"sendMessage",[439,641,453],{"class":445},[439,643,645],{"class":644},"sjJ54","\"",[439,647,649],{"class":648},"s_sjI","This instance countdown state was enabled.",[439,651,645],{"class":644},[439,653,549],{"class":445},[439,655,657],{"class":441,"line":656},11,[439,658,659],{"class":445},"        }\n",[439,661,663],{"class":441,"line":662},12,[439,664,555],{"class":445},[439,666,668],{"class":441,"line":667},13,[439,669,562],{"emptyLinePlaceholder":561},[439,671,673,675],{"class":441,"line":672},14,[439,674,568],{"class":445},[439,676,571],{"class":449},[439,678,680,682,684,687,689],{"class":441,"line":679},15,[439,681,515],{"class":449},[439,683,579],{"class":449},[439,685,686],{"class":518}," onDisable",[439,688,585],{"class":445},[439,690,509],{"class":445},[439,692,694,696,698,700,702,704,706,708,710,712,714,716,718],{"class":441,"line":693},16,[439,695,594],{"class":593},[439,697,597],{"class":445},[439,699,600],{"class":449},[439,701,603],{"class":449},[439,703,606],{"class":545},[439,705,609],{"class":593},[439,707,612],{"class":518},[439,709,615],{"class":445},[439,711,618],{"class":518},[439,713,615],{"class":445},[439,715,623],{"class":518},[439,717,626],{"class":445},[439,719,509],{"class":445},[439,721,723,725,727,729,731,733,736,738],{"class":441,"line":722},17,[439,724,634],{"class":545},[439,726,418],{"class":445},[439,728,639],{"class":518},[439,730,453],{"class":445},[439,732,645],{"class":644},[439,734,735],{"class":648},"This instance countdown state was disabled.",[439,737,645],{"class":644},[439,739,549],{"class":445},[439,741,743],{"class":441,"line":742},18,[439,744,659],{"class":445},[439,746,748],{"class":441,"line":747},19,[439,749,555],{"class":445},[439,751,753],{"class":441,"line":752},20,[439,754,562],{"emptyLinePlaceholder":561},[439,756,758,760],{"class":441,"line":757},21,[439,759,568],{"class":445},[439,761,571],{"class":449},[439,763,765,767,769,772,774],{"class":441,"line":764},22,[439,766,515],{"class":449},[439,768,579],{"class":449},[439,770,771],{"class":518}," onStart",[439,773,585],{"class":445},[439,775,509],{"class":445},[439,777,779,781,783,785,787,789,791,793,795,797,799,801,803],{"class":441,"line":778},23,[439,780,594],{"class":593},[439,782,597],{"class":445},[439,784,600],{"class":449},[439,786,603],{"class":449},[439,788,606],{"class":545},[439,790,609],{"class":593},[439,792,612],{"class":518},[439,794,615],{"class":445},[439,796,618],{"class":518},[439,798,615],{"class":445},[439,800,623],{"class":518},[439,802,626],{"class":445},[439,804,509],{"class":445},[439,806,808,810,812,814,816,818,821,823],{"class":441,"line":807},24,[439,809,634],{"class":545},[439,811,418],{"class":445},[439,813,639],{"class":518},[439,815,453],{"class":445},[439,817,645],{"class":644},[439,819,820],{"class":648},"This instance countdown state countdown was started.",[439,822,645],{"class":644},[439,824,549],{"class":445},[439,826,828],{"class":441,"line":827},25,[439,829,659],{"class":445},[439,831,833],{"class":441,"line":832},26,[439,834,555],{"class":445},[439,836,838],{"class":441,"line":837},27,[439,839,562],{"emptyLinePlaceholder":561},[439,841,843,845],{"class":441,"line":842},28,[439,844,568],{"class":445},[439,846,571],{"class":449},[439,848,850,852,854,857,859],{"class":441,"line":849},29,[439,851,515],{"class":449},[439,853,579],{"class":449},[439,855,856],{"class":518}," onTick",[439,858,585],{"class":445},[439,860,509],{"class":445},[439,862,864,866,868,870,872,874,876,878,880,882,884,886,888],{"class":441,"line":863},30,[439,865,594],{"class":593},[439,867,597],{"class":445},[439,869,600],{"class":449},[439,871,603],{"class":449},[439,873,606],{"class":545},[439,875,609],{"class":593},[439,877,612],{"class":518},[439,879,615],{"class":445},[439,881,618],{"class":518},[439,883,615],{"class":445},[439,885,623],{"class":518},[439,887,626],{"class":445},[439,889,509],{"class":445},[439,891,893,895,897,899,901,903,906,908],{"class":441,"line":892},31,[439,894,634],{"class":545},[439,896,418],{"class":445},[439,898,639],{"class":518},[439,900,453],{"class":445},[439,902,645],{"class":644},[439,904,905],{"class":648},"This instance countdown state was ticked.",[439,907,645],{"class":644},[439,909,549],{"class":445},[439,911,913],{"class":441,"line":912},32,[439,914,659],{"class":445},[439,916,918],{"class":441,"line":917},33,[439,919,555],{"class":445},[439,921,923],{"class":441,"line":922},34,[439,924,562],{"emptyLinePlaceholder":561},[439,926,928,930],{"class":441,"line":927},35,[439,929,568],{"class":445},[439,931,571],{"class":449},[439,933,935,937,939,942,944],{"class":441,"line":934},36,[439,936,515],{"class":449},[439,938,579],{"class":449},[439,940,941],{"class":518}," onExpire",[439,943,585],{"class":445},[439,945,509],{"class":445},[439,947,949,951,953,955,957,959,961,963,965,967,969,971,973],{"class":441,"line":948},37,[439,950,594],{"class":593},[439,952,597],{"class":445},[439,954,600],{"class":449},[439,956,603],{"class":449},[439,958,606],{"class":545},[439,960,609],{"class":593},[439,962,612],{"class":518},[439,964,615],{"class":445},[439,966,618],{"class":518},[439,968,615],{"class":445},[439,970,623],{"class":518},[439,972,626],{"class":445},[439,974,509],{"class":445},[439,976,978,980,982,984,986,988,991,993],{"class":441,"line":977},38,[439,979,634],{"class":545},[439,981,418],{"class":445},[439,983,639],{"class":518},[439,985,453],{"class":445},[439,987,645],{"class":644},[439,989,990],{"class":648},"This instance countdown state has expired.",[439,992,645],{"class":644},[439,994,549],{"class":445},[439,996,998],{"class":441,"line":997},39,[439,999,659],{"class":445},[439,1001,1003],{"class":441,"line":1002},40,[439,1004,555],{"class":445},[439,1006,1008],{"class":441,"line":1007},41,[439,1009,562],{"emptyLinePlaceholder":561},[439,1011,1013,1015],{"class":441,"line":1012},42,[439,1014,568],{"class":445},[439,1016,1017],{"class":449},"EventHandler\n",[439,1019,1021,1023,1025,1028,1030,1033,1036,1038],{"class":441,"line":1020},43,[439,1022,515],{"class":449},[439,1024,579],{"class":449},[439,1026,1027],{"class":518}," onPlayerJoin",[439,1029,453],{"class":445},[439,1031,1032],{"class":524},"PlayerJoinEvent",[439,1034,1035],{"class":527}," e",[439,1037,531],{"class":445},[439,1039,509],{"class":445},[439,1041,1043,1046,1048,1051,1053,1055,1057,1059,1062,1064],{"class":441,"line":1042},44,[439,1044,1045],{"class":545},"        e",[439,1047,418],{"class":445},[439,1049,1050],{"class":518},"getPlayer",[439,1052,615],{"class":445},[439,1054,639],{"class":518},[439,1056,453],{"class":445},[439,1058,645],{"class":644},[439,1060,1061],{"class":648},"You joined this instance countdown state.",[439,1063,645],{"class":644},[439,1065,549],{"class":445},[439,1067,1069],{"class":441,"line":1068},45,[439,1070,555],{"class":445},[439,1072,1074],{"class":441,"line":1073},46,[439,1075,1076],{"class":445},"}\n",[412,1078,1079,1080,1082,1083],{},"Because multiple instances can have multiple states, you can’t define an instance state as a Spring bean.",[420,1081],{},"\nJust store your states directly in your instances and switch between them using ",[416,1084,1085],{},"setState(VitalMinigameInstanceState)",[430,1087,1090],{"className":432,"code":1088,"filename":1089,"language":435,"meta":99,"style":99},"public class MyInstance extends VitalMinigameInstance {\n    private MyInstanceCountdownState myInstanceCountdownState = new MyInstanceCountdownState(this);\n\n    \u002F\u002F Getters and setters.\n\n    @EventHandler\n    public void onPlayerJoin(PlayerJoinEvent e) {\n        setState(myInstanceCountdownState);\n    }\n}\n","MyInstance.java",[416,1091,1092,1108,1134,1138,1144,1148,1154,1172,1184,1188],{"__ignoreMap":99},[439,1093,1094,1096,1098,1101,1103,1106],{"class":441,"line":442},[439,1095,484],{"class":449},[439,1097,487],{"class":449},[439,1099,1100],{"class":490}," MyInstance",[439,1102,494],{"class":449},[439,1104,1105],{"class":490}," VitalMinigameInstance",[439,1107,509],{"class":445},[439,1109,1110,1113,1115,1118,1121,1124,1126,1128,1132],{"class":441,"line":399},[439,1111,1112],{"class":449},"    private",[439,1114,491],{"class":524},[439,1116,1117],{"class":545}," myInstanceCountdownState ",[439,1119,1120],{"class":460},"=",[439,1122,1123],{"class":593}," new",[439,1125,491],{"class":518},[439,1127,453],{"class":445},[439,1129,1131],{"class":1130},"s39Yj","this",[439,1133,549],{"class":445},[439,1135,1136],{"class":441,"line":512},[439,1137,562],{"emptyLinePlaceholder":561},[439,1139,1140],{"class":441,"line":536},[439,1141,1143],{"class":1142},"sutJx","    \u002F\u002F Getters and setters.\n",[439,1145,1146],{"class":441,"line":552},[439,1147,562],{"emptyLinePlaceholder":561},[439,1149,1150,1152],{"class":441,"line":558},[439,1151,568],{"class":445},[439,1153,1017],{"class":449},[439,1155,1156,1158,1160,1162,1164,1166,1168,1170],{"class":441,"line":565},[439,1157,515],{"class":449},[439,1159,579],{"class":449},[439,1161,1027],{"class":518},[439,1163,453],{"class":445},[439,1165,1032],{"class":524},[439,1167,1035],{"class":527},[439,1169,531],{"class":445},[439,1171,509],{"class":445},[439,1173,1174,1177,1179,1182],{"class":441,"line":574},[439,1175,1176],{"class":518},"        setState",[439,1178,453],{"class":445},[439,1180,1181],{"class":545},"myInstanceCountdownState",[439,1183,549],{"class":445},[439,1185,1186],{"class":441,"line":590},[439,1187,555],{"class":445},[439,1189,1190],{"class":441,"line":631},[439,1191,1076],{"class":445},[1193,1194,1195],"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 .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 .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 pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--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 .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 .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 .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 .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}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":399,"depth":399,"links":1197},[],"This page defines a recipe (pre-written code snippet) for an instance countdown game state, that can be copied by a developer instead of manually writing it.","md",{},{"title":358},"---\ntitle: Recipe for minigame instance countdown states\ndescription: This page defines a recipe (pre-written code snippet) for an instance countdown game state, that can be copied by a developer instead of manually writing it.\nnavigation:\n  title: Instance countdown states\n---\n\n# Minigame instance countdown states\n\nBelow is an example for a mini-game instance countdown state for `vital-minigames`.  \nIn a game, only one state can currently be active at a given time.\n\nOnly the currently active state will receive events and decrease the countdown.  \nThe example shown below will define a countdown of 10 seconds that will decrease every 1 second.\n\n```java [MyInstanceCountdownState.java]\n@VitalCountdown.Info(interval = 1_000, countdown = 10)\npublic class MyInstanceCountdownState extends VitalMinigameInstanceCountdownState\u003CMyInstance> {\n\tpublic MyInstanceState(MyInstance instance) {\n\t\tsuper(instance);\n\t}\n\n\t@Override\n\tpublic void onEnable() {\n\t\tfor (final var player : getInstance().getWorld().getPlayers()) {\n\t\t\tplayer.sendMessage(\"This instance countdown state was enabled.\");\n\t\t}\n\t}\n\n\t@Override\n\tpublic void onDisable() {\n\t\tfor (final var player : getInstance().getWorld().getPlayers()) {\n\t\t\tplayer.sendMessage(\"This instance countdown state was disabled.\");\n\t\t}\n\t}\n\n\t@Override\n\tpublic void onStart() {\n\t\tfor (final var player : getInstance().getWorld().getPlayers()) {\n\t\t\tplayer.sendMessage(\"This instance countdown state countdown was started.\");\n\t\t}\n\t}\n\n\t@Override\n\tpublic void onTick() {\n\t\tfor (final var player : getInstance().getWorld().getPlayers()) {\n\t\t\tplayer.sendMessage(\"This instance countdown state was ticked.\");\n\t\t}\n\t}\n\n\t@Override\n\tpublic void onExpire() {\n\t\tfor (final var player : getInstance().getWorld().getPlayers()) {\n\t\t\tplayer.sendMessage(\"This instance countdown state has expired.\");\n\t\t}\n\t}\n\n\t@EventHandler\n\tpublic void onPlayerJoin(PlayerJoinEvent e) {\n\t\te.getPlayer().sendMessage(\"You joined this instance countdown state.\");\n\t}\n}\n```\n\nBecause multiple instances can have multiple states, you can’t define an instance state as a Spring bean.  \nJust store your states directly in your instances and switch between them using `setState(VitalMinigameInstanceState)`\n\n```java [MyInstance.java]\npublic class MyInstance extends VitalMinigameInstance {\n\tprivate MyInstanceCountdownState myInstanceCountdownState = new MyInstanceCountdownState(this);\n\n\t\u002F\u002F Getters and setters.\n\n\t@EventHandler\n\tpublic void onPlayerJoin(PlayerJoinEvent e) {\n\t\tsetState(myInstanceCountdownState);\n\t}\n}\n```\n",{"title":402,"description":1198},"X3xGKFFrsdzGOKITBIa-cx5_sH4EF0hkrsRyaGD6Hiw",1789308660738]