package Ġme . sy ari . ss . tool . item Ċ Ċ import Ġme . sy ari . ss . core . item . Custom ItemStack Ċ import Ġme . sy ari . ss . tool . Main . Companion . tool Plugin Ċ import Ġme . sy ari . ss . tool . item . attachment . Click Action Ċ import Ġme . sy ari . ss . tool . item . attachment . Click Type Ċ import Ġme . sy ari . ss . tool . item . attachment . me lee . Me lee Attachment Ċ import Ġorg . bukkit . Material Ċ import Ġorg . bukkit . ench ant ments . Enchant ment Ċ import Ġorg . bukkit . inventory . Item Flag Ċ import Ġorg . bukkit . inventory . ItemStack Ċ import Ġorg . bukkit . persistence . Persistent DataType Ċ Ċ class ĠS ST ool Data ( ĊĠĠĠ Ġval Ġid : ĠString , ĊĠĠĠ Ġval Ġtype : ĠMaterial , ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġlo re : ĠList < String >, ĊĠĠĠ Ġval Ġmax Dur ability : ĠInt , ĊĠĠĠ Ġval Ġitem Flag : ĠList < Item Flag > ?, ĊĠĠĠ Ġval Ġen chant : ĠMap < Enchant ment , ĠInt > ?, ĊĠĠĠ Ġval Ġclick Action : ĠMap < Click Type , ĠClick Action >, ĊĠĠĠ Ġval Ġme lee Attachment : ĠMe lee Attachment ? Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġcreate () Ġ= ĠS ST ool ( Custom ItemStack . create ( type , Ġname , Ġlo re ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġedit Persistent Data ( tool Plugin ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( tool Id Persistent Key , ĠPersistent DataType . STRING , Ġid ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġitem Flag ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Flag (* it . to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, Ġthis ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġreset Enchant () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtool List Ġ= Ġmutable Map Of < String , ĠS ST ool Data >() ĊĊĠĠĠĠĠĠĠ Ġval Ġid List Ġget () Ġ= Ġtool List . keys ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( item : ĠItemStack ?): ĠS ST ool Data ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem ?. let Ġ{ Ġfrom ( Custom ItemStack . create ( item )) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( item : ĠCustom ItemStack ?): ĠS ST ool Data ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem ?. let Ġ{ Ġget ( get Tool Id ( item )) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget ( id : ĠString ?): ĠS ST ool Data ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġid ?. let Ġ{ Ġtool List [ id . toLowerCase ()] Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġregister ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype : ĠMaterial , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlo re : ĠList < String >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Dur ability : ĠInt ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Flag : ĠList < Item Flag > ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġen chant : ĠMap < Enchant ment , ĠInt > ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Action : ĠMap < Click Type , ĠClick Action > ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġme lee Attachment : ĠMe lee Attachment ? ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtool List [ id . toLowerCase ()] Ġ= ĠS ST ool Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ?: Ġ"& b $ id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlo re , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Dur ability Ġ?: Ġtype . max Dur ability . toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Flag , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġen chant , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Action Ġ?: Ġmap Of (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġme lee Attachment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġclear All () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtool List . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġtool Id Persistent Key Ġ= Ġ" ss - tool - id " ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Tool Id ( item : ĠCustom ItemStack ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem . get Persistent Data ( tool Plugin )?. get ( tool Id Persistent Key , ĠPersistent DataType . STRING ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġtool Module Persistent Key Ġ= Ġ" ss - tool - module " ĊĠĠĠ Ġ} Ċ }