package Ġio . github . md sim mo . bom ber man . commands . game Ċ Ċ import Ġio . github . md sim mo . bom ber man . commands . Cmd Ċ import Ġio . github . md sim mo . bom ber man . commands . Game Command Ċ import Ġio . github . md sim mo . bom ber man . commands . Permission Ċ import Ġio . github . md sim mo . bom ber man . commands . Permissions Ċ import Ġio . github . md sim mo . bom ber man . game . Game Ċ import Ġio . github . md sim mo . bom ber man . game . Game Settings Builder Ċ import Ġio . github . md sim mo . bom ber man . messaging . Context ed Ċ import Ġio . github . md sim mo . bom ber man . messaging . Message Ċ import Ġio . github . md sim mo . bom ber man . messaging . Text Ċ import Ġorg . bukkit . Game Mode Ċ import Ġorg . bukkit . Material Ċ import Ġorg . bukkit . command . Command Sender Ċ import Ġorg . bukkit . entity . Player Ċ import Ġorg . bukkit . inventory . ItemStack Ċ import Ġjava . util . concurrent . atomic . Atomic Integer Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . min Ċ Ċ class ĠConfigure ( parent : ĠCmd ) Ġ: ĠGame Command ( parent ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġname (): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext ( Text . CONFIGURE _ NAME ). format () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgame Options ( args : ĠList < String >): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpermission (): ĠPermission Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPermissions . CONFIGURE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġextra (): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext ( Text . CONFIGURE _ EXTRA ). format () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexample (): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext ( Text . CONFIGURE _ EXAMPLE ). format () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdescription (): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext ( Text . CONFIGURE _ DESCRIPTION ). format () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġusage (): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext ( Text . CONFIGURE _ USAGE ). format () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgame Run ( sender : ĠCommand Sender , Ġargs : ĠList < String >, Ġflags : ĠMap < String , ĠString >, Ġgame : ĠGame ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( args . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( sender Ġ! is ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ( Text . MUST _ BE _ PLAYER ). send To ( sender ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( sender . game Mode Ġ!= ĠGame Mode . CRE ATIVE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ( Text . CONFIGURE _ PROMPT _ CRE ATIVE ). send To ( sender ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġshow MainMenu ( sender , Ġgame ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow MainMenu ( player : ĠPlayer , Ġgame : ĠGame ) Ġ{ ĊĠĠĠĠĠĠĠ ĠGui Builder . show ( player , ĠText . CONFIGURE _ TITLE _ MAIN . format (). toString (), ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠ Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġs Ġb Ġl Ġi Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠ Ġ"), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Init Ġ= Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( index . section ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' s ' Ġ-> ĠGui Builder . Item Slot ( Material . RED ST ONE ). un Mov able () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. displayName ( Text . CONFIGURE _ TITLE _ GENERAL . format (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' b ' Ġ-> ĠGui Builder . Item Slot ( Material . DIR T ). un Mov able () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. displayName ( Text . CONFIGURE _ TITLE _ BLOCKS . format (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' l ' Ġ-> ĠGui Builder . Item Slot ( Material . G OLD EN _ APPLE ). un Mov able () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. displayName ( Text . CONFIGURE _ TITLE _ LO OT . format (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' i ' Ġ-> ĠGui Builder . Item Slot ( Material . CH EST ). un Mov able () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. displayName ( Text . CONFIGURE _ TITLE _ IN VENT ORY . format (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠGui Builder . blank ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġindex , Ġ_, Ġ_ -> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( index . section ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' s ' Ġ-> Ġshow General Config ( player , Ġgame ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' b ' Ġ-> Ġshow Block Settings ( player , Ġgame ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' l ' Ġ-> Ġshow Lo ot Settings ( player , Ġgame ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' i ' Ġ-> Ġshow Inventory Settings ( player , Ġgame ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow General Config ( player : ĠPlayer , Ġgame : ĠGame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠGame Settings Builder ( game . settings ) ĊĠĠĠĠĠĠĠ ĠGui Builder . show ( player , ĠText . CONFIGURE _ TITLE _ GENERAL . format (). toString (), ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġ ^^^^ ĠĠ Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< Ġlf bit g Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġv vv v ĠĠ Ġ"), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Init Ġ= Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex . inventory . max Stack Size Ġ= Ġ 1 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( index . section ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'< ' Ġ-> ĠGui Builder . Item Slot ( Material . P AP ER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ BACK )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' l ' Ġ-> ĠGui Builder . Item Slot ( set Qty ( ItemStack ( Material . PLAYER _ HEAD ), Ġsettings . li ves )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ LI V ES )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' f ' Ġ-> ĠGui Builder . Item Slot ( set Qty ( ItemStack ( Material . T NT ), Ġsettings . fuse Ticks )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ F USE _ T IC KS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' b ' Ġ-> ĠGui Builder . Item Slot ( set Qty ( ItemStack ( Material . FL INT _ AND _ STE EL ), Ġsettings . fire Ticks )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ FIRE _ T IC KS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' i ' Ġ-> ĠGui Builder . Item Slot ( set Qty ( ItemStack ( Material . MIL K _ BUCKET ), Ġsettings . im munity Ticks )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ IM M UN ITY _ T IC KS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' t ' Ġ-> ĠGui Builder . Item Slot ( settings . b omb Item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ T NT _ BLOCK )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' g ' Ġ-> ĠGui Builder . Item Slot ( settings . power Item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ FIRE _ ITEM )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'^ ' Ġ-> ĠGui Builder . Item Slot ( Material . ST ONE _ BUTTON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ("+ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' v ' Ġ-> ĠGui Builder . Item Slot ( Material . ST ONE _ BUTTON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ("- ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠGui Builder . blank ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ index , Ġslot , Ġcursor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex . inventory . max Stack Size Ġ= Ġ 1 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( index . section ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'< ' Ġ-> Ġshow MainMenu ( player , Ġgame ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'^ ' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġindex . inventory . getItem ( index . inv Index Ġ+ Ġ 9 ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Qty ( item , Ġitem . amount Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' v ' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġindex . inventory . getItem ( index . inv Index Ġ- Ġ 9 ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Qty ( item , Ġmax ( item . amount Ġ- Ġ 1 , Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' t ', Ġ' g ' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ!= Ġnull Ġ&& Ġcursor . amount Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslot !!. type Ġ= Ġcursor . type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClose Ġ= Ġ{ inventory Iterator Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġitem ) Ġin Ġinventory Iterator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( index . section ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' l ' Ġ-> Ġsettings . li ves Ġ= Ġitem !!. amount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' f ' Ġ-> Ġsettings . fuse Ticks Ġ= Ġitem !!. amount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' b ' Ġ-> Ġsettings . fire Ticks Ġ= Ġitem !!. amount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' i ' Ġ-> Ġsettings . im munity Ticks Ġ= Ġitem !!. amount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' t ' Ġ-> Ġsettings . b omb Item Ġ= Ġitem !!. type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' g ' Ġ-> Ġsettings . power Item Ġ= Ġitem !!. type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . settings Ġ= Ġsettings . build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Block Settings ( player : ĠPlayer , Ġgame : ĠGame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Block Settings ( player , Ġgame , Ġ 0 , Ġstringify ( Text . CONFIGURE _ DE STRUCT IBLE _ DESC ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . settings . destruct ible ) Ġ{ Ġgame . settings Ġ= Ġgame . settings . copy ( destruct ible Ġ= Ġit ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Block Settings ( player : ĠPlayer , Ġgame : ĠGame , Ġselected : ĠInt , Ġdescription : ĠString , Ġtypes : ĠSet < Material >, Ġresult : Ġ( Set < Material >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtypes List Ġ= Ġtypes . filter Ġ{ Ġit . is Item Ġ}. filter Ġ{ Ġit . is Block Ġ}. toList () ĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠGame Settings Builder ( game . settings ) ĊĠĠĠĠĠĠĠ ĠGui Builder . show ( player , ĠText . CONFIGURE _ TITLE _ BLOCKS . format (). toString (), ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< d Ġs Ġp Ġn Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġc Ġc Ec Ġc Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ii ii ii iii ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ii ii ii iii "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Init Ġ= Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( index . section ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' E ' Ġ-> ĠGui Builder . Item Slot ( Material . EM ER AL D ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'< ' Ġ-> ĠGui Builder . Item Slot ( Material . P AP ER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ BACK )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' d ' Ġ-> ĠGui Builder . Item Slot ( Material . DIR T ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ DE STRUCT IBLE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' s ' Ġ-> ĠGui Builder . Item Slot ( Material . OB SID IAN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ IN DE STRUCT IBLE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' p ' Ġ-> ĠGui Builder . Item Slot ( Material . OX EY E _ DA IS Y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ PASS _ DESTROY )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' n ' Ġ-> ĠGui Builder . Item Slot ( Material . SIGN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ PASS _ KEEP )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' c ' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index . sec Index Ġ== Ġselected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGui Builder . Item Slot ( Material . YELLOW _ ST AIN ED _ GL ASS _ P ANE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGui Builder . blank ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' i ' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmat Ġ= Ġtypes List . get OrNull ( index . sec Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mat Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGui Builder . Item Slot ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGui Builder . Item Slot ( mat ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠGui Builder . blank ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġindex , Ġ_, Ġ_ -> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( index . section ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'< ' Ġ-> Ġshow MainMenu ( player , Ġgame ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' d ' Ġ-> Ġif Ġ( selected Ġ!= Ġ 0 ) Ġshow Block Settings ( player , Ġgame , Ġ 0 , Ġstringify ( Text . CONFIGURE _ DE STRUCT IBLE _ DESC ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . destruct ible ) Ġ{ Ġsettings . destruct ible Ġ= Ġit } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' s ' Ġ-> Ġif Ġ( selected Ġ!= Ġ 1 ) Ġshow Block Settings ( player , Ġgame , Ġ 1 , Ġstringify ( Text . CONFIGURE _ IN DE STRUCT IBLE _ DESC ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . inde struct ible ) Ġ{ settings . inde struct ible Ġ= Ġit } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' p ' Ġ-> Ġif Ġ( selected Ġ!= Ġ 2 ) Ġshow Block Settings ( player , Ġgame , Ġ 2 , Ġstringify ( Text . CONFIGURE _ PASS _ DESTROY _ DESC ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . pass Destroy ) Ġ{ settings . pass Destroy Ġ= Ġit } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' n ' Ġ-> Ġif Ġ( selected Ġ!= Ġ 3 ) Ġshow Block Settings ( player , Ġgame , Ġ 3 , Ġstringify ( Text . CONFIGURE _ PASS _ KEEP _ DESC ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . pass Keep ) Ġ{ settings . pass Keep Ġ= Ġit } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClose Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblocks Ġ= Ġit . map NotNull Ġ{ Ġ( index , Ġstack ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index . section Ġ== Ġ' i ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack ?. type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ Ġmat Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpand Similar Materials ( mat ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toSet () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult ( blocks ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsave Ġsettings ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . settings Ġ= Ġsettings . build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexpand Similar Materials ( mat : ĠMaterial ): ĠSequence < Material > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwall Variant Ġ= Ġmat . key . key ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" sign ", Ġ" wall _ sign ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" banner ", Ġ" wall _ banner ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" fan ", Ġ" wall _ fan ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" torch ", Ġ" wall _ torch ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" head ", Ġ" wall _ head ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" sk ull ", Ġ" sk ull _ head ") ĊĠĠĠĠĠĠĠ Ġval Ġwall Type Ġ= ĠMaterial . match Material ( wall Variant ) Ġ?: Ġreturn Ġsequence Of ( mat ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsequence Of ( mat , Ġwall Type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Inventory Settings ( player : ĠPlayer , Ġgame : ĠGame ) Ġ{ ĊĠĠĠĠĠĠĠ ĠGui Builder . show ( player , Ġstringify ( Text . CONFIGURE _ TITLE _ IN VENT ORY ), ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< ĠH CL BS Ġ Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġa aa as Ġ Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ii ii ii iii ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ii ii ii iii ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ii ii ii iii ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" hh hh hh hh h "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Init Ġ= Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinitial Items Ġ= ĠArrayList ( game . settings . initial Items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( initial Items . size Ġ< Ġ 9 * 4 + 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Items . add ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( index . section ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'< ' Ġ-> ĠGui Builder . Item Slot ( Material . P AP ER ). un Mov able (). displayName ( stringify ( Text . CONFIGURE _ BACK )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' a ' Ġ-> ĠGui Builder . Item Slot ( initial Items [( 3 - index . sec Index )+ 9 * 4 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' s ' Ġ-> ĠGui Builder . Item Slot ( initial Items [( 9 * 4 + 4 )]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' h ' Ġ-> ĠGui Builder . Item Slot ( initial Items [ index . sec Index ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' i ' Ġ-> ĠGui Builder . Item Slot ( initial Items [ index . sec Index + 9 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' H ' Ġ-> ĠGui Builder . Item Slot ( Material . IRON _ HEL MET ). un Mov able (). hide Attributes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' C ' Ġ-> ĠGui Builder . Item Slot ( Material . IRON _ CH EST PL ATE ). un Mov able (). hide Attributes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' L ' Ġ-> ĠGui Builder . Item Slot ( Material . IRON _ LE GG INGS ). un Mov able (). hide Attributes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' B ' Ġ-> ĠGui Builder . Item Slot ( Material . IRON _ BOOT S ). un Mov able (). hide Attributes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' S ' Ġ-> ĠGui Builder . Item Slot ( Material . SH I ELD ). un Mov able (). hide Attributes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠGui Builder . blank ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ index , Ġ_, Ġ_ -> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( index . section ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'< ' Ġ-> Ġshow MainMenu ( player , Ġgame ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClose Ġ= Ġ{ inventory Iterator Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclosing Items Ġ= ĠArray < ItemStack ? >( 9 * 4 + 5 ) Ġ{ Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġitem ) Ġin Ġinventory Iterator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( index . section ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' a ' Ġ-> Ġclosing Items [ 9 * 4 +( 3 - index . sec Index )] Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' s ' Ġ-> Ġclosing Items [ 9 * 4 + 4 ] Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' h ' Ġ-> Ġclosing Items [ index . sec Index ] Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' i ' Ġ-> Ġclosing Items [ 9 + index . sec Index ] Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . settings Ġ= Ġgame . settings . copy ( initial Items Ġ= Ġclosing Items . asList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Lo ot Settings ( player : ĠPlayer , Ġgame : ĠGame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgame Lo ot Ġ= Ġgame . settings . block Lo ot ĊĠĠĠĠĠĠĠ Ġ// Ġmanipulate Ġthe Ġlo ot Ġinto Ġa Ġformat Ġthat Ġcan Ġbe Ġshown Ġvis ually ĊĠĠĠĠĠĠĠ Ġ// ĠNeed Ġto Ġgroup Ġblocks Ġwith Ġduplicate Ġlo ot Ġby Ġf li pping Ġkey / values ĊĠĠĠĠĠĠĠ Ġval Ġlo ot Block Ġ= Ġmutable Map Of < Map < ItemStack , ĠInt >, ĠMutable Set < Material >>() ĊĠĠĠĠĠĠĠ Ġgame Lo ot . forEach Ġ{ Ġ( mat , Ġlo ot ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlo ot Block . get Or Put ( loot ) Ġ{ Ġmutable Set Of () Ġ}. add ( mat ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠFlip Ġthe Ġkey / values Ġback ĊĠĠĠĠĠĠĠ Ġval Ġlo ot Ġ= Ġlo ot Block ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( loot , Ġmat List ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( mat List . toList (), Ġlo ot . toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. to Mutable List () ĊĊĠĠĠĠĠĠĠ Ġshow Lo ot Settings ( player , Ġgame , Ġ 0 , Ġlo ot ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Lo ot Settings ( player : ĠPlayer , Ġgame : ĠGame , Ġslot : ĠInt , Ġlo ot : ĠMutable List < Pair < List < Material >, ĠList < Pair < ItemStack , ĠInt >>>> ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsplit Ġout Ġstacks Ġwith Ġweight Ġover Ġ 6 4 ĊĠĠĠĠĠĠĠ Ġval Ġ( mat s , Ġitems ) Ġ= Ġlo ot . getOrElse ( slot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( array ListOf (), Ġarray ListOf ()) ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{ Ġ( mat s , Ġitems ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ats . filter Ġ{ Ġit . is Block Ġ&& Ġit . is Item Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . flatMap Ġ{( stack , Ġweight ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbroken Weight Ġ= Ġweight ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Pair < ItemStack , ĠInt >>() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Pair ( stack , Ġmin ( broken Weight , Ġ 6 4 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbroken Weight Ġ-= Ġ 6 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( broken Weight Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠGui Builder . show ( player , Ġstringify ( Text . CONFIGURE _ TITLE _ LO OT ), ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< SSSS SSSS ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" K kk kk kk kk ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠ Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" V vv vv vv vv ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" W ww ww ww ww "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Init Ġ= Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( index . section ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'< ' Ġ-> ĠGui Builder . Item Slot ( Material . P AP ER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ BACK )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' S ' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġselected ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex . sec Index Ġ== Ġslot Ġ-> ĠMaterial . YELLOW _ CON CRE TE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnothing Ġadded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex . sec Index Ġ>= Ġlo ot . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġlo ot [ index . sec Index ]. let Ġ{ Ġ( mat s , Ġitems ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ats . isEmpty () Ġ&& Ġitems . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ Ġ-> ĠMaterial . GRAY _ CON CRE TE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsomething Ġpresent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠMaterial . WHITE _ CON CRE TE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGui Builder . Item Slot ( icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ LO OT _ SLOT . with (" slot ", Ġindex . sec Index ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' K ' Ġ-> ĠGui Builder . Item Slot ( Material . EM ER AL D ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ LO OT _ BLOCK . with (" slot ", Ġslot ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' k ' Ġ-> ĠGui Builder . Item Slot ( mat s . get OrNull ( index . sec Index )?. let Ġ{ ĠItemStack ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' V ' Ġ-> ĠGui Builder . Item Slot ( Material . EM ER AL D ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ LO OT _ ITEM . with (" slot ", Ġslot ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' v ' Ġ-> ĠGui Builder . Item Slot ( items . get OrNull ( index . sec Index )?. first ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' W ' Ġ-> ĠGui Builder . Item Slot ( Material . EM ER AL D ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un Mov able (). displayName ( stringify ( Text . CONFIGURE _ LO OT _ WEIGHT . with (" slot ", Ġslot ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' w ' Ġ-> ĠGui Builder . Item Slot ( Material . G OLD _ NU G GET , Ġitems . get OrNull ( index . sec Index )?. second Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠGui Builder . blank ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġindex , Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( index . section ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'< ' Ġ-> Ġshow MainMenu ( player , Ġgame ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' S ' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTrying Ġto Ġreload Ġthe Ġsame Ġslot Ġcauses Ġghost Ġbugs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( because Ġclosing Ġprevious Ġscreen Ġhappens ĠAFTER Ġloading Ġnew Ġscreen ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Lo ot Settings ( player , Ġgame , Ġindex . sec Index , Ġlo ot ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġthe Ġcolored Ġtiles Ġare Ġone Ġcycle Ġbehind Ġbecause Ġof Ġthe Ġclose - load Ġorder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClose Ġ= Ġ{ inventory Iterator Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm ats Saved Ġ= Ġmutable ListOf < Material >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCount Ġthe Ġweight ings Ġof Ġeach Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Saved Ġ= ĠHashMap < ItemStack ?, ĠAtomicInteger >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġitem ) Ġin Ġinventory Iterator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( index . section ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' k ' Ġ-> Ġitem ?. let Ġ{ Ġm ats Saved . add ( it . type ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' v ' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweight Ġ= Ġindex . inventory . getItem ( index . inv Index + 9 )?. amount Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems Saved . get Or Put ( item ) Ġ{ ĠAtomicInteger ( 0 ) Ġ}. add AndGet ( weight ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOverride Ġthe Ġcurrent Ġlist Ġfor Ġthe Ġnext Ġview ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( but Ġfirst Ġpad Ġthe Ġlist Ġout Ġto Ġmake Ġsure Ġthe Ġitem Ġslot Ġdoesn 't Ġmove Ġaround Ġwhile Ġediting ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( loot . size Ġ<= Ġ Ġslot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlo ot . add ( Pair ( listOf (), ĠlistOf ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlo ot [ slot ] Ġ= ĠPair ( mat s Saved , Ġitems Saved . map NotNull Ġ{ Ġ( stack , Ġweight ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( weight . get () Ġ== Ġ 0 Ġ&& Ġstack Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġfilters Ġthe Ġempty Ġrow Ġsum ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( stack Ġ?: ĠItemStack ( Material . AIR , Ġ 0 ), Ġweight . get ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toList ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMap Ġto Ġstandard Ġform Ġand Ġsave ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . settings Ġ= Ġgame . settings . copy ( block Lo ot Ġ= Ġlo ot . flatMap Ġ{( mat s , Ġitem Weights ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ats . flatMap Ġ{ Ġexpand Similar Materials ( it ). toList () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠPair ( it , Ġitem Weights . toMap ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toMap ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Qty ( item Stack : ĠItemStack , Ġamount : ĠInt Ġ= Ġitem Stack . amount ) Ġ: ĠItemStack Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Stack . amount Ġ= Ġamount ĊĠĠĠĠĠĠĠ Ġval Ġmeta Ġ= Ġitem Stack . item Meta !! ĊĠĠĠĠĠĠĠ Ġmeta . lo re Ġ= ĠlistOf ( amount . toString ()) ĊĠĠĠĠĠĠĠ Ġitem Stack . item Meta Ġ= Ġmeta ĊĠĠĠĠĠĠĠ Ġreturn Ġitem Stack ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstringify ( text : ĠContext ed ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtext . format (). toString () ĊĠĠĠ Ġ} Ċ }