/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠRen ĠBind en Ċ Ġ* Ċ Ġ* Ġ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 . r pk it . chat . bukkit . ch atch annel Ċ Ċ import Ġcom . r pk it . chat . bukkit . ch atch annel . pipeline . Direct ed Chat Channel Pipeline Component Ċ import Ġcom . r pk it . chat . bukkit . ch atch annel . pipeline . Un directed Chat Channel Pipeline Component Ċ import Ġcom . r pk it . core . database . Entity Ċ import Ġcom . r pk it . players . bukkit . player . RP K Player Ċ import Ġcom . r pk it . players . bukkit . profile . RP KM inecraft Profile Ċ import Ġcom . r pk it . players . bukkit . profile . RP K Th in Profile Ċ import Ġjava . awt . Color Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġchat Ġchannel Ċ Ġ*/ Ċ interface ĠRP K Chat Channel : ĠEntity Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġname Ġof Ġthe Ġchat Ġchannel . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġname : ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġcolour Ġused Ġto Ġrepresent Ġthe Ġchat Ġchannel . ĊĠĠĠĠ Ġ* ĠAssoci ating Ġa Ġcolour Ġwith Ġeach Ġchannel Ġallows Ġplayers Ġto Ġeasily Ġdistinguish Ġbetween Ġchannels . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcolor : ĠColor ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġradius Ġup Ġto Ġwhich Ġmessages Ġsent Ġto Ġthe Ġchat Ġchannel Ġmay Ġbe Ġheard . ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġradius Ġis Ġless Ġthan Ġor Ġequal Ġto Ġzero , Ġchat Ġmessages Ġare Ġglobal . ĊĠĠĠĠ Ġ* ĠThis Ġis Ġmeasured Ġin Ġmet res , Ġwhich Ġis Ġthe Ġsize Ġof Ġone ĠMinecraft Ġblock . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġradius : ĠDouble ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġlist Ġof Ġall Ġspeak ers Ġin Ġthe Ġchannel . ĊĠĠĠĠ Ġ* ĠIf Ġa Ġspeaker Ġsends Ġa Ġmessage Ġwithout Ġindicating Ġwho Ġit Ġis Ġdirected Ġto , Ġit Ġwill Ġbe Ġsent Ġto Ġthis Ġchannel . ĊĠĠĠĠ Ġ* ĠP layers Ġmay Ġonly Ġbe Ġspeak ers Ġin Ġa Ġsingle Ġchannel . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Deprecated (" Old Ġplayers ĠAPI . ĠPlease Ġmove Ġto Ġnew Ġprofiles ĠAPIs .", ĠReplace With (" speaker Participants ")) ĊĠĠĠ Ġval Ġspeak ers : ĠList < RP K Player > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġlist Ġof Ġall Ġspeak ers Ġin Ġthe Ġchannel . ĊĠĠĠĠ Ġ* ĠIf Ġa Ġspeaker Ġsends Ġa Ġmessage Ġwithout Ġindicating Ġwho Ġit Ġis Ġdirected Ġto , Ġit Ġwill Ġbe Ġsent Ġto Ġthis Ġchannel . ĊĠĠĠĠ Ġ* ĠChat Ġparticipants Ġmay Ġonly Ġbe Ġspeak ers Ġin Ġa Ġsingle Ġchannel . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġspeaker Minecraft Profiles : ĠList < RP KM inecraft Profile > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġlist Ġof Ġall Ġlisteners Ġin Ġthe Ġchannel . ĊĠĠĠĠ Ġ* ĠIf Ġa Ġmessage Ġis Ġsent Ġto Ġa Ġchannel , Ġit Ġwill Ġbe Ġheard Ġby Ġall Ġlisteners . ĊĠĠĠĠ Ġ* ĠP layers Ġmay Ġlisten Ġto Ġmultiple Ġchannels . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Deprecated (" Old Ġplayers ĠAPI . ĠPlease Ġmove Ġto Ġnew Ġprofiles ĠAPIs .", ĠReplace With (" listener Minecraft Profiles ")) ĊĠĠĠ Ġval Ġlisteners : ĠList < RP K Player > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġlist Ġof Ġall Ġlisteners Ġin Ġthe Ġchannel . ĊĠĠĠĠ Ġ* ĠIf Ġa Ġmessage Ġis Ġsent Ġto Ġa Ġchannel , Ġit Ġwill Ġbe Ġheard Ġby Ġall Ġlisteners . ĊĠĠĠĠ Ġ* ĠChat Ġparticipants Ġmay Ġlisten Ġto Ġmultiple Ġchannels . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġlistener Minecraft Profiles : ĠList < RP KM inecraft Profile > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġdirected Ġpipeline Ġfor Ġthe Ġchannel . ĊĠĠĠĠ Ġ* ĠMessages Ġto Ġthis Ġchannel Ġwill Ġpass Ġthrough Ġthis Ġpipeline Ġfor Ġeach Ġlistener , Ġso Ġthat Ġformatting Ġmay Ġbe Ġapplied Ġfor ĊĠĠĠĠ Ġ* Ġeach Ġrecipient . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġdirected Pipeline : ĠList < Direct ed Chat Channel Pipeline Component > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġund irect ed Ġpipeline Ġfor Ġthe Ġchannel . ĊĠĠĠĠ Ġ* ĠMessages Ġto Ġthis Ġchannel Ġwill Ġpass Ġthrough Ġthis Ġpipeline Ġonce , Ġso Ġthat Ġmessages Ġmay Ġbe Ġlogged Ġor Ġsent Ġto ĠIRC Ġonly ĊĠĠĠĠ Ġ* Ġa Ġsingle Ġtime . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġund irect ed Pipeline : ĠList < Un directed Chat Channel Pipeline Component > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġmatch Ġpattern Ġfor Ġthis Ġchannel . ĊĠĠĠĠ Ġ* ĠIf Ġa Ġplayer 's Ġmessage Ġmatches Ġthe Ġmatch Ġpattern , Ġit Ġshould Ġbe Ġdirected Ġto Ġthis Ġchannel . ĊĠĠĠĠ Ġ* ĠIn Ġthe Ġcase Ġof Ġa Ġchat Ġchannel Ġnot Ġhaving Ġa Ġmatch Ġpattern , Ġthis Ġmay Ġbe Ġset Ġto Ġnull . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġmatch Pattern : ĠString ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthis Ġchannel Ġshould Ġbe Ġjoined Ġby Ġdefault . ĊĠĠĠĠ Ġ* ĠIf Ġa Ġchannel Ġis Ġjoined Ġby Ġdefault , Ġall Ġnew Ġplayers Ġare Ġadded Ġas Ġlisteners Ġto Ġthe Ġchannel Ġupon Ġjoining Ġfor Ġthe ĊĠĠĠĠ Ġ* Ġfirst Ġtime . ĠIf Ġthey Ġare Ġnot , Ġthe Ġchannel Ġis Ġmut ed Ġuntil Ġthey Ġjoin Ġit . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġis Joined ByDefault : ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġa Ġspeaker Ġto Ġthe Ġchannel . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġspeaker ĠThe Ġplayer Ġto Ġadd ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Speaker ( speaker : ĠRP K Player ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġa Ġspeaker Ġfrom Ġthe Ġchannel . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġspeaker ĠThe Ġplayer Ġto Ġremove ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove Speaker ( speaker : ĠRP K Player ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġa Ġspeaker Ġto Ġthe Ġchannel . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġspeaker ĠThe Ġchat Ġparticipant Ġto Ġadd ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Speaker ( speaker : ĠRP KM inecraft Profile ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġa Ġspeaker Ġfrom Ġthe Ġchannel . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġspeaker ĠThe Ġchat Ġparticipant Ġto Ġremove ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove Speaker ( speaker : ĠRP KM inecraft Profile ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġa Ġlistener Ġto Ġthe Ġchannel . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠThe Ġplayer Ġto Ġadd ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Listener ( listener : ĠRP K Player ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġa Ġlistener Ġfrom Ġthe Ġchannel . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠThe Ġplayer Ġto Ġremove ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove Listener ( listener : ĠRP K Player ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġa Ġlistener Ġto Ġthe Ġchannel . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠThe ĠMinecraft Ġprofile Ġto Ġadd ĊĠĠĠĠ Ġ* Ġ@ param Ġis Async ĠWhether Ġadding Ġthe Ġlistener Ġis Ġbeing Ġdone Ġasynchronously ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Listener ( listener : ĠRP KM inecraft Profile , Ġis Async : ĠBoolean Ġ= Ġfalse ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġa Ġlistener Ġfrom Ġthe Ġchannel . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠThe ĠMinecraft Ġprofile Ġto Ġremove ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove Listener ( listener : ĠRP KM inecraft Profile ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSends Ġa Ġmessage Ġto Ġthe Ġchannel , Ġpassing Ġit Ġthrough Ġthe Ġdirected Ġpipeline Ġonce Ġfor Ġeach Ġlistener , Ġand Ġthe ĊĠĠĠĠ Ġ* Ġund irect ed Ġpipeline Ġonce . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġsender ĠThe Ġplayer Ġsending Ġthe Ġmessage ĊĠĠĠĠ Ġ* Ġ@ param Ġmessage ĠThe Ġmessage ĊĠĠĠĠ Ġ* Ġ@ param Ġis Async ĠWhether Ġthe Ġmessage Ġis Ġbeing Ġsent Ġasynchronously ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠsendMessage ( sender : ĠRP K Player , Ġmessage : ĠString , Ġis Async : ĠBoolean Ġ= Ġfalse ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSends Ġthe Ġmessage Ġto Ġthe Ġchannel , Ġpassing Ġit Ġthrough Ġthe Ġspecified Ġdirected Ġpipeline Ġonce Ġfor Ġeach Ġlistener , Ġand ĊĠĠĠĠ Ġ* Ġthe Ġspecified Ġund irect ed Ġpipeline Ġonce . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġsender ĠThe Ġplayer Ġsending Ġthe Ġmessage ĊĠĠĠĠ Ġ* Ġ@ param Ġmessage ĠThe Ġmessage ĊĠĠĠĠ Ġ* Ġ@ param Ġdirected Pipeline ĠThe Ġdirected Ġpipeline ĊĠĠĠĠ Ġ* Ġ@ param Ġund irect ed Pipeline ĠThe Ġund irect ed Ġpipeline ĊĠĠĠĠ Ġ* Ġ@ param Ġis Async ĠWhether Ġthe Ġmessage Ġis Ġbeing Ġsent Ġasynchronously ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠsendMessage ( sender : ĠRP K Player , Ġmessage : ĠString , Ġdirected Pipeline : ĠList < Direct ed Chat Channel Pipeline Component >, Ġund irect ed Pipeline : ĠList < Un directed Chat Channel Pipeline Component >, Ġis Async : ĠBoolean Ġ= Ġfalse ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSends Ġa Ġmessage Ġto Ġthe Ġchannel , Ġpassing Ġit Ġthrough Ġthe Ġdirected Ġpipeline Ġonce Ġfor Ġeach Ġlistener , Ġand Ġthe ĊĠĠĠĠ Ġ* Ġund irect ed Ġpipeline Ġonce . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġsender ĠThe Ġprofile Ġsending Ġthe Ġmessage ĊĠĠĠĠ Ġ* Ġ@ param Ġsender Minecraft Profile ĠThe ĠMinecraft Ġprofile Ġused Ġto Ġsend Ġthe Ġmessage , Ġor Ġnull Ġif Ġnot Ġsent Ġfrom ĠMinecraft ĊĠĠĠĠ Ġ* Ġ@ param Ġmessage ĠThe Ġmessage ĊĠĠĠĠ Ġ* Ġ@ param Ġis Async ĠWhether Ġthe Ġmessage Ġis Ġbeing Ġsent Ġasynchronously ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠsendMessage ( sender : ĠRP K Th in Profile , Ġsender Minecraft Profile : ĠRP KM inecraft Profile ?, Ġmessage : ĠString , Ġis Async : ĠBoolean Ġ= Ġfalse ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSends Ġa Ġmessage Ġto Ġthe Ġchannel , Ġpassing Ġit Ġthrough Ġthe Ġspecified Ġdirected Ġpipeline Ġonce Ġfor Ġeach Ġlistener , Ġand ĊĠĠĠĠ Ġ* Ġthe Ġspecified Ġund irect ed Ġpipeline Ġonce . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġsender ĠThe Ġprofile Ġsending Ġthe Ġmessage ĊĠĠĠĠ Ġ* Ġ@ param Ġsender Minecraft Profile ĠThe ĠMinecraft Ġprofile Ġused Ġto Ġsend Ġthe Ġmessage , Ġor Ġnull Ġif Ġnot Ġsent Ġfrom ĠMinecraft ĊĠĠĠĠ Ġ* Ġ@ param Ġmessage ĠThe Ġmessage ĊĠĠĠĠ Ġ* Ġ@ param Ġdirected Pipeline ĠThe Ġdirected Ġpipeline ĊĠĠĠĠ Ġ* Ġ@ param Ġund irect ed Pipeline ĠThe Ġund irect ed Ġpipeline ĊĠĠĠĠ Ġ* Ġ@ param Ġis Async ĠWhether Ġthe Ġmessage Ġis Ġbeing Ġsent Ġasynchronously ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠsendMessage ( sender : ĠRP K Th in Profile , Ġsender Minecraft Profile : ĠRP KM inecraft Profile ?, Ġmessage : ĠString , Ġdirected Pipeline : ĠList < Direct ed Chat Channel Pipeline Component >, Ġund irect ed Pipeline : ĠList < Un directed Chat Channel Pipeline Component >, Ġis Async : ĠBoolean Ġ= Ġfalse ) Ċ Ċ }