/* Ċ Ġ* ĠĠĠĠ ĠCopyright Ġ 2 0 1 4 - 2 0 1 7 ĠFuture man G aming Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . future m ang aming . future bot . music Ċ Ċ import Ġcom . sed mell uq . discord . lav ap layer . player . Audio Player Manager Ċ import Ġcom . sed mell uq . discord . lav ap layer . player . Default Audio Player Manager Ċ import Ġcom . sed mell uq . discord . lav ap layer . source . Audio Source Managers Ċ import Ġg nu . tro ve . map . hash . T Long Object HashMap Ċ import Ġnet . dv 8 tion . j da . core . entities . Guild Ċ import Ġnet . dv 8 tion . j da . core . entities . Voice Channel Ċ Ċ class ĠMusic Module Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠP LAYER _ MANAGER : ĠAudio Player Manager ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP LAYER _ MANAGER Ġ= ĠDefault Audio Player Manager () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Source Managers . register Remote Sources ( PLAYER _ MANAGER ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġmanager : ĠMusic Manager Ġ= ĠMusic Manager ( this ) ĊĠĠĠ Ġval Ġrem otes Ġ= ĠT Long Object HashMap < Player Remote >() ĊĊĠĠĠ Ġfun Ġremote ( guild : ĠGuild ): ĠPlayer Remote Ġ= Ġif Ġ( rem otes . containsKey ( guild . id Long )) Ġ{ ĊĠĠĠĠĠĠĠ Ġrem otes . get ( guild . id Long ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġmanager . getPlayer ( guild ) ĊĠĠĠĠĠĠĠ Ġval Ġqueue Ġ= Ġmanager . get Scheduler ( guild ) ĊĠĠĠĠĠĠĠ Ġrem otes . put ( guild . id Long , ĠPlayer Remote ( player , Ġqueue , Ġthis , Ġguild . id Long )) ĊĠĠĠĠĠĠĠ Ġremote ( guild ) Ġ// Ġsafe Ġrecursion ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremote ( guild : ĠGuild , Ġvoice Channel : ĠVoice Channel ): ĠPlayer Remote Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġremote Ġ= Ġremote ( guild ) ĊĠĠĠĠĠĠĠ Ġremote . voice Ġ= Ġvoice Channel ĊĠĠĠĠĠĠĠ Ġreturn Ġremote ĊĠĠĠ Ġ} Ċ } Ċ