package Ġplugin loader . api Ċ Ċ import Ġkotlinx . serialization . Serial Name Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . Transient Ċ import Ġorg . bukkit . Material Ċ import Ġorg . bukkit . configuration . Configuration Section Ċ import Ġorg . bukkit . ench ant ments . Enchant ment Ċ import Ġorg . bukkit . entity . EntityType Ċ import Ġorg . bukkit . inventory . Item Flag Ċ import Ġorg . bukkit . inventory . ItemStack Ċ import Ġorg . bukkit . inventory . meta . Item Meta Ċ import Ġorg . bukkit . inventory . meta . Spawn E gg Meta Ċ import Ġplugin loader . api . bukkit . NBT Ċ import Ġjava . util .* Ċ Ċ @ Serializable Ċ class ĠItem : ĠClone able { ĊĠĠĠ Ġ@ Transient ĊĠĠĠ Ġinternal Ġval Ġmeta Ġ= ĠArrayList <( Item Meta ) Ġ-> ĠUnit >( 0 ) ĊĠĠĠ Ġvar Ġtype : ĠMaterial Ġ= ĠMaterial . ST ONE ĊĠĠĠ Ġvar Ġamount : ĠInt Ġ= Ġ 1 ĊĠĠĠ Ġvar Ġdamage : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġname : ĠString Ġ= Ġ"" ĊĠĠĠ Ġval Ġlo re : ĠArrayList < String > Ġ= ĠArrayList ( 1 ) ĊĠĠĠ Ġval Ġen chant ment : ĠMutable Map < @ Serializable ( Enchant ment Serializer :: class ) ĠEn chant ment , ĠInt > Ġ= ĠHashMap ( 3 ) ĊĠĠĠ Ġ@ Serial Name (" data ") ĊĠĠĠ Ġvar Ġn bt : ĠN BT Ġ= ĠN BT . new () ĊĠĠĠ Ġvar Ġun break able : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġvar Ġflags : ĠMutable Set < Item Flag > Ġ= ĠEnum Set . none Of ( Item Flag :: class . java ) ĊĊĠĠĠ Ġfun Ġitem (): ĠItemStack { ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠItemStack ( type , Ġamount , Ġdamage . to Short ()) ĊĠĠĠĠĠĠĠ Ġif ( type Ġ== ĠMaterial . AIR ) return Ġitem ĊĠĠĠĠĠĠĠ Ġval Ġmeta Ġ= Ġitem . item Meta ĊĠĠĠĠĠĠĠ Ġif ( name . isNotEmpty ()) meta . displayName Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġif ( lo re . isNotEmpty ()) meta . lo re Ġ= Ġlo re ĊĠĠĠĠĠĠĠ Ġen chant ment . forEach { meta . add Enchant ( it . key , Ġit . value , Ġtrue )} ĊĠĠĠĠĠĠĠ Ġmeta . is Un break able Ġ= Ġun break able ĊĠĠĠĠĠĠĠ Ġflags . forEach ( meta :: addItem Flags ) ĊĠĠĠĠĠĠĠ Ġthis . meta . forEach { it ( meta )} ĊĠĠĠĠĠĠĠ Ġitem . item Meta Ġ= Ġmeta ĊĠĠĠĠĠĠĠ Ġthis . nbt . writeTo ( item ) ĊĠĠĠĠĠĠĠ Ġreturn Ġitem ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġfun Ġitem ( stack : ĠItemStack ): ĠItem { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠItem () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . type Ġ= Ġstack . type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . amount Ġ= Ġstack . amount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . damage Ġ= Ġstack . dur ability . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( stack . has Item Meta ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmeta Ġ= Ġstack . item Meta ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( meta . has DisplayName ()) item . name Ġ= Ġmeta . displayName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( meta . has L ore ()) item . lo re . addAll ( meta . lo re ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( meta . has En ch ants ()) item . ench ant ment . put All ( meta . ench ants ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . flags . addAll ( meta . item Flags ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . un break able Ġ= Ġmeta . is Un break able ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . nbt Ġ= ĠN BT . clone ( stack ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġdefault () Ġ= ĠItem (). type ( Material . ST ONE ) ĊĊĠĠĠĠĠĠĠ Ġ@ Deprecated (" Don 't Ġuse , Ġy ml Ġsupport Ġcan Ġbe Ġdropped ") ĊĠĠĠĠĠĠĠ Ġfun Ġparse ( section : ĠConfiguration Section , Ġlog : Ġ( String ) Ġ-> ĠUnit Ġ= ĠSystem . out :: println ): ĠItem { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġdefault () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Path Ġ= Ġsection . current Path ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġsection . getString (" item ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( type Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . type Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial . valueOf ( type . uppercase ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : Ġjava . lang . IllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" Ð¡ Ð» Ð¾Ð¶ Ð½Ð° - Ð° - Ð° , ĠÑı ĠÑħ Ð· ĠÑĩÑĤÐ¾ ĠÑĤÐ°Ðº Ð¾Ðµ Ġ'$ type ', ĠÐ½ ÐµÑĤ ĠÑĤÐ°Ðº Ð¾Ð³Ð¾ ĠÐ¿ÑĢÐµÐ´ Ð¼ ÐµÑĤ Ð° ĠÐ² ĠÑģÐ» Ð¾Ð² Ð°ÑĢ Ð¸Ðº Ðµ , ĠÑĩ ÐµÐº Ð½Ð¸ ĠÑĩ Ð¾ ĠÑĤ Ñĭ ĠÐ½Ð°Ð¿ Ð¸Ñģ Ð°Ð» ĠÐ² Ġ'$ current Path '") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial . CA KE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . amount Ġ= Ġsection . getInt (" amount ", Ġ 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Str Ġ= Ġsection . readable String (" text ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( text Str Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwords Ġ= Ġtext Str . split ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( words . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . name Ġ= Ġwords [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 1 Ġuntil Ġwords . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . lo re . add ( words [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmob Type Ġ= Ġsection . getString (" mob ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( mob Type Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparse Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntityType . valueOf ( type . uppercase ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : Ġjava . lang . IllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Ðº ÑĤÐ¾ ĠÑĤÐ°Ðº Ð¾Ð¹ Ġ'$ mob Type ' ĠÐ² ĠÐ¿ÑĢÐµÐ´ Ð¼ ÐµÑĤ Ðµ Ġ'$ current Path ', ĠÑı ĠÐµ Ð² Ð¾ ĠÐ½Ðµ ĠÐ· Ð½Ð° Ñİ , ĠÐ¾ Ð½ ĠÐ» ÐµÑĤ ÑĥÑĩ Ð°Ñı ĠÐ¼Ñĭ ÑĪ ?") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntityType . B AT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . meta . add { it Ġas ĠSpawn E gg Meta ; it . spawn ed Type Ġ= Ġparse } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġsection . getString (" color ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( color Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . color ( Color . valueOf ( color . uppercase ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" ÐĴ ĠÐ´ Ñĥ ÑĪÐµ ĠÐ½ Ð¸Ð¸ Ð± Ñĥ ĠÑĪ Ð¾ ĠÐ·Ð° ĠÑĨ Ð²ÐµÑĤ Ġ$ color ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( section . getBoolean (" un break able ")) Ġitem . un break able () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Flags Ġ= Ġsection . getString List (" flags ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Flags Ġ!= Ġnull Ġ&& Ġitem . type Ġ!= ĠMaterial . END _ CR Y ST AL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Flags . forEach { flag Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( flag Ġ== Ġ"* ") Ġitem . flags (* Item Flag . values ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġitem . flag ( Item Flag . valueOf ( flag . uppercase ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" Ð¤ Ð» Ð°Ð³ Ġ$ flag ĠÑįÑĤÐ¾ ĠÐºÐ°Ðº Ð°Ñı - ÑĤÐ¾ ĠÑĦ Ð¸Ð³ Ð½Ñı , ĠÑĥ Ð± ÐµÑĢ Ð¸ ĠÐµÐ³Ð¾ ĠÐ¸Ð· Ġ'$ current Path '") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn bt Ġ= Ġsection . getConfiguration Section (" nbt ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( nbt Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġn bt . get Keys ( false )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġvalue Ġ= Ġn bt [ key ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġitem [ key ] Ġ= Ġvalue . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDouble Ġ-> Ġitem [ key ] Ġ= Ġvalue . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġitem [ key ] Ġ= Ġvalue . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġlog (" ÐĿ ÐµÐ¿ Ð¾Ð½ ÑıÑĤ Ð½Ð¾Ðµ ĠÐ·Ð½Ð°ÑĩÐµÐ½Ð¸Ðµ ĠÑĤ ÐµÐ³ Ð° : Ġ'$ value ', Ġpath : Ġ$ current Path . nbt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġparse Stack ( section : ĠConfiguration Section , Ġlog : Ġ( String ) Ġ-> ĠUnit Ġ= ĠSystem . out :: println ): ĠItemStack { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Deprecated ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġparse ( section , Ġlog ). item () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġamount ( new : ĠInt ): ĠItem Ġ= Ġapply { amount Ġ= Ġnew } ĊĠĠĠ Ġfun Ġdamage ( new : ĠInt ): ĠItem Ġ= Ġapply { damage Ġ= Ġnew } ĊĠĠĠ Ġfun Ġcolor ( new : ĠColor ): ĠItem Ġ= Ġapply { damage ( new . w ool Data )} ĊĠĠĠ Ġfun Ġtype ( new : ĠMaterial ): ĠItem Ġ= Ġapply { type Ġ= Ġnew } ĊĠĠĠ Ġfun Ġname ( new : ĠString ): ĠItem Ġ= Ġapply { name Ġ= Ġnew } ĊĠĠĠ Ġfun Ġun break able (): ĠItem Ġ= Ġapply { un break able Ġ= Ġtrue } ĊĠĠĠ Ġfun Ġlo re ( var arg Ġlo res : ĠString ): ĠItem Ġ= Ġapply { lo re . addAll ( lo res )} ĊĠĠĠ Ġfun Ġreplace L ore ( var arg Ġlo res : ĠString ): ĠItem Ġ= Ġapply { lo re . clear (); lo re . addAll ( lo res )} ĊĠĠĠ Ġfun Ġen chant ment ( ench : ĠEn chant ment , Ġlevel : ĠInt ): ĠItem Ġ= Ġapply { ench ant ment [ ench ] Ġ= Ġlevel } ĊĠĠĠ Ġfun Ġflag ( flag : ĠItem Flag ): ĠItem Ġ= Ġapply { flags . add ( flag )} ĊĠĠĠ Ġfun Ġflags ( var arg Ġflag : ĠItem Flag ): ĠItem Ġ= Ġapply { flags . addAll ( flag )} ĊĊĠĠĠ Ġinline Ġfun Ġreplace L ore ( no inline Ġreplace : Ġ( String ) Ġ-> ĠString ): ĠItem { ĊĠĠĠĠĠĠĠ Ġlo re . replaceAll ( replace ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Deprecated (" Use Ġn bt Ġthings , Ġor ĠItem Meta Ġafter Ġbuilding Ġitem ", Ġlevel Ġ= ĠDeprec ation Level . ERROR ) ĊĠĠĠ Ġfun Ġ< T : ĠItem Meta > Ġmeta ( meta : Ġ( T ) Ġ-> ĠUnit ): ĠItem { ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġthis . meta . add { meta ( it Ġas ĠT )} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas N bt ( key : ĠString ): ĠBoolean Ġ= Ġthis . nbt . has ( key ) ĊĠĠĠ Ġfun Ġstring N bt ( key : ĠString ): ĠString Ġ= Ġthis . nbt . string ( key , Ġ"") Ġ?: Ġ"" ĊĠĠĠ Ġfun Ġint N bt ( key : ĠString ): ĠInt Ġ= Ġthis . nbt . int ( key , Ġ 0 ) ĊĠĠĠ Ġfun Ġdouble N bt ( key : ĠString ): ĠDouble Ġ= Ġthis . nbt . double ( key , Ġ 0 . 0 ) ĊĠĠĠ Ġoperator Ġfun Ġset ( key : ĠString , Ġvalue : ĠString ) Ġ= Ġthis . nbt . setString ( key , Ġvalue ) ĊĠĠĠ Ġoperator Ġfun Ġset ( key : ĠString , Ġvalue : ĠInt ) Ġ= Ġthis . nbt . setInt ( key , Ġvalue ) ĊĠĠĠ Ġoperator Ġfun Ġset ( key : ĠString , Ġvalue : ĠDouble ) Ġ= Ġthis . nbt . set Double ( key , Ġvalue ) ĊĊĠĠĠ Ġoverride Ġfun Ġclone (): ĠItem Ġ= ĠItem (). let { copy To ( it ); it } ĊĊĠĠĠ Ġfun Ġcopy To ( item : ĠItem ){ ĊĠĠĠĠĠĠĠ Ġitem . meta . addAll ( meta ) ĊĠĠĠĠĠĠĠ Ġitem . amount Ġ= Ġamount ĊĠĠĠĠĠĠĠ Ġitem . damage Ġ= Ġdamage ĊĠĠĠĠĠĠĠ Ġitem . type Ġ= Ġtype ĊĠĠĠĠĠĠĠ Ġitem . name Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġitem . lo re . addAll ( lo re ) ĊĠĠĠĠĠĠĠ Ġitem . ench ant ment . put All ( ench ant ment ) ĊĠĠĠĠĠĠĠ Ġitem . nbt Ġ= Ġthis . nbt . clone () ĊĠĠĠĠĠĠĠ Ġitem . un break able Ġ= Ġun break able ĊĠĠĠĠĠĠĠ Ġitem . flags . addAll ( flags ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Item ( meta =$ meta , Ġtype =$ type , Ġamount =$ amount , Ġdamage =$ damage , Ġname ='$ name ', Ġlo re =$ lo re , Ġen chant ment =$ ench ant ment , Ġn bt =$ nbt , Ġun break able =$ un break able , Ġflags =$ flags )" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġother ?. java Class ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġother Ġas ĠItem ĊĊĠĠĠĠĠĠĠ Ġif Ġ( meta Ġ!= Ġother . meta ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġ!= Ġother . type ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( amount Ġ!= Ġother . amount ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( damage Ġ!= Ġother . damage ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( name Ġ!= Ġother . name ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( lo re Ġ!= Ġother . lo re ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( ench ant ment Ġ!= Ġother . ench ant ment ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( this . nbt Ġ!= Ġother . nbt ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( un break able Ġ!= Ġother . un break able ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( flags Ġ!= Ġother . flags ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġmeta . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġtype . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġamount ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġdamage ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġname . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġlo re . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġen chant ment . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġn bt . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġun break able . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġflags . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ }