/* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof ĠL an tern Server , Ġlicensed Ġunder Ġthe ĠMIT ĠLicense Ġ( MIT ). Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) ĠL an tern Power ed Ġ< https :// www . lan tern powered . org > Ċ Ġ* ĠCopyright Ġ( c ) ĠSp onge Power ed Ġ< https :// www . spongepowered . org > Ċ Ġ* ĠCopyright Ġ( c ) Ġcontributors Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . lan tern powered . test server Ċ Ċ import Ġorg . lan tern powered . api . ext .* Ċ import Ġorg . lan tern powered . api . text . serializer . Text Serial izers Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . spongepowered . api . Sp onge Ċ import Ġorg . spongepowered . api . event . Listener Ċ import Ġorg . spongepowered . api . event . game . state . Game Started Server Event Ċ import Ġorg . spongepowered . api . event . game . state . Game Stopping Server Event Ċ import Ġorg . spongepowered . api . plugin . Plugin Ċ import Ġjava . io . IOException Ċ import Ġjava . net . Data gram Packet Ċ import Ġjava . net . Data gram Socket Ċ import Ġjava . net . Inet Address Ċ Ċ /** Ċ Ġ* ĠA Ġplugin Ġwhich Ġbroadcast s Ġthe Ġserver Ġto Ġthe ĠL AN . ĠThis Ġcould Ċ Ġ* Ġsave Ġyou Ġa Ġfew Ġseconds Ġof Ġprec ious Ġtime . Ċ Ġ*/ Ċ @ Plugin ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ" lan _ broadcast ", ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" LAN ĠBroadcast ", ĊĠĠĠĠĠĠĠ Ġversion Ġ= Ġ" 1 . 0 . 0 ", ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Broadcast s Ġthe Ġserver Ġto Ġthe ĠL AN .", ĊĠĠĠĠĠĠĠ Ġauthors Ġ= Ġ[ Ġ" Cy ber max ke " Ġ] Ċ ) Ċ class ĠL AN Broadcast Plugin Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogger : ĠLogger Ġby Ġinject () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsocket : ĠData gram Socket ĊĊĠĠĠ Ġ@ Listener ĊĠĠĠ Ġfun Ġon Server Started ( event : ĠGame Started Server Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . socket Ġ= ĠData gram Socket () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . logger . error (" Failed Ġto Ġopen Ġsocket , Ġthe ĠL AN Ġbroadcast Ġwill ĠNOT Ġwork .", Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġthread Ġ= ĠThread ( this :: broadcast , Ġ" lan _ broadcast ") ĊĠĠĠĠĠĠĠ Ġthread . is Daemon Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġthread . start () ĊĊĠĠĠĠĠĠĠ Ġthis . logger . info (" Started Ġto Ġbroadcast Ġthe Ġserver Ġon Ġthe ĠL AN .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Listener ĊĠĠĠ Ġfun Ġon Server Stopping ( event : ĠGame Stopping Server Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . socket . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbroadcast () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġserver Ġ= ĠSp onge . getServer () ĊĠĠĠĠĠĠĠ Ġ// ĠFormat ting Ġcodes Ġare Ġstill Ġsupported Ġby Ġthe ĠL AN Ġmot d ĊĠĠĠĠĠĠĠ Ġval Ġmot d Ġ= ĠText Serial izers . LEG ACY _ FORMAT TING _ CODE . serialize ( server . mot d ) ĊĠĠĠĠĠĠĠ Ġval Ġport Ġ= Ġserver . bound Address . get (). port ĊĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġ"[ MOT D ]$ mot d [/ MOT D ][ AD ]$ port [/ AD ]" ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġmessage . toByteArray ( Charsets . UTF _ 8 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtarget Port Ġ= Ġ 4 4 4 5 ĊĠĠĠĠĠĠĠ Ġval Ġtarget Address Ġ= ĠInet Address . get ByName (" 2 2 4 . 0 . 2 . 6 0 ") ĊĊĠĠĠĠĠĠĠ Ġvar Ġerror Logged Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ(! this . socket . is Closed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . socket . send ( Data gram Packet ( data , Ġdata . size , Ġtarget Address , Ġtarget Port )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Logged Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! error Logged ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . logger . error (" Failed Ġto Ġbroadcast Ġserver Ġon Ġthe ĠL AN .", Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Logged Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSleep Ġ 1 . 5 Ġseconds ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 5 0 0 L ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ