/** Ċ MIT ĠLicense Ċ Ċ Copyright Ġ( c ) Ġ 2 0 1 6 ĠSh a un ĠRe ich Ġ< s re ich 0 2 @ gmail . com > Ċ Ċ Permission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ of Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ in Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ to Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ copies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ furnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ċ The Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ copies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ċ THE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ IMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ FITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ AUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ LIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ OUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ SOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . ore . in fin ium Ċ Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ class ĠChat Ġ{ ĊĠĠĠ Ġinternal Ġvar Ġchat Lines Ġ= Ġmutable ListOf < Chat Line >() ĊĠĠĠ Ġinternal Ġvar Ġlisteners Ġ= Ġmutable ListOf < Chat Listener >() ĊĊĠĠĠ Ġenum Ġclass ĠChat Sender Ġ{ ĊĠĠĠĠĠĠĠ ĠPlayer , ĊĠĠĠĠĠĠĠ ĠAdmin , ĊĠĠĠĠĠĠĠ ĠServer , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġif Ġthe Ġchat Ġmessage Ġis Ġa Ġlocal Ġonly Ġone / command , Ġlike Ġe . g . Ġ/ help ĊĠĠĠĠĠĠĠĠ Ġ* Ġunused Ġby Ġserver ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠLocal ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠChat Line ( var Ġchat Sender : ĠChat Sender , Ġvar Ġtimestamp : ĠString , Ġvar Ġplayer Name : ĠString , Ġvar Ġchat Text : ĠString ) ĊĊĠĠĠ Ġfun Ġadd Local Chat Line ( timestamp : ĠString , Ġline : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchat Line Ġ= ĠChat Line ( chat Sender Ġ= ĠChat Sender . Local , Ġtimestamp Ġ= Ġtimestamp , Ġchat Text Ġ= Ġline , Ġplayer Name Ġ= Ġ"") ĊĊĠĠĠĠĠĠĠ Ġchat Lines . add ( chat Line ) ĊĊĠĠĠĠĠĠĠ Ġlisteners . forEach Ġ{ Ġit . line Added ( chat Line ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Chat Line ( timestamp : ĠString , Ġplayer Name : ĠString , Ġline : ĠString , Ġsender : ĠChat Sender ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchat Line Ġ= ĠChat Line ( chat Sender Ġ= Ġsender , Ġtimestamp Ġ= Ġtimestamp , Ġchat Text Ġ= Ġline , Ġplayer Name Ġ= Ġplayer Name ) ĊĊĠĠĠĠĠĠĠ Ġchat Lines . add ( chat Line ) ĊĊĠĠĠĠĠĠĠ Ġlisteners . forEach Ġ{ Ġit . line Added ( chat Line ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Listener ( listener : ĠChat Listener ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlisteners . add ( listener ) ĊĊĠĠĠ Ġinterface ĠChat Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġline Added ( line : ĠChat Line ) Ġ= ĠUnit ĊĊĠĠĠĠĠĠĠ Ġfun Ġcleared () Ġ= ĠUnit ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġtimestamp (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠSimpleDateFormat (" HH : mm : ss ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdate . format ( Date ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ