package Ġassemble . impl . assembly . slot . craft Ċ Ċ import Ġassemble . api . assembly . slot . Result Slot Ċ import Ġassemble . impl . assembly . adapter . item . Item Adapter Ċ import Ġcom . google . gson . Json Element Ċ import Ġcom . google . gson . JsonObject Ċ import Ġcom . google . gson . Json Primitive Ċ import Ġnet . minecraft . item . Item Ċ import Ġnet . minecraft . network . Packet Byte Buf Ċ import Ġnet . minecraft . util . Identifier Ċ import Ġnet . minecraft . util . registry . Registry Ċ Ċ open Ġclass ĠItem Result Slot < I Ġ: ĠItem Adapter >( override Ġval Ġresource : ĠItem , Ġoverride Ġval Ġquantity : ĠInt , Ġval Ġslot : ĠInt ) Ġ: ĠResult Slot < Item , ĠI >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġspace Available ( inventory : ĠI ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġinventory . getItem ( slot ) ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġinventory . getCount ( slot ) ĊĠĠĠĠĠĠĠ Ġval Ġmax Ġ= Ġinventory . getItem Capacity ( slot ) ĊĊĠĠĠĠĠĠĠ Ġval Ġempty Ġ= Ġcount Ġ<= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġsame Type Ġ= Ġitem Ġ== Ġresource ĊĠĠĠĠĠĠĠ Ġval Ġhas Space Ġ= Ġcount Ġ<= Ġmax Ġ- Ġquantity ĊĊĠĠĠĠĠĠĠ Ġreturn Ġempty Ġ|| Ġ( same Type Ġ&& Ġhas Space ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcraft ( inventory : ĠI ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinventory . setItem ( slot , Ġresource ) ĊĠĠĠĠĠĠĠ Ġinventory . add Items ( slot , Ġquantity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠType < I Ġ: ĠItem Adapter >( val Ġslot : ĠInt ) Ġ: ĠResult Slot . Type < Item , ĠI , ĠItem Result Slot < I >>() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread ( json : ĠJson Element ): ĠItem Result Slot < I > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen ( json ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJson Primitive Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json . isString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= ĠIdentifier ( json . asString ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠRegistry . ITEM [ key ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠItem Result Slot ( item , Ġ 1 , Ġslot ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġun recognized Format ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJsonObject Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġraw Ġ= Ġjson [" item "] Ġ?: Ġthrow Ġmissing Entry (" item ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= ĠIdentifier ( raw . asString ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠRegistry . ITEM [ key ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġjson [" count "] ?. as Int Ġ?: Ġ 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠItem Result Slot ( item , Ġcount , Ġslot ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow Ġun recognized Format ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġunpack ( buffer : ĠPacket Byte Buf ): ĠItem Result Slot < I > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġbuffer . read Identifier () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠRegistry . ITEM [ key ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġbuffer . readInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠItem Result Slot ( item , Ġcount , Ġslot ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpack ( buffer : ĠPacket Byte Buf , Ġslot : ĠItem Result Slot < I >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= ĠRegistry . ITEM . getId ( slot . resource ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . write Identifier ( key ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġslot . quantity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . writeInt ( count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }