package Ġk dl . api . block . block entity Ċ Ċ import Ġk dl . api . K DL Ċ import Ġk dl . api . util . NBT Serialization Ċ import Ġnet . minecraft . block . BlockState Ċ import Ġnet . minecraft . util . Identifier Ċ import Ġnet . minecraft . util . math . Block Pos Ċ import Ġnet . minecraft . world . World Ċ Ċ data Ġclass ĠModule Ctx ( val Ġworld : ĠWorld , Ġval Ġpos : ĠBlockPos , Ġval Ġmodule Manager : ĠModule Manager ) Ċ Ċ interface ĠModule Manager Ġ{ ĊĠĠĠ Ġval Ġmodules : ĠMap < Identifier , ĠModule <* >> ĊĠĠĠ Ġval Ġblock state : ĠBlock State ĊĠĠĠ Ġvar Ġremoved : ĠBoolean ĊĊĠĠĠ Ġfun Ġsend Update To Near Players () ĊĠĠĠ Ġfun Ġmark Dirty () Ċ } Ċ Ċ interface ĠModule < State Ġ: ĠAny > Ġ{ ĊĠĠĠ Ġ// ĠThe Ġinternal Ġstate Ġof Ġthe Ġmodule , Ġif Ġthe Ġmodule Ġhas Ġno Ġstate , ĠUnit Ġwill Ġbe Ġused Ġinstead ĊĠĠĠ Ġval Ġstate : ĠState ĊĊĠĠĠ Ġ// ĠReadonly Ġinformation Ġabout Ġthe Ġmodule ĊĠĠĠ Ġval Ġdef : ĠModule Definition < State > Ċ } Ċ Ċ interface ĠModule Definition < State > Ġ{ ĊĠĠĠ Ġval Ġtype : ĠIdentifier ĊĠĠĠ Ġval ĠonCreate : Ġ(() Ġ-> ĠState )? ĊĠĠĠ Ġval Ġon Init : Ġ( Module Ctx .( State ) Ġ-> ĠUnit )? ĊĠĠĠ Ġval Ġon Tick : Ġ( Module Ctx .( State ) Ġ-> ĠUnit )? ĊĠĠĠ Ġval Ġon Break : Ġ( Module Ctx .( State ) Ġ-> ĠUnit )? Ċ } Ċ Ċ /** Ċ Ġ* ĠAllows Ġa Ġmodule Ġto Ġcustomize Ġwhich Ġpart Ġof Ġthe Ġstate Ġto Ġbe Ġsaved , Ċ Ġ* Ġif Ġthe Ġstate Ġdoesn 't Ġimplement Ġthis Ġinterface , Ġall Ġthe Ġstate Ġwill Ġbe Ġselected Ċ Ġ* Ċ Ġ* ĠOnce Ġa Ġpart Ġof Ġthe Ġstate Ġis Ġselected Ġto Ġbe Ġsaved Ġa Ġcheck Ġis Ġmade Ġfor Ġthe Ġfollowing Ġinterfaces : Ċ Ġ* Ġ- Ġ[ java . io . Serializable ] Ċ Ġ* Ġ- Ġ[ k dl . api . util . NBT Serializable ] Ċ Ġ* Ġ- Ġ[ k dl . api . util . Gson Serializable ] Ċ Ġ* Ġ- Ġ[ net . minecraft . nbt . Tag ] Ċ Ġ* Ċ Ġ* ĠIf Ġnone Ġis Ġfound Ġan Ġextra Ġcheck Ġis Ġmade Ġfor Ġcustom Ġserial izes Ġin ĠN BT Serialization Ċ Ġ* Ċ Ġ* ĠIf Ġall Ġchecks Ġfail , Ġthe Ġstate Ġis Ġnot Ġsaved Ċ Ġ* Ċ Ġ* ĠSee Ġalso Ġ[ NBT Serialization ] Ċ Ġ*/ Ċ interface ĠPersistent State < T : ĠAny > Ġ{ ĊĊĠĠĠ Ġ// ĠReturns Ġa Ġserial izable Ġobject Ġor ĠN BT Ġto Ġsave ĊĠĠĠ Ġfun Ġstore (): ĠT ĊĊĠĠĠ Ġ// ĠRe ceiv es Ġa Ġdeserialized Ġobject Ġor ĠN BT Ġto Ġload , Ġshould Ġbe Ġthe Ġsame Ġvalue Ġreturned Ġfrom Ġstore () ĊĠĠĠ Ġfun Ġrestore ( value : ĠT ) Ċ } Ċ Ċ /** Ċ Ġ* ĠAllows Ġa Ġmodule Ġselect Ġa Ġpart Ġof Ġthe Ġstate Ġto Ġbe Ġsend Ġto Ġthe Ġclient Ġwhen Ġsend Update To Near Players () Ġis Ġcalled Ċ Ġ* Ċ Ġ* ĠSee Ġalso Ġ[ NBT Serialization ] Ċ Ġ*/ Ċ interface ĠSync State < T : ĠAny > Ġ{ ĊĊĠĠĠ Ġ// ĠReturns Ġa Ġserial izable Ġobject Ġor ĠN BT Ġto Ġsend Ġto Ġclient ĊĠĠĠ Ġfun Ġto Send (): ĠT ĊĊĠĠĠ Ġ// ĠRe ceiv es Ġa Ġdeserialized Ġobject Ġor ĠN BT Ġfrom Ġthe Ġserver , Ġshould Ġbe Ġthe Ġsame Ġvalue Ġreturned Ġfrom Ġto Send () ĊĠĠĠ Ġfun Ġon Receive ( value : ĠT ) Ċ } Ċ Ċ @ K DL Ċ open Ġclass ĠModule Builder < State > Ġ: ĠModule Definition < State > Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtype : ĠIdentifier Ġget () Ġ= Ġmodule Type !! ĊĠĠĠ Ġvar Ġmodule Type : ĠIdentifier ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġvar ĠonCreate : Ġ(() Ġ-> ĠState )? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġvar Ġon Init : Ġ( Module Ctx .( State ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġvar Ġon Tick : Ġ( Module Ctx .( State ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġvar Ġon Break : Ġ( Module Ctx .( State ) Ġ-> ĠUnit )? Ġ= Ġnull Ċ }