package Ġcom . mart m ists . yn et . transfer . proxy Ċ Ċ import Ġa lex i il . mc . lib . attributes . Simulation Ċ import Ġa lex i il . mc . lib . attributes . item . Item Attributes Ċ import Ġa lex i il . mc . lib . attributes . item . filter . Item Filter Ċ import Ġcom . mart m ists . yn et . network . Interaction Mode Ċ import Ġcom . mart m ists . yn et . transfer . data . Item Transfer Data Ċ import Ġcom . mart m ists . yn et . transfer . type . ItemType Ċ import Ġnet . minecraft . block . entity . Block Entity Ċ import Ġnet . minecraft . item . ItemStack Ċ Ċ class ĠItem Transfer Proxy ( override Ġval Ġbe : ĠBlock Entity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġmode : ĠInteraction Mode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġpriority : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġfilter : ĠList < ItemStack >) Ġ: ĠTransfer Proxy < ItemType , ĠItem Transfer Data > Ġ{ ĊĠĠĠ Ġval ĠMAX _ AMOUNT Ġ= Ġ 6 4 ĊĠĠĠ Ġvar Ġamount Moved Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġcan Extract ( data : ĠItem Transfer Data ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġex Ġ= ĠItem Attributes . EXTRACT ABLE . getFirst OrNull ( be . world , Ġbe . pos ) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġstack Ġ= Ġex . attempt Extraction ( this :: filter Matches , ĠMAX _ AMOUNT Ġ- Ġamount Moved , ĠSimulation . SI MUL ATE ) ĊĠĠĠĠĠĠĠ Ġdata . stack Ġ= Ġstack ĊĠĠĠĠĠĠĠ Ġreturn Ġ! stack . isEmpty ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcan Insert ( data : ĠItem Transfer Data ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġins Ġ= ĠItem Attributes . INSERT ABLE . getFirst OrNull ( be . world , Ġbe . pos ) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġstack Ġ= Ġins . filtered ( this :: filter Matches ). attempt Insertion ( data . stack , ĠSimulation . SI MUL ATE ) ĊĠĠĠĠĠĠĠ Ġdata . amount Ġ= Ġdata . stack . count Ġ- Ġstack . count ĊĠĠĠĠĠĠĠ Ġreturn Ġdata . amount Ġ!= Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġextract ( data : ĠItem Transfer Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġex Ġ= ĠItem Attributes . EXTRACT ABLE . get ( be . world , Ġbe . pos ) ĊĠĠĠĠĠĠĠ Ġval Ġstack Ġ= Ġex . extract ( data . stack , Ġdata . amount ) ĊĠĠĠĠĠĠĠ Ġamount Moved Ġ+= Ġstack . count ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinsert ( data : ĠItem Transfer Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġins Ġ= ĠItem Attributes . INSERT ABLE . get ( be . world , Ġbe . pos ) ĊĠĠĠĠĠĠĠ Ġval Ġstack Ġ= Ġins . insert ( data . stack ) ĊĠĠĠĠĠĠĠ Ġdata . stack Ġ= Ġstack ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter Matches ( item : ĠItemStack ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfilter . isNotEmpty () Ġ&& Ġfilter . any Ġ{ Ġit . item Ġ== Ġitem . item Ġ} ĊĠĠĠ Ġ} Ċ }