package Ġworld s . greg s . hest ia . script Ċ Ċ import Ġcom . art emis . Aspect Ċ import Ġcom . art emis . World Ċ import Ġcom . art emis . World Configuration Builder Ċ import Ġnet . most ly original . api . event . common . Event System Ċ import Ġnet . most ly original . api . event . common . Subscribe Annotation Finder Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġworld s . greg s . hest ia . art emis . event . Polling EventDispatcher Ċ import Ġworld s . greg s . hest ia . core . script . Script Builder Ċ Ċ abstract Ġclass ĠScript World < T Ġ: ĠScript Builder >( private Ġval Ġaspect : ĠAs pect . Builder ? Ġ= Ġnull ) Ġ: ĠScript Loader Ġ{ ĊĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġscript : ĠT ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġworld : ĠWorld ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġevent System : ĠEvent System ĊĊĠĠĠ Ġopen Ġfun Ġbuild ( builder : ĠWorld Configuration Builder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġscript . build ( builder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġinitiate ( dispatcher : ĠPol ling EventDispatcher ) Ġ{ ĊĠĠĠĠĠĠĠ Ġscript . build ( world , Ġdispatcher ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġscript Ġ= Ġif Ġ( aspect Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Script Class (). get Constructor ( Aspect . Builder :: class . java ). newInstance ( aspect ) Ġas ĠT ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Script () !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdispatcher Ġ= ĠPol ling EventDispatcher () ĊĠĠĠĠĠĠĠ Ġevent System Ġ= ĠEvent System ( dispatcher , ĠSubscribe Annotation Finder ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠWorld Configuration Builder () ĊĠĠĠĠĠĠĠ Ġbuilder . with ( event System ) ĊĠĠĠĠĠĠĠ Ġbuild ( builder ) ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġbuilder . build () ĊĠĠĠĠĠĠĠ Ġworld Ġ= ĠWorld ( config ) ĊĊĠĠĠĠĠĠĠ Ġinitiate ( dispatcher ) ĊĠĠĠ Ġ} Ċ Ċ }