/* Ċ Ġ* ĠPermissions Ex Ċ Ġ* ĠCopyright Ġ( C ) Ġz ml Ġand ĠPermissions Ex Ġcontributors Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ @ file : Jvm Name (" Fabric Definitions ") Ċ package Ġca . stell ard rift . permission sex . fabric Ċ Ċ import Ġca . stell ard rift . permission sex . context . Context Definition Ċ import Ġca . stell ard rift . permission sex . context . Simple Context Definition Ċ import Ġca . stell ard rift . permission sex . fabric . mixin . lifecycle . Accessor Minecraft Server Ċ import Ġca . stell ard rift . permission sex . subject . Calculated Subject Ċ import Ġca . stell ard rift . permission sex . subject . Subject Type Definition Ċ import Ġca . stell ard rift . permission sex . util . Ip Set Ċ import Ġca . stell ard rift . permission sex . util . Ip Set Context Definition Ċ import Ġca . stell ard rift . permission sex . util . cast Map Ċ import Ġca . stell ard rift . permission sex . util . max Prefix Length Ċ import Ġjava . net . Inet SocketAddress Ċ import Ġjava . util . Optional Ċ import Ġjava . util . UUID Ċ import Ġnet . minecraft . entity . Entity Ċ import Ġnet . minecraft . server . command . Server Command Source Ċ import Ġnet . minecraft . server . network . Server Player Entity Ċ import Ġnet . minecraft . server . world . Server World Ċ import Ġnet . minecraft . util . Identifier Ċ Ċ const Ġval ĠSUB JECT S _ SYSTEM Ġ= Ġ" system " Ċ const Ġval ĠSUB JECT S _ COMMAND _ BLOCK Ġ= Ġ" command block " Ċ const Ġval ĠIDENT IFIER _ R CON Ġ= Ġ" r con " Ċ Ċ /** Ċ Ġ* ĠAn Ġinterface Ġthat Ġcan Ġbe Ġimplemented Ġby Ġcontext Ġdefinitions Ġthat Ġcan Ġdraw Ġfrom Ċ Ġ* Ġa Ġ[ Server Command Source ] Ġto Ġget Ġcurrent Ġcontext Ġdata . Ċ Ġ*/ Ċ interface ĠCommand Source Context Definition < T > Ġ{ ĊĠĠĠ Ġfun Ġaccum ulate Current Values ( source : ĠServer Command Source , Ġconsumer : Ġ( value : ĠT ) Ġ-> ĠUnit ) Ċ } Ċ Ċ abstract Ġclass ĠIdentifier Context Definition ( name : ĠString ) Ġ: ĠContext Definition < Identifier >( name ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġserialize ( user Value : ĠIdentifier ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Value . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( canonical Value : ĠString ): ĠIdentifier ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠIdentifier . try Parse ( canonical Value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmatches ( own Val : ĠIdentifier , Ġtest Val : ĠIdentifier ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġown Val Ġ== Ġtest Val ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠWorld Context Definition Ġ: ĠIdentifier Context Definition (" world "), ĠCommand Source Context Definition < Identifier > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġaccum ulate Current Values ( source : ĠServer Command Source , Ġconsumer : Ġ( value : ĠIdentifier ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġworld Ġ= Ġsource . world ĊĠĠĠĠĠĠĠ Ġif Ġ( world Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsumer ( world . registry Key . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġaccum ulate Current Values ( subject : ĠCalcul ated Subject , Ġconsumer : Ġ( value : ĠIdentifier ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsubject . associated Object . cast Map < Server Player Entity > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsumer ( server World . registry Key . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsuggest Values ( subject : ĠCalcul ated Subject ): ĠSet < Identifier > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPermissions Ex Mod . server . world s . map Ġ{ Ġit . registry Key . value Ġ}. toSet () ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠDimension Context Definition Ġ: ĠIdentifier Context Definition (" dimension "), ĠCommand Source Context Definition < Identifier > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġaccum ulate Current Values ( source : ĠServer Command Source , Ġconsumer : Ġ( value : ĠIdentifier ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdimension Ġ= Ġsource . world . dimension Registry Key ?. value ĊĠĠĠĠĠĠĠ Ġif Ġ( dimension Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsumer ( dimension ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġaccum ulate Current Values ( subject : ĠCalcul ated Subject , Ġconsumer : Ġ( value : ĠIdentifier ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsubject . associated Object . cast Map < Server Player Entity > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġworld . dimension Registry Key ?. value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsumer ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsuggest Values ( subject : ĠCalcul ated Subject ): ĠSet < Identifier > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsubject . associated Object . cast Map < Entity , ĠSet < Identifier >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( entity World Ġis ĠServer World ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( entity World . server Ġas ? ĠAccess or Minecraft Server )?. dimension Tracker ?. dimension Type Registry ?. ids ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġempty Set () ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠRemote Ip Context Definition Ġ: ĠIp Set Context Definition (" remote ip "), ĠCommand Source Context Definition < Ip Set > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġaccum ulate Current Values ( source : ĠServer Command Source , Ġconsumer : Ġ( value : ĠIp Set ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource . if Player Ġ{ Ġ( it . network Handler . connection . address Ġas ? ĠInet SocketAddress ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . run Ġ{ Ġconsumer ( Ip Set . from Addr Prefix ( address , Ġaddress . max Prefix Length )) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġaccum ulate Current Values ( subject : ĠCalcul ated Subject , Ġconsumer : Ġ( value : ĠIp Set ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsubject . associated Object . cast Map < Server Player Entity > Ġ{ Ġ( network Handler . connection . address Ġas ? ĠInet SocketAddress )?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsumer ( Ip Set . from Addr Prefix ( address , Ġaddress . max Prefix Length )) ĊĠĠĠĠĠĠĠ Ġ} Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠLocal Ip Context Definition Ġ: ĠIp Set Context Definition (" local ip "), ĠCommand Source Context Definition < Ip Set > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġaccum ulate Current Values ( subject : ĠCalcul ated Subject , Ġconsumer : Ġ( value : ĠIp Set ) Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠ Ġsubject . associated Object . cast Map < Server Player Entity > Ġ{ Ġaccum ulate ( this , Ġconsumer ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġaccum ulate Current Values ( source : ĠServer Command Source , Ġconsumer : Ġ( value : ĠIp Set ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource . if Player Ġ{ Ġaccum ulate ( it , Ġconsumer ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġaccum ulate ( ply : ĠServer Player Entity , Ġconsumer : Ġ( value : ĠIp Set ) Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠ Ġconsumer (( ply . network Handler . connection Ġas ĠI Virtual Host Holder ). virtual Host . address . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIp Set . from Addr Prefix ( this , Ġthis . max Prefix Length ) ĊĠĠĠĠĠĠĠ Ġ}) Ċ } Ċ Ċ object ĠLocal Host Context Definition Ġ: ĠSimple Context Definition (" localhost "), ĠCommand Source Context Definition < String > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġaccum ulate Current Values ( subject : ĠCalcul ated Subject , Ġconsumer : Ġ( value : ĠString ) Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠ Ġsubject . associated Object . cast Map < Server Player Entity > Ġ{ Ġaccum ulate ( this , Ġconsumer ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġaccum ulate Current Values ( source : ĠServer Command Source , Ġconsumer : Ġ( value : ĠString ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource . if Player Ġ{ Ġaccum ulate ( it , Ġconsumer ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġaccum ulate ( ply : ĠServer Player Entity , Ġconsumer : Ġ( value : ĠString ) Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠ Ġconsumer (( ply . network Handler . connection Ġas ĠI Virtual Host Holder ). virtual Host . host String ) Ċ } Ċ Ċ object ĠLocal Port Context Definition Ġ: ĠContext Definition < Int >(" local port "), ĠCommand Source Context Definition < Int > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġserialize ( user Value : ĠInt ): ĠString Ġ= Ġuser Value . toString () ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( canonical Value : ĠString ): ĠInt Ġ= Ġcanonical Value . toInt () ĊĠĠĠ Ġoverride Ġfun Ġmatches ( own Val : ĠInt , Ġtest Val : ĠInt ): ĠBoolean Ġ= Ġown Val Ġ== Ġtest Val ĊĊĠĠĠ Ġoverride Ġfun Ġaccum ulate Current Values ( subject : ĠCalcul ated Subject , Ġconsumer : Ġ( value : ĠInt ) Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠ Ġsubject . associated Object . cast Map < Server Player Entity > Ġ{ Ġaccum ulate ( this , Ġconsumer ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġaccum ulate Current Values ( source : ĠServer Command Source , Ġconsumer : Ġ( value : ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource . if Player Ġ{ Ġaccum ulate ( it , Ġconsumer ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġaccum ulate ( ply : ĠServer Player Entity , Ġconsumer : Ġ( value : ĠInt ) Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠ Ġconsumer (( ply . network Handler . connection Ġas ĠI Virtual Host Holder ). virtual Host . port ) Ċ } Ċ Ċ class ĠUser Subject Type Definition Ġ: ĠSubject Type Definition < Server Player Entity >(" user ") Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġis Name Valid ( name : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUUID . fromString ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Alias For Name ( name : ĠString ): ĠOptional < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUUID . fromString ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOptional . empty () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOptional . of Nullable ( Permissions Ex Mod . server . user Cache . find ByName ( name )?. id ?. toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Associated Object ( identifier : ĠString ): ĠOptional < Server Player Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuid Ġ= ĠUUID . fromString ( identifier ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOptional . of Nullable ( Permissions Ex Mod . server . player Manager . getPlayer ( uid )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOptional . empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ