package Ġworld . ce pi . orche stra . api Ċ Ċ import Ġnet . min est om . server . entity . Player Ċ import Ġnet . min est om . server . timer . Task Ċ import Ġnet . min est om . server . utils . time . TimeUnit Ċ import Ġworld . ce pi . k st om . Manager Ċ import Ġworld . ce pi . k st om . util . component 1 Ċ import Ġworld . ce pi . k st om . util . component 2 Ċ import Ġworld . ce pi . k st om . util . component 3 Ċ import Ġworld . ce pi . orche stra . api . data . formatted . Custom Instrument Ċ import Ġworld . ce pi . orche stra . api . data . formatted . Song Header Ċ import Ġworld . ce pi . orche stra . api . data . formatted . Song Layer Ċ import Ġworld . ce pi . orche stra . api . data . formatted . Song Map Ċ import Ġjava . time . Duration Ċ Ċ class ĠSong Player Instance ( ĊĠĠĠ Ġval Ġmap : ĠSong Map , ĊĠĠĠ Ġval Ġplayer : ĠPlayer , ĊĠĠĠ Ġtempo : ĠDouble , ĊĠĠĠ Ġval Ġcustom Instrument s : ĠList < Custom Instrument > Ġ= ĠlistOf (), ĊĠĠĠ Ġval Ġlayers : ĠList < Song Layer > Ġ= ĠlistOf (), ĊĠĠĠ Ġval Ġheader : ĠSong Header Ċ ) Ġ{ ĊĊĠĠĠ Ġvar Ġtempo : ĠDouble Ġ= Ġtempo ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresume () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġstep Ġ= Ġ 0 ĊĊĠĠĠ Ġvar Ġtask : ĠTask ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġresume () Ġ{ ĊĠĠĠĠĠĠĠ Ġstop () ĊĊĠĠĠĠĠĠĠ Ġtask Ġ= ĠManager . scheduler . build Task Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( x , Ġy , Ġz ) Ġ= Ġplayer . position ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap . map [ step ]?. forEach Ġ{ Ġnote Pair Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote Pair . value . play To Audience ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx , Ġy , Ġz , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Instrument s , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayers [ note Pair . key ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. repeat ( Duration . of (( 2 0 Ġ/ Ġtempo ). to Long (), ĠTimeUnit . SERVER _ TICK )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. schedule () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop () Ġ= Ġtask ?. cancel () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġresume () ĊĠĠĠ Ġ} Ċ Ċ }