/** Ċ Ġ* ĠActor Ġmanipulation Ġcommands , Ġfor Ġusers Ċ Ġ*/ Ċ Ċ package Ġph on on . puppet . commands Ċ Ċ import Ġorg . bukkit . Bu kkit Ċ import Ġorg . bukkit . Location Ċ import Ġorg . bukkit . Material Ċ import Ġorg . bukkit . Chat Color Ċ import Ġorg . bukkit . entity . Player Ċ import Ġorg . bukkit . command . Command Ċ import Ġorg . bukkit . command . Command Executor Ċ import Ġorg . bukkit . command . Command Sender Ċ import Ġorg . bukkit . command . Tab Comp leter Ċ import Ġph on on . puppet . P uppet Ċ import Ġph on on . puppet . Config Ċ import Ġph on on . puppet . Message Ċ import Ġph on on . puppet . math .* Ċ import Ġph on on . puppet . objects .* Ċ import Ġph on on . puppet . animation .* Ċ import Ġph on on . puppet . utils . filter By Start Ċ Ċ // Ġlist Ġof Ġall Ġsub commands , Ġused Ġfor Ġon Tab Complete Ċ private Ġval ĠSUB COMMAND S : ĠList < String > Ġ= ĠlistOf ( ĊĠĠĠ Ġ" help ", ĊĠĠĠ Ġ" info ", ĊĠĠĠ Ġ" create ", ĊĠĠĠ Ġ" kill ", ĊĠĠĠ Ġ" kill all ", ĊĠĠĠ Ġ" list ", ĊĠĠĠ Ġ" models ", ĊĠĠĠ Ġ" mesh ", ĊĠĠĠ Ġ" reset ", ĊĠĠĠ Ġ" bone ", ĊĠĠĠ Ġ" move ", ĊĠĠĠ Ġ" tele port ", ĊĠĠĠ Ġ" rotate ", ĊĠĠĠ Ġ" pose ", ĊĠĠĠ Ġ" armor stand s ", ĊĠĠĠ Ġ" anim info ", ĊĠĠĠ Ġ" anim list ", ĊĠĠĠ Ġ" play ", ĊĠĠĠ Ġ" pause ", ĊĠĠĠ Ġ" stop ", ĊĠĠĠ Ġ" stop all ", ĊĠĠĠ Ġ" start ", ĊĠĠĠ Ġ" step ", ĊĠĠĠ Ġ" restart " Ċ ) Ċ Ċ public Ġclass ĠActor Command Ġ: ĠCommand Executor , ĠTab Comp leter Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Command ( sender : ĠCommand Sender , Ġcmd : ĠCommand , Ġcommand Label : ĠString , Ġargs : ĠArray < String >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġif Ġ( Ġsender Ġis ĠPlayer Ġ) Ġsender Ġelse Ġnull ĊĠĠĠĠĊĠĠĠĠĠĠĠ Ġ// Ġno Ġargs , Ġprint Ġplugin Ġinfo ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ== Ġ 0 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint Info ( sender ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġparse Ġsub command ĊĠĠĠĠĠĠĠ Ġwhen Ġ( Ġargs [ 0 ]. toLowerCase () Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" help " Ġ-> Ġprint Help ( sender ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" info " Ġ-> Ġactor Info ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" create " Ġ-> Ġcreate Actor ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" mesh " Ġ-> Ġcreate Mesh ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" kill " Ġ-> Ġkill Actor ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" kill all " Ġ-> Ġkill All Actor ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" list " Ġ-> Ġlist Act ors ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" models " Ġ-> Ġprint Models ( sender ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" reset " Ġ-> Ġreset Actor Pose ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" move " Ġ-> Ġmove Actor ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" tele port " Ġ-> Ġtele port Actor ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" rotate " Ġ-> Ġrotate Actor ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" pose " Ġ-> Ġpose Actor ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" armor stand s " Ġ-> Ġtoggle Armor St ands ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" anim info " Ġ-> Ġanimation Info ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" anim list " Ġ-> Ġlist Animations ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" play " Ġ-> Ġplay Animation ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" pause " Ġ-> Ġpause Animation ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" stop " Ġ-> Ġstop Animation ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" stop all " Ġ-> Ġstop All Animation ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" start " Ġ-> Ġstart Animation ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" step " Ġ-> Ġstep Animation ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" restart " Ġ-> Ġrestart Animation ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" bone " Ġ-> Ġbone Commands ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĠMessage . error ( sender , Ġ" Invalid Ġcommand , Ġuse Ġ\" / actor Ġhelp \" ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Tab Complete ( sender : ĠCommand Sender , Ġcommand : ĠCommand , Ġalias : ĠString , Ġargs : ĠArray < String >): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġmatch Ġsub command ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ== Ġ 1 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter By Start ( SUB COMMAND S , Ġargs [ 0 ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġmatch Ġeach Ġsub command Ġformat ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( Ġargs . size Ġ> Ġ 1 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhandle Ġspecific Ġsub commands ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( Ġargs [ 0 ]. toLowerCase () Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" create " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ== Ġ 2 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter By Start ( Actor . types (), Ġargs [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" anim info " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ== Ġ 2 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter By Start ( Animation Track . list (), Ġargs [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ/ actor Ġ[ sub command ] Ġ[ x ] Ġ[ y ] Ġ[ z ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" move ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tele port ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" rotate " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ>= Ġ 5 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter By Start ( P uppet . get Actor Names (), Ġargs [ args . size - 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ/ actor Ġ[ sub command ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" info ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" kill ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" reset ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pose ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pause ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" start ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" stop all ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" step ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" restart " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ>= Ġ 2 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter By Start ( P uppet . get Actor Names (), Ġargs [ args . size - 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ/ actor Ġplay Ġ[ animation ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" play ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" stop " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ== Ġ 2 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter By Start ( Animation Track . list (), Ġargs [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( Ġargs . size Ġ>= Ġ 3 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter By Start ( P uppet . get Actor Names (), Ġargs [ args . size - 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ/ actor Ġarm or stand s Ġ[ show / hide ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" armor stand s " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ== Ġ 2 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter By Start ( listOf (" show ", Ġ" hide "), Ġargs [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( Ġargs . size Ġ>= Ġ 3 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter By Start ( P uppet . get Actor Names (), Ġargs [ args . size - 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ/ actor Ġbone Ġ[ sub command ] Ġ[ actor ] Ġ[ bone ] Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" bone " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ== Ġ 2 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter By Start ( listOf (" info ", Ġ" rotate ", Ġ" position "), Ġargs [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( Ġargs . size Ġ== Ġ 3 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter By Start ( P uppet . get Actor Names (), Ġargs [ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( Ġargs . size Ġ== Ġ 4 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactor Name Ġ= Ġargs [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġskeleton Ġ= ĠP uppet . get Actor ( actor Name )?. skeleton ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġskeleton Ġ=== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter By Start ( skeleton . bones . keys . toList (), Ġargs [ 3 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPrint Ġengine Ġinfo ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġprint Info ( sender : ĠCommand Sender ) Ġ{ ĊĠĠĠĠĠĠĠ ĠP uppet . print Info ( sender ) ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Type Ġ\" / actor Ġhelp \" Ġto Ġsee Ġlist Ġof Ġactor Ġcommands .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġhelp ĊĠĠĠĠ Ġ* ĠPrint Ġcommand Ġlist Ġand Ġdescriptions ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġprint Help ( sender : ĠCommand Sender ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"[ P uppet ] ĠActor ĠCommands :") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġinfo ${ Chat Color . WHITE }: ĠPrint Ġinfo Ġabout Ġactor ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġcreate ${ Chat Color . WHITE }: ĠCreate Ġan Ġactor ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġmesh ${ Chat Color . WHITE }: ĠCreate Ġmesh Ġtype Ġactor ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġkill ${ Chat Color . WHITE }: ĠKill Ġan Ġactor ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġkill all ${ Chat Color . WHITE }: ĠKill Ġall Ġactors ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġlist ${ Chat Color . WHITE }: ĠList Ġactors Ġcreated ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġmodels ${ Chat Color . WHITE }: ĠList Ġall Ġavailable Ġmodels ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġreset ${ Chat Color . WHITE }: ĠReset Ġactor Ġpose Ġto Ġdefault ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġmove ${ Chat Color . WHITE }: ĠAdjust Ġactor Ġposition ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġtele port ${ Chat Color . WHITE }: ĠTele port Ġactor Ġto Ġlocation ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġrotate ${ Chat Color . WHITE }: ĠAdjust Ġactor Ġrotation ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġpose ${ Chat Color . WHITE }: ĠAdjust Ġactor Ġposition / rotation Ġusing Ġplayer Ġmovement ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġarm or stand s ${ Chat Color . WHITE }: ĠShow Ġactor ĠArm or ĠSt ands ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġanim info ${ Chat Color . WHITE }: ĠPrint Ġinfo Ġabout Ġan Ġanimation ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġanim list ${ Chat Color . WHITE }: ĠList Ġall Ġanimations ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġplay ${ Chat Color . WHITE }: ĠMake Ġactor Ġplay Ġanimation ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġpause ${ Chat Color . WHITE }: ĠStop Ġactor Ġanimation Ġ( can Ġresume )") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġstart ${ Chat Color . WHITE }: ĠStart Ġplaying Ġactor Ġanimations ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġstop ${ Chat Color . WHITE }: ĠStop Ġand Ġremove Ġactor Ġanimations ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġstop all ${ Chat Color . WHITE }: ĠStop Ġand Ġremove Ġall Ġactor Ġanimations ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġstep ${ Chat Color . WHITE }: ĠRun Ġ 1 Ġanimation Ġframe Ġfor Ġactor ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġrestart ${ Chat Color . WHITE }: ĠRestart Ġanimation ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġbone Ġinfo ${ Chat Color . WHITE }: ĠPrint Ġactor Ġbone Ġinfo ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġbone Ġrotate ${ Chat Color . WHITE }: ĠSet Ġactor Ġbone Ġrotation ") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġbone Ġposition ${ Chat Color . WHITE }: ĠSet Ġactor Ġbone Ġposition ") ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġinfo Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠ Ġ* ĠPrint Ġinfo Ġabout Ġactors Ġin Ġinput Ġlist Ġor Ġfrom Ġwhat ĊĠĠĠĠ Ġ* Ġplayer Ġis Ġlooking Ġat . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġactor Info ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġget Ġactor Ġtargets ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= Ġget Actor Targets ( sender , Ġargs , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Ġtargets . size Ġ== Ġ 0 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġinfo : Ġinfo Ġfor Ġactor Ġplayer Ġis Ġlooking Ġat ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġinfo Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... : Ġinfo Ġfor Ġactor Ġid ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġactor Ġin Ġtargets Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Actor : Ġ${ actor . name }") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"- Ġskeleton : Ġ${ actor . skeleton ?. name Ġ?: Ġ" none "} ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"- Ġanimations :") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( Ġanim Ġin Ġactor . animation . playing . keys Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" ĠĠ Ġ- Ġ${ anim }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġcreate Ġ[ type ] Ġ[ x ] Ġ[ y ] Ġ[ z ] ĊĠĠĠĠ Ġ* ĠCreate Ġan Ġactor Ġwith Ġgiven Ġtype Ġat Ġplayer Ġlocation , ĊĠĠĠĠ Ġ* Ġor Ġ( x , Ġy , Ġz ) Ġif Ġthose Ġare Ġentered . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcreate Actor ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 2 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġcreate Ġ[ type ] Ġ[ x ] Ġ[ y ] Ġ[ z ]") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Will Ġcreate Ġat Ġplayer Ġlocation Ġif Ġ( x , Ġy , Ġz ) Ġnot Ġspecified .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġif Ġ( Ġsender Ġis ĠPlayer Ġ) Ġsender Ġelse Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġspawn Location Ġ= Ġif Ġ( Ġplayer Ġ=== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 5 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġcreate Ġ[ type ] Ġ[ x ] Ġ[ y ] Ġ[ z ]") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Must Ġenter Ġall Ġ( x , Ġy , Ġz ) Ġvalues .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġargs [ 2 ]. toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġargs [ 3 ]. toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġz Ġ= Ġargs [ 4 ]. toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocation ( Bu kkit . get World s ()[ 0 ], Ġx , Ġy , Ġz ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . location ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġargs [ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠP uppet . create Actor At Location ( type , Ġspawn Location ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Ġresult . is Success Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactor Ġ= Ġresult . get OrNull () !! ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Created Ġactor Ġ${ type } Ġnamed Ġ\" ${ actor . name }\" Ġat Ġ(${ spawn Location . x }, Ġ${ spawn Location . y }, Ġ${ spawn Location . z }) ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Invalid Ġmesh Ġtype : Ġ${ type }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġmesh Ġ[ type ] Ġ[ x ] Ġ[ y ] Ġ[ z ] ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġsingle Ġmodel Ġ" mesh " Ġactor Ġwith Ġgiven Ġmodel ĊĠĠĠĠ Ġ* Ġtype Ġat Ġplayer Ġlocation Ġor Ġ( x , Ġy , Ġz ) Ġif Ġthose Ġare Ġentered . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcreate Mesh ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 2 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġmesh Ġ[ type ] Ġ[ x ] Ġ[ y ] Ġ[ z ]") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Will Ġcreate Ġat Ġplayer Ġlocation Ġif Ġ( x , Ġy , Ġz ) Ġnot Ġspecified .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġif Ġ( Ġsender Ġis ĠPlayer Ġ) Ġsender Ġelse Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġspawn Location Ġ= Ġif Ġ( Ġplayer Ġ=== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 5 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġmesh Ġ[ type ] Ġ[ x ] Ġ[ y ] Ġ[ z ]") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Must Ġenter Ġall Ġ( x , Ġy , Ġz ) Ġvalues .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġargs [ 2 ]. toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġargs [ 3 ]. toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġz Ġ= Ġargs [ 4 ]. toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocation ( Bu kkit . get World s ()[ 0 ], Ġx , Ġy , Ġz ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . location ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġargs [ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠP uppet . create Mesh At Location ( type , Ġspawn Location ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Ġresult . is Success Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactor Ġ= Ġresult . get OrNull () !! ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Created Ġmesh Ġ${ type } Ġnamed Ġ\" ${ actor . name }\" Ġat Ġ(${ spawn Location . x }, Ġ${ spawn Location . y }, Ġ${ spawn Location . z }) ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Invalid Ġmesh Ġtype : Ġ${ type }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġkill Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠ Ġ* ĠRemove Ġactor . ĠWill Ġremove Ġactors Ġfrom Ġlist Ġof Ġnames , ĊĠĠĠĠ Ġ* Ġor Ġthe Ġactor Ġthe Ġplayer Ġis Ġlooking Ġat . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġkill Actor ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġactor Ġtargets ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= Ġget Actor Targets ( sender , Ġargs , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Ġtargets . size Ġ< Ġ 1 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġkill Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" If Ġno Ġactor Ġids Ġare Ġspecified , Ġit Ġwill Ġrun Ġon Ġactor Ġplayer Ġis Ġlooking Ġat ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġactor Ġin Ġtargets Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠP uppet . destroy Actor ( actor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Destroyed Ġactor Ġ\" ${ actor . name }\" ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġkill all ĊĠĠĠĠ Ġ* ĠRemove Ġall Ġactors Ġcurrently Ġin Ġgame . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġkill All Actor ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġsender Ġis ĠPlayer Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplayer : ĠPlayer Ġ= Ġsender ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġ! player . is Op () Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Only Ġop Ġplayers Ġcan Ġuse Ġ/ actor Ġkill all ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠP uppet . destroy All Act ors () ĊĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Destroyed Ġall Ġactors ") ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġlist ĊĠĠĠĠ Ġ* ĠPrint Ġlist Ġof Ġactors Ġcurrently Ġin Ġgame Ġand Ġtheir Ġlocation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġlist Act ors ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Act ors Ġcurrently Ġin Ġgame :") ĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġ( name , Ġactor ) Ġin ĠP uppet . actors Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġactor . position ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"- Ġ${ name }: Ġ(${ p . x }, Ġ${ p . y }, Ġ${ p . z }) ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġmodels ĊĠĠĠĠ Ġ* Ġprint Ġlist Ġof Ġcustom Ġmodel Ġdata ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġprint Models ( sender : ĠCommand Sender ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġsender Ġ!== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMesh . print Info ( sender ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġreset Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠ Ġ* ĠReset Ġactor Ġrotation Ġand Ġall Ġbone Ġpo ses . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġreset Actor Pose ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġget Ġactor Ġtargets ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= Ġget Actor Targets ( sender , Ġargs , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Ġtargets . size Ġ< Ġ 1 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġreset : Ġrun Ġon Ġactor Ġyou Ġare Ġlooking Ġat ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġreset Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... : Ġrun Ġon Ġactor Ġlist ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġrun Ġon Ġtargets ĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġactor Ġin Ġtargets Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġreset Ġrotation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactor . setRotation ( 0 . 0 , Ġ 0 . 0 , Ġ 0 . 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġskeleton Ġ= Ġactor . skeleton ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġskeleton Ġ!== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskeleton . reset () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Reset ting Ġactor Ġ\" ${ actor . name }\" Ġpose .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Actor Ġ\" ${ actor . name }\" Ġhas Ġno Ġbones .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġmove Ġ[ x ] Ġ[ y ] Ġ[ z ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠ Ġ* ĠMove Ġactors Ġby Ġ( x , Ġy , Ġz ) Ġrelative Ġto Ġits Ġcurrent Ġlocation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmove Actor ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 4 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġmove Ġ[ x ] Ġ[ y ] Ġ[ z ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" If Ġno Ġactor Ġids Ġare Ġspecified , Ġit Ġwill Ġrun Ġon Ġactor Ġplayer Ġis Ġlooking Ġat ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( Ġargs . size Ġ< Ġ 5 Ġ&& Ġ!( sender Ġis ĠPlayer ) Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġmove Ġ[ x ] Ġ[ y ] Ġ[ z ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Actor Ġid Ġrequired Ġif Ġyou Ġare Ġnot Ġa Ġplayer Ġin Ġgame ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġx , Ġy , Ġz ĊĠĠĠĠĠĠĠ Ġval Ġdx Ġ= Ġargs [ 1 ]. toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġdy Ġ= Ġargs [ 2 ]. toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġdz Ġ= Ġargs [ 3 ]. toDouble () ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġactor Ġtargets ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= Ġget Actor Targets ( sender , Ġargs , Ġ 4 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġrun Ġon Ġtargets ĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġactor Ġin Ġtargets Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġactor . position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactor . setPosition ( p . x Ġ+ Ġdx , Ġp . y Ġ+ Ġdy , Ġp . z Ġ+ Ġdz ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Moving Ġactor Ġ\" ${ actor . name }\" Ġby Ġ(${ dx }, Ġ${ dy }, Ġ${ dz }) ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġtele port Ġ[ x ] Ġ[ y ] Ġ[ z ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠ Ġ* ĠMove Ġactor Ġto Ġ( x , Ġy , Ġz ) Ġlocation Ġin Ġits Ġworld . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġtele port Actor ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 4 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġtele port Ġ[ x ] Ġ[ y ] Ġ[ z ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" If Ġno Ġactor Ġids Ġare Ġspecified , Ġit Ġwill Ġrun Ġon Ġactor Ġplayer Ġis Ġlooking Ġat ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( Ġargs . size Ġ< Ġ 5 Ġ&& Ġ!( sender Ġis ĠPlayer ) Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġtele port Ġ[ x ] Ġ[ y ] Ġ[ z ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Actor Ġid Ġrequired Ġif Ġyou Ġare Ġnot Ġa Ġplayer Ġin Ġgame ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġx , Ġy , Ġz ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġargs [ 1 ]. toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġargs [ 2 ]. toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġz Ġ= Ġargs [ 3 ]. toDouble () ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġactor Ġtargets ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= Ġget Actor Targets ( sender , Ġargs , Ġ 4 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġrun Ġon Ġtargets ĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġactor Ġin Ġtargets Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactor . setPosition ( x , Ġy , Ġz ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Teleport ing Ġactor Ġ\" ${ actor . name }\" Ġto Ġ(${ x }, Ġ${ y }, Ġ${ z }) ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġrotate Ġ[ x ] Ġ[ y ] Ġ[ z ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠ Ġ* ĠRotate Ġactor Ġby Ġ( x , Ġy , Ġz ) Ġrelative Ġto Ġits Ġcurrent Ġrotation . ĊĠĠĠĠ Ġ* ĠNote : ĠMinecraft Ġrotation Ġorder Ġis ĠZ YX . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrotate Actor ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 4 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġrotate Ġ[ x ] Ġ[ y ] Ġ[ z ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" If Ġno Ġactor Ġids Ġare Ġspecified , Ġit Ġwill Ġrun Ġon Ġactor Ġplayer Ġis Ġlooking Ġat ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( Ġargs . size Ġ< Ġ 5 Ġ&& Ġ!( sender Ġis ĠPlayer ) Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġrotate Ġ[ x ] Ġ[ y ] Ġ[ z ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Actor Ġid Ġrequired Ġif Ġyou Ġare Ġnot Ġa Ġplayer Ġin Ġgame ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġx , Ġy , Ġz ĊĠĠĠĠĠĠĠ Ġval Ġdx Deg Ġ= Ġargs [ 1 ]. toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġdy Deg Ġ= Ġargs [ 2 ]. toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġdz Deg Ġ= Ġargs [ 3 ]. toDouble () ĊĊĠĠĠĠĠĠĠ Ġval Ġdx Ġ= ĠMath . to Radians ( dx Deg ) ĊĠĠĠĠĠĠĠ Ġval Ġdy Ġ= ĠMath . to Radians ( dy Deg ) ĊĠĠĠĠĠĠĠ Ġval Ġdz Ġ= ĠMath . to Radians ( dz Deg ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġactor Ġtargets ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= Ġget Actor Targets ( sender , Ġargs , Ġ 4 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġrun Ġon Ġtargets ĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġactor Ġin Ġtargets Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġactor . rotation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactor . setRotation ( r . x Ġ+ Ġdx , Ġr . y Ġ+ Ġdy , Ġr . z Ġ+ Ġdz ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Rot ating Ġactor Ġ\" ${ actor . name }\" Ġby Ġ(${ dx Deg }, Ġ${ dy Deg }, Ġ${ dz Deg }) ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġpose Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠ Ġ* ĠMove Ġand Ġrotate Ġactor Ġusing Ġplayer Ġmovement . ĠThe Ġactor ĊĠĠĠĠ Ġ* Ġwill Ġmove Ġwith Ġplayer Ġand Ġface Ġsame Ġdirection Ġas Ġplayer . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġpose Actor ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġif Ġ( Ġsender Ġis ĠPlayer Ġ) Ġsender Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġplayer Ġ=== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 2 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpos ing Actor Ġ= ĠP uppet . player Pos ing Actor . get ( player ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġpos ing Actor Ġ!== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP uppet . player Pos ing Actor . remove ( player ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( player , Ġ" Stopped Ġpos ing Ġactor : Ġ${ posing Actor . name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġactor Ġtargets ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= Ġget Actor Targets ( sender , Ġargs , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġrun Ġon Ġtargets ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġallow Ġthis Ġto Ġwork Ġon Ġmultiple Ġactors ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġtargets . size Ġ>= Ġ 1 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactor Ġ= Ġtargets [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP uppet . player Pos ing Actor . put ( player , Ġactor ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Pos ing Ġactor Ġ\" ${ actor . name }\" Ġby Ġplayer Ġmovement ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"( Type Ġ\" / actor Ġpose \" Ġagain Ġto Ġstop Ġpos ing )") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġpose Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġarm or stand s Ġ[ show / hide ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠ Ġ* ĠShow Ġor Ġhide ĠArm or Stand Ġentities Ġused Ġfor Ġanim ating ĊĠĠĠĠ Ġ* Ġactor Ġmodels . ĠUsed Ġfor Ġdebug . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġtoggle Armor St ands ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 2 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Usage : Ġ/ actor Ġarm or stand s Ġ[ show / hide ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġvisible : ĠBoolean Ġ= Ġwhen Ġ( Ġargs [ 1 ]. toLowerCase () Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" show " Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" hide " Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġactor Ġtargets ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= Ġget Actor Targets ( sender , Ġargs , Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġrun Ġon Ġtargets ĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġactor Ġin Ġtargets Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP uppet . toggle Armor St ands ( actor , Ġvisible ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Set Ġactor Ġ\" ${ actor . name }\" Ġarm or Ġstands Ġvis ib l ity : Ġ${ visible }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġanim list ĊĠĠĠĠ Ġ* ĠPrint Ġlist Ġof Ġall Ġavailable Ġanimations ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġlist Animations ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Animations :") ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval Ġanimations Ġ= ĠAnimation Track . list () ĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġname Ġin Ġanimations Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"- Ġ${ name }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġanim info Ġ[ animation ] ĊĠĠĠĠ Ġ* ĠPrint Ġinformation Ġabout Ġan Ġanimation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġanimation Info ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 2 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Usage : Ġ/ actor Ġanim info Ġ[ animation ]") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval Ġanim Track Ġ= ĠAnimation Track . get ( args [ 1 ]) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Ġanim Track Ġ=== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Animation Ġ\" ${ args [ 1 ]} \" Ġdoes Ġnot Ġexist ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Animation : Ġ${ anim Track . name }") ĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"- Ġlength : Ġ${ anim Track . length }") ĊĊĠĠĠĠĠĠĠ Ġ// Ġprint Ġtrack Ġvalues Ġat Ġtime ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ> Ġ 2 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbone Name Ġ= Ġargs [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransform Tracks Ġ= Ġanim Track . transform Tracks . get ( bone Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġtransform Tracks Ġ!== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"- Ġposition : Ġ${ transform Tracks . position ?. content ToString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"- Ġquaternion : Ġ${ transform Tracks . qu aternion ?. content ToString () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġplay Ġ[ animation ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠ Ġ* ĠMake Ġactors Ġplay Ġanimation Ġfrom Ġname Ġ`[ animation ] `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġplay Animation ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 2 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġplay Ġ[ animation ]: Ġrun Ġon Ġactor Ġyou Ġare Ġlooking Ġat ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġplay Ġ[ animation ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... : Ġrun Ġon Ġactor Ġlist ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġanimation Ġname ĊĠĠĠĠĠĠĠ Ġval Ġanim Name Ġ= Ġargs [ 1 ] ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġactor Ġtargets ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= Ġget Actor Targets ( sender , Ġargs , Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġrun Ġon Ġtargets ĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġactor Ġin Ġtargets Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactor . animation . play ( anim Name , Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Actor Ġ\" ${ actor . name }\" Ġplaying : Ġ\" ${ anim Name }\" ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġstop Ġ[ animation ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠ Ġ* ĠStop Ġactor Ġfrom Ġplaying Ġanimation Ġfrom Ġname Ġ`[ animation ] `. ĊĠĠĠĠ Ġ* ĠUn like Ġpause , Ġthis Ġremoves Ġa Ġspecific Ġanimation Ġfrom Ġthe Ġactor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġstop Animation ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 2 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġstop Ġ[ animation ]: Ġrun Ġon Ġactor Ġyou Ġare Ġlooking Ġat ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġstop Ġ[ animation ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... : Ġrun Ġon Ġactor Ġlist ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġ// Ġanimation Ġname ĊĠĠĠĠĠĠĠ Ġval Ġanim Name Ġ= Ġargs [ 1 ] ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġactor Ġtargets ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= Ġget Actor Targets ( sender , Ġargs , Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġrun Ġon Ġtargets ĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġactor Ġin Ġtargets Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactor . animation . stop ( anim Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Actor Ġ\" ${ actor . name }\" Ġstopped Ġplaying : Ġ\" ${ anim Name }\" .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġstop all Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠ Ġ* ĠStop Ġall Ġactor Ġanimations . ĠUn like Ġpause , Ġthis Ġremoves ĊĠĠĠĠ Ġ* Ġall Ġanimations Ġfrom Ġthe Ġactor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġstop All Animation ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġget Ġactor Ġtargets ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= Ġget Actor Targets ( sender , Ġargs , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Ġtargets . size Ġ< Ġ 1 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġstop all : Ġrun Ġon Ġactor Ġyou Ġare Ġlooking Ġat ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġstop all Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... : Ġrun Ġon Ġactor Ġlist ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġ// Ġrun Ġon Ġtargets ĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġactor Ġin Ġtargets Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactor . animation . stop All () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Actor Ġ\" ${ actor . name }\" Ġstopped Ġall Ġanimations .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġpause Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠ Ġ* ĠPause Ġactor Ġfrom Ġplaying Ġall Ġanimations . ĠThis Ġwill Ġnot ĊĠĠĠĠ Ġ* Ġremove Ġany Ġanimations , Ġit Ġwill Ġonly Ġstop Ġanimations ĊĠĠĠĠ Ġ* Ġfrom Ġupdating . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġpause Animation ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġget Ġactor Ġtargets ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= Ġget Actor Targets ( sender , Ġargs , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Ġtargets . size Ġ< Ġ 1 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġpause : Ġrun Ġon Ġactor Ġyou Ġare Ġlooking Ġat ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġpause Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... : Ġrun Ġon Ġactor Ġlist ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġ// Ġrun Ġon Ġtargets ĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġactor Ġin Ġtargets Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactor . animation . enable ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Actor Ġ\" ${ actor . name }\" Ġpaused Ġanimations .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġstart Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠ Ġ* ĠStart Ġ( un pause ) Ġactor Ġanimations . ĠUse Ġthis Ġafter Ġ`/ actor Ġpause ` ĊĠĠĠĠ Ġ* Ġto Ġstart Ġanimations Ġagain . ĠĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġstart Animation ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġget Ġactor Ġtargets ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= Ġget Actor Targets ( sender , Ġargs , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Ġtargets . size Ġ< Ġ 1 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġstart : Ġrun Ġon Ġactor Ġyou Ġare Ġlooking Ġat ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġstart Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... : Ġrun Ġon Ġactor Ġlist ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġrun Ġon Ġtargets ĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġactor Ġin Ġtargets Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactor . animation . enable ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Actor Ġ\" ${ actor . name }\" Ġun paused Ġanimations .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġstep Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠ Ġ* ĠRun Ġsingle Ġanimation Ġupdate Ġstep Ġfor Ġactors . ĊĠĠĠĠ Ġ* ĠThis Ġworks Ġon Ġpaused Ġactors , Ġso Ġyou Ġcan Ġview ĊĠĠĠĠ Ġ* Ġanimations Ġframe - by - frame . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġstep Animation ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġget Ġactor Ġtargets ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= Ġget Actor Targets ( sender , Ġargs , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Ġtargets . size Ġ< Ġ 1 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġstep : Ġrun Ġon Ġactor Ġyou Ġare Ġlooking Ġat ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġstep Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... : Ġrun Ġon Ġactor Ġlist ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġrun Ġon Ġtargets ĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġactor Ġin Ġtargets Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġengine Ġrunning , Ġjust Ġupdate Ġanimation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ĠP uppet . isRunning Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactor . animation . update () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ Ġ// Ġupdate Ġfull Ġactor Ġtransform Ġand Ġmanually Ġrender ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactor . update () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactor . render () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Actor Ġ\" ${ actor . name }\" Ġste pped Ġanimation Ġby Ġ 1 Ġtick .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġrestart Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... ĊĠĠĠĠ Ġ* ĠRestart Ġall Ġanimations Ġfrom Ġtheir Ġinitial Ġframe . ĊĠĠĠĠ Ġ* ĠUse Ġthis Ġto Ġsync Ġanimations Ġacross Ġmultiple Ġactors . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrestart Animation ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġget Ġactor Ġtargets ĊĠĠĠĠĠĠĠ Ġval Ġtargets Ġ= Ġget Actor Targets ( sender , Ġargs , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġif Ġ( Ġtargets . size Ġ< Ġ 1 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġrestart : Ġrun Ġon Ġactor Ġyou Ġare Ġlooking Ġat ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġrestart Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ... : Ġrun Ġon Ġactor Ġlist ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġ// Ġrun Ġon Ġtargets ĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġactor Ġin Ġtargets Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactor . animation . restart () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Actor Ġ\" ${ actor . name }\" Ġrestarted Ġall Ġanimations .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ// ================================ ======= ĊĠĠĠ Ġ// ĠB one Ġpose Ġcommands ĊĠĠĠ Ġ// Ġ================================= ===== ĊĠĠĠ Ġprivate Ġfun Ġbone Commands ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġprint Bone Command Info ( sender : ĠCommand Sender ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Actor Ġbone Ġcommands :") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġbone Ġinfo ${ Chat Color . WHITE }: ĠPrint Ġactor Ġbone Ġinfo ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġbone Ġrotate ${ Chat Color . WHITE }: ĠSet Ġactor Ġbone Ġrotation ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ"/ actor Ġbone Ġposition ${ Chat Color . WHITE }: ĠSet Ġactor Ġbone Ġposition ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Use Ġcommand Ġwith Ġno Ġarguments Ġto Ġsee Ġusage .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġparse Ġsub command : Ġ/ actor Ġbone Ġ[ sub command ] ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 2 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint Bone Command Info ( sender ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( Ġargs [ 1 ]. toLowerCase () Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" info " Ġ-> Ġprint Bone Info ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" rotate " Ġ-> Ġset Bone Rotation ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" position " Ġ-> Ġset Bone Position ( sender , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Invalid Ġ/ actor Ġbone Ġsub command ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint Bone Command Info ( sender ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġbone Ġinfo Ġ[ actor ] Ġ[ bone ] ĊĠĠĠĠ Ġ* ĠPrints Ġinfo Ġ( position , Ġrotation , Ġ...) Ġabout Ġa Ġbone Ġin Ġan ĊĠĠĠĠ Ġ* Ġactor Ġskeleton . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġprint Bone Info ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 4 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġbone Ġinfo Ġ[ actor ] Ġ[ bone ]") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactor Name Ġ= Ġargs [ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġactor Ġ= ĠP uppet . get Actor ( actor Name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġactor Ġ=== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Invalid Ġactor : Ġ${ actor Name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbone Name Ġ= Ġargs [ 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġbone Ġ= Ġactor . skeleton ?. bones ?. get ( bone Name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġbone Ġ=== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Invalid Ġbone : Ġ${ bone Name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Actor Ġ\" ${ actor . name }\ ": ") ĊĠĠĠĠĠĠĠ Ġbone . print Info ( sender ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġbone Ġrotate Ġ[ actor ] Ġ[ bone ] Ġ[ x ] Ġ[ y ] Ġ[ z ] ĊĠĠĠĠ Ġ* ĠSet Ġrotation Ġfor Ġactor Ġnamed Ġ`[ actor ]` Ġbone Ġnamed Ġ`[ bone ]` ĊĠĠĠĠ Ġ* Ġto Ġe uler Ġangle Ġinput Ġ( x , Ġy , Ġz ) Ġin Ġdegrees . ĠE uler Ġrotation ĊĠĠĠĠ Ġ* Ġorder Ġis ĠZ YX . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Bone Rotation ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 4 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġbone Ġrotate Ġ[ actor ] Ġ[ bone ] Ġ[ x ] Ġ[ y ] Ġ[ z ]") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactor Name Ġ= Ġargs [ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġactor Ġ= ĠP uppet . get Actor ( actor Name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġactor Ġ=== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Invalid Ġactor : Ġ${ actor Name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbone Name Ġ= Ġargs [ 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġbone Ġ= Ġactor . skeleton ?. bones ?. get ( bone Name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġbone Ġ=== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Invalid Ġbone : Ġ${ bone Name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġnot Ġenough Ġinputs Ġargs Ġto Ġchange Ġbone ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 7 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġbone Ġrotate Ġ[ actor ] Ġ[ bone ] Ġ[ x ] Ġ[ y ] Ġ[ z ]") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Need Ġto Ġinput Ġall Ġ( x , Ġy , Ġz ) Ġvalues ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval Ġx Deg Ġ= Ġargs [ 4 ]. toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġy Deg Ġ= Ġargs [ 5 ]. toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġz Deg Ġ= Ġargs [ 6 ]. toDouble () ĊĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= ĠMath . to Radians ( x Deg ) ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= ĠMath . to Radians ( y Deg ) ĊĠĠĠĠĠĠĠ Ġval Ġz Ġ= ĠMath . to Radians ( z Deg ) ĊĊĠĠĠĠĠĠĠ Ġbone . setRotation ( x , Ġy , Ġz ) ĊĠĠĠĠĠĠĠ Ġactor . update () ĊĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Set Ġactor Ġ\" ${ actor . name }\" Ġbone Ġ\" ${ bone . name }\" Ġrotation Ġto Ġ(${ x Deg }, Ġ${ y Deg }, Ġ${ z Deg }) ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġneed Ġmanual Ġrender Ġif Ġengine Ġis Ġnot Ġrunning ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġ! P uppet . isRunning Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactor . render () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ command Ġ/ actor Ġbone Ġposition Ġ[ actor ] Ġ[ bone ] Ġ[ x ] Ġ[ y ] Ġ[ z ] ĊĠĠĠĠ Ġ* ĠSet Ġposition Ġfor Ġactor Ġnamed Ġ`[ actor ]` Ġbone Ġnamed Ġ`[ bone ]` ĊĠĠĠĠ Ġ* Ġto Ġinput Ġ( x , Ġy , Ġz ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġset Bone Position ( sender : ĠCommand Sender , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 4 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġbone Ġposition Ġ[ actor ] Ġ[ bone ] Ġ[ x ] Ġ[ y ] Ġ[ z ]") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactor Name Ġ= Ġargs [ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġactor Ġ= ĠP uppet . get Actor ( actor Name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġactor Ġ=== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Invalid Ġactor : Ġ${ actor Name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbone Name Ġ= Ġargs [ 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġbone Ġ= Ġactor . skeleton ?. bones ?. get ( bone Name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġbone Ġ=== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Invalid Ġbone : Ġ${ bone Name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġnot Ġenough Ġinputs Ġargs Ġto Ġchange Ġbone ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġargs . size Ġ< Ġ 7 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Usage : Ġ/ actor Ġbone Ġposition Ġ[ actor ] Ġ[ bone ] Ġ[ x ] Ġ[ y ] Ġ[ z ]") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Need Ġto Ġinput Ġall Ġ( x , Ġy , Ġz ) Ġvalues ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġargs [ 4 ]. toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġargs [ 5 ]. toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġz Ġ= Ġargs [ 6 ]. toDouble () ĊĊĠĠĠĠĠĠĠ Ġbone . setPosition ( x , Ġy , Ġz ) ĊĠĠĠĠĠĠĠ Ġactor . update () ĊĊĠĠĠĠĠĠĠ ĠMessage . print ( sender , Ġ" Set Ġactor Ġ\" ${ actor . name }\" Ġbone Ġ\" ${ bone . name }\" Ġposition Ġto Ġ(${ x }, Ġ${ y }, Ġ${ z }) ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġneed Ġmanual Ġrender Ġif Ġengine Ġis Ġnot Ġrunning ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġ! P uppet . isRunning Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactor . render () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠTyp ical Ġactor Ġcommand Ġformat Ġis : Ċ Ġ* ĠĊ Ġ* ĠĠĠĠ Ġ/ actor Ġsub command Ġ[ inputs ] Ġ[ actor 0 ] Ġ[ actor 1 ] Ġ[ actor 2 ] Ġ... Ċ Ġ* ĠĊ Ġ* ĠWhere Ġ[ actor 0 , Ġactor 1 , Ġactor 2 , Ġ...] Ġare Ġactor Ġnames Ġfor Ġtarget Ġof Ġcommand . Ċ Ġ* ĠIf Ġcommand Ġuser Ġis Ġing ame Ġand Ġno Ġnames Ġspecified , Ġthen Ġthe Ġactor Ġplayer Ċ Ġ* Ġis Ġlooking Ġat Ġbecomes Ġthe Ġtarget . ĠOtherwise , Ġparse Ġthis Ġlist Ġof Ġnames Ċ Ġ* Ġand Ġreturn Ġactors . Ċ Ġ* ĠĊ Ġ* Ġ" target StartIndex " Ġis Ġthe Ġposition Ġof Ġ[ actor 0 ] Ġis Ġthe Ġcommand Ġargs Ġarray . Ċ Ġ*/ Ċ private Ġfun Ġget Actor Targets ( sender : ĠCommand Sender , Ġargs : ĠArray < String >, Ġtarget StartIndex : ĠInt ): ĠList < Actor > Ġ{ ĊĠĠĠ Ġ// Ġuse Ġset Ġto Ġavoid Ġduplicate Ġactor Ġtargets ĊĠĠĠ Ġval Ġtargets : ĠMutable Set < Actor > Ġ= Ġmutable Set Of () ĊĠĠĠĠĊĠĠĠ Ġif Ġ( Ġargs . size Ġ<= Ġtarget StartIndex Ġ&& Ġ( sender Ġis ĠPlayer ) Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġno Ġids Ġlisted , Ġget Ġactor Ġplayer Ġis Ġlooking Ġat ĊĠĠĠĠĠĠĠ Ġval Ġactor Ġ= ĠP uppet . get Actor Player Is Looking At ( sender ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġactor Ġ!== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtargets . add ( actor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Invalid Ġcommand Ġtarget : Ġnot Ġlooking Ġat Ġan Ġactor ...") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġparse Ġlist Ġof Ġactor Ġid Ġtargets ĊĠĠĠĠĠĠĠ Ġfor Ġ( Ġi Ġin Ġtarget StartIndex Ġuntil Ġargs . size Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactor Name Ġ= Ġargs [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactor Ġ= ĠP uppet . get Actor ( actor Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġactor Ġ=== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . error ( sender , Ġ" Invalid Ġactor : Ġ${ actor Name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtargets . add ( actor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġreturn Ġtargets . toList () Ċ }