package Ġexample Ċ Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġnet . fabric mc . fabric . api . block . Fabric Block Settings Ċ import Ġnet . minecraft . block . Block Ċ import Ġnet . minecraft . block . BlockState Ċ import Ġnet . minecraft . block . Material Ċ import Ġnet . minecraft . entity . player . Player Entity Ċ import Ġnet . minecraft . item . Block Item Ċ import Ġnet . minecraft . item . Item Ċ import Ġnet . minecraft . item . ItemGroup Ċ import Ġnet . minecraft . nbt . Compound Tag Ċ import Ġnet . minecraft . text . Literal Text Ċ import Ġnet . minecraft . util . ActionResult Ċ import Ġnet . minecraft . util . Hand Ċ import Ġnet . minecraft . util . Identifier Ċ import Ġnet . minecraft . util . hit . Block Hit Result Ċ import Ġnet . minecraft . util . math . Block Pos Ċ import Ġnet . minecraft . util . registry . Registry Ċ import Ġnet . minecraft . world . World Ċ import Ġscheduler . Block Scheduler Ċ import Ġscheduler . CancellationToken Ċ import Ġscheduler . Schedule able Ċ import Ġjava . util .* Ċ Ċ const Ġval ĠMod Id Ġ= Ġ" example _ usage " Ċ val ĠJava Block Ġ= ĠExample Usage Java () Ċ fun Ġinit () Ġ{ ĊĠĠĠ ĠRegistry . register ( Registry . BLOCK , ĠIdentifier ( Mod Id , Ġ" example _ block "), ĠExample Block ) ĊĠĠĠ ĠRegistry . register ( ĊĠĠĠĠĠĠĠ ĠRegistry . ITEM , ĠIdentifier ( Mod Id , Ġ" example _ block "), ĠBlock Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠExample Block , ĠItem . Settings (). group ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠItem Group . MISC ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠRegistry . register ( Registry . BLOCK , ĠIdentifier ( Mod Id , Ġ" example _ block _ java "), ĠJava Block ) ĊĠĠĠ ĠRegistry . register ( ĊĠĠĠĠĠĠĠ ĠRegistry . ITEM , ĠIdentifier ( Mod Id , Ġ" example _ block _ java "), ĠBlock Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJava Block , ĠItem . Settings (). group ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠItem Group . MISC ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ } ĊĊ Ċ const Ġval ĠS cheduling Player Id Key Ġ= Ġ" player " Ċ Ċ abstract Ġclass ĠAbstract Example Block Ġ: ĠBlock ( Fabric Block Settings . of ( Material . ST ONE ). build ()), ĠSchedule able Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Schedule End ( world : ĠWorld , Ġpos : ĠBlockPos , Ġschedule Id : ĠInt , Ġadditional Data : ĠCompound Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġget Scheduling Player ( additional Data , Ġworld ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġmessage ToSend Ġ= Ġwhen Ġ( schedule Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchedule Ids . Client . Schedule Example Ġ-> Ġ" Schedule Ġended Ġon Ġclient " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchedule Ids . Client . Repeat Example Ġ-> Ġ" Repeat Ġfor Ġan Ġamount Ġhas Ġbeen Ġrepeated Ġon Ġclient " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchedule Ids . Client . Repeat For Example Ġ-> Ġ" Repeat ĠUnt il Ġhas Ġbeen Ġrepeated Ġon Ġclient " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchedule Ids . Server . Schedule Example Ġ-> Ġ" Schedule Ġended Ġon Ġserver " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchedule Ids . Server . Repeat Example Ġ-> Ġ" Repeat Ġfor Ġan Ġamount Ġhas Ġbeen Ġrepeated Ġon Ġserver " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchedule Ids . Server . Repeat For Example Ġ-> Ġ" Repeat ĠUnt il Ġhas Ġbeen Ġrepeated Ġon Ġserver " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" Unexpected Ġschedule Ġid " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġplayer . sendMessage ( Literal Text ("$ message ToSend Ġat Ġpos Ġ$ pos .")) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( schedule Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchedule Ids . Client . Schedule Example , ĠSchedule Ids . Client . Repeat Example , ĠSchedule Ids . Client . Repeat For Example Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( world . is Client ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġassert (! world . is Client ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Scheduling Player ( additional Data : ĠCompound Tag , Ġworld : ĠWorld ): ĠPlayer Entity ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplayer Id Ġ= Ġadditional Data . get Uuid ( Scheduling Player Id Key ) ĊĠĠĠĠĠĠĠ Ġif Ġ( player Id Ġ== ĠUUID ( 0 , Ġ 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Warning : Ġthe Ġplayer Ġinformation Ġwas Ġcorrupted .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġworld . getPlayer By Uuid ( player Id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( player Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Warning : Ġplayer Ġthat Ġscheduled Ġno Ġlonger Ġin Ġthe Ġworld .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġplayer ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Block Removed ( ĊĠĠĠĠĠĠĠ Ġblock State _ 1 : ĠBlock State ?, ĊĠĠĠĠĠĠĠ Ġworld : ĠWorld , ĊĠĠĠĠĠĠĠ Ġblock Pos _ 1 : ĠBlockPos ?, ĊĠĠĠĠĠĠĠ Ġblock State _ 2 : ĠBlock State ?, ĊĠĠĠĠĠĠĠ Ġboolean _ 1 : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNote : Ġwill Ġonly Ġcancel Ġthe Ġserver Ġone ĊĠĠĠĠĠĠĠ Ġthis . repeat For CancellationToken ?. cancel ( world ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġobject ĠSchedule Ids Ġ{ ĊĠĠĠĠĠĠĠ Ġobject ĠClient Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠSchedule Example Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠRepeat Example Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠRepeat For Example Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġobject ĠServer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠSchedule Example Ġ= Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠRepeat Example Ġ= Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠRepeat For Example Ġ= Ġ 6 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġrepeat For CancellationToken : ĠCancellationToken ? Ġ= Ġnull Ċ } ĊĊ Ċ object ĠExample Block Ġ: ĠAbstract Example Block () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Use ( ĊĠĠĠĠĠĠĠ Ġblock State : ĠBlock State , ĊĠĠĠĠĠĠĠ Ġworld : ĠWorld , ĊĠĠĠĠĠĠĠ Ġpos : ĠBlockPos , ĊĠĠĠĠĠĠĠ Ġplayer : ĠPlayer Entity ?, ĊĠĠĠĠĠĠĠ Ġhand : ĠHand ?, ĊĠĠĠĠĠĠĠ Ġhit Result : ĠBlock Hit Result ? ĊĠĠĠ Ġ): ĠActionResult Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġschedule Data Ġ= ĠCompound Tag (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Uuid ( Scheduling Player Id Key , Ġplayer ?. uuid Ġ?: ĠUUID ( 0 , Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠBlock Scheduler . schedule ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġticks Until End Ġ= Ġ 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschedule Id Ġ= Ġif Ġ( world . is Client ) ĠSchedule Ids . Client . Schedule Example Ġelse ĠSchedule Ids . Server . Schedule Example , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld Ġ= Ġworld , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock Pos Ġ= Ġpos , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadditional Data Ġ= Ġschedule Data ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠBlock Scheduler . repeat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtick Interval Ġ= Ġ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Amount Ġ= Ġ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschedule Id Ġ= Ġif Ġ( world . is Client ) ĠSchedule Ids . Client . Repeat Example Ġelse ĠSchedule Ids . Server . Repeat Example , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld Ġ= Ġworld , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock Pos Ġ= Ġpos , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadditional Data Ġ= Ġschedule Data ĊĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrepeat For CancellationToken Ġ= ĠBlock Scheduler . repeat For ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtick Interval Ġ= Ġ 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġticks Until Stop Ġ= Ġ 5 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschedule Id Ġ= Ġif Ġ( world . is Client ) ĠSchedule Ids . Client . Repeat For Example Ġelse ĠSchedule Ids . Server . Repeat For Example , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld Ġ= Ġworld , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock Pos Ġ= Ġpos , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadditional Data Ġ= Ġschedule Data ĊĠĠĠĠĠĠĠ Ġ) ĊĊĊĠĠĠĠĠĠĠ Ġreturn ĠActionResult . SUCCESS ĊĠĠĠ Ġ} Ċ } ĊĊ