package Ġcom . le oct h . d run kf let ch int able . util Ċ Ċ import Ġnet . minecraft . entity . player . Player Entity Ċ import Ġnet . minecraft . inventory . Invent ories Ċ import Ġnet . minecraft . inventory . Inventory Ċ import Ġnet . minecraft . item . ItemStack Ċ import Ġkotlin . reflect . K Mutable Property 0 ĊĊ Ċ /** Ċ Ġ* ĠA Ġlist - based ĠInventory Ġimplementation . Ċ Ġ* Ċ Ġ* ĠHe av ily Ġbased Ġon ĠImplemented Inventory , Ġoriginally Ġby ĠJ u uz Ċ Ġ*/ Ċ open Ġclass ĠList Based Inventory ( ĊĠĠĠ Ġprivate Ġval Ġitems : ĠList < K Mutable Property 0 < ItemStack >> Ċ ): ĠInventory Ġ{ ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġvar arg Ġitems : ĠK Mutable Property 0 < ItemStack > ĊĠĠĠ Ġ): Ġthis ( listOf (* items )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġinventory Ġsize . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġsize (): ĠInt Ġ= Ġitems . size ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġif Ġthe Ġinventory Ġis Ġempty . ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthis Ġinventory Ġhas Ġonly Ġempty Ġstacks , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠisEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġsize ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstack Ġ= Ġget Stack ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! stack . isEmpty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRetrieves Ġthe Ġitem Ġin Ġthe Ġslot . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Stack ( slot : ĠInt ): ĠItemStack Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitems [ slot ]. get () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġitems Ġfrom Ġan Ġinventory Ġslot . ĊĠĠĠĠ Ġ* Ġ@ param Ġslot Ġ ĠThe Ġslot Ġto Ġremove Ġfrom . ĊĠĠĠĠ Ġ* Ġ@ param Ġcount ĠHow Ġmany Ġitems Ġto Ġremove . ĠIf Ġthere Ġare Ġless Ġitems Ġin Ġthe Ġslot Ġthan Ġwhat Ġare Ġrequested , ĊĠĠĠĠ Ġ* Ġtakes Ġall Ġitems Ġin Ġthat Ġslot . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġremove Stack ( slot : ĠInt , Ġcount : ĠInt ): ĠItemStack Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsplit Stack ( items , Ġslot , Ġcount ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! result . isEmpty ) Ġmark Dirty () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġall Ġitems Ġfrom Ġan Ġinventory Ġslot . ĊĠĠĠĠ Ġ* Ġ@ param Ġslot ĠThe Ġslot Ġto Ġremove Ġfrom . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġremove Stack ( slot : ĠInt ): ĠItemStack Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġremove Stack ( items , Ġslot ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe places Ġthe Ġcurrent Ġstack Ġin Ġan Ġinventory Ġslot Ġwith Ġthe Ġprovided Ġstack . ĊĠĠĠĠ Ġ* Ġ@ param Ġslot Ġ ĠThe Ġinventory Ġslot Ġof Ġwhich Ġto Ġreplace Ġthe Ġitem stack . ĊĠĠĠĠ Ġ* Ġ@ param Ġstack ĠThe Ġreplacing Ġitem stack . ĠIf Ġthe Ġstack Ġis Ġtoo Ġbig Ġfor ĊĠĠĠĠ Ġ* Ġthis Ġinventory Ġ([ Inventory . getMax Count Per Stack ]), ĊĠĠĠĠ Ġ* Ġit Ġgets Ġresized Ġto Ġthis Ġinventory 's Ġmaximum Ġamount . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġset Stack ( slot : ĠInt , Ġstack : ĠItemStack ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitems [ slot ]. set ( stack ) ĊĠĠĠĠĠĠĠ Ġif Ġ( stack . count Ġ> Ġmax Count Per Stack ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstack . count Ġ= Ġmax Count Per Stack ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClear s Ġthe Ġinventory . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġitems ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi . set ( ItemStack . EMPTY ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMark s Ġthe Ġstate Ġas Ġdirty . ĊĠĠĠĠ Ġ* ĠMust Ġbe Ġcalled Ġafter Ġchanges Ġin Ġthe Ġinventory , Ġso Ġthat Ġthe Ġgame Ġcan Ġproperly Ġsave ĊĠĠĠĠ Ġ* Ġthe Ġinventory Ġcontents Ġand Ġnotify Ġne ighb oring Ġblocks Ġof Ġinventory Ġchanges . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġmark Dirty () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠOverride Ġif Ġyou Ġwant Ġbehavior . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe Ġplayer Ġcan Ġuse Ġthe Ġinventory , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġcan Player Use ( player : ĠPlayer Entity ): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġ// Ġcur sed ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġsplit Stack ( items : ĠList < K Mutable Property 0 < ItemStack >>, Ġslot : ĠInt , Ġcount : ĠInt ): ĠItemStack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstack Ġ= Ġitems [ slot ]. get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( slot Ġin Ġitems . indices Ġ&& Ġ!( stack . isEmpty Ġ&& Ġcount Ġ> Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack . split ( count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠItemStack . EMPTY ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġremove Stack ( items : ĠList < K Mutable Property 0 < ItemStack >>, Ġslot : ĠInt ): ĠItemStack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstack Ġ= Ġitems [ slot ]. get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( slot Ġin Ġitems . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems [ slot ]. set ( ItemStack . EMPTY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠItemStack . EMPTY ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }