/* Ċ Ġ* ĠLicensed Ġto Ġthe ĠApache ĠSoftware ĠFoundation Ġ( ASF ) Ġunder Ġone Ġor Ġmore Ċ Ġ* Ġcontributor Ġlicense Ġagreements . Ġ ĠSee Ġthe ĠNOTICE Ġfile Ġdistributed Ġwith Ċ Ġ* Ġthis Ġwork Ġfor Ġadditional Ġinformation Ġregarding Ġcopyright Ġownership . Ċ Ġ* ĠThe ĠASF Ġlicenses Ġthis Ġfile Ġto ĠYou Ġ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 . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġorg . apache . nlp craft . example . minecraft Ċ Ċ import Ġorg . apache . nlp craft . example . minecraft . Minecraft Value Loader . Companion . dumps Ċ import Ġorg . apache . nlp craft . model .* Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠSpecial Ġprocessor Ġto Ġsupport Ġ' fill Intent ' Ġintent Ġprocessing . Ċ Ġ*/ Ċ class ĠMinecraft Fill Match Processor Ġ{ ĊĠĠĠ Ġinternal Ġdata Ġclass ĠCoordinate ( val Ġx : ĠInt Ġ= Ġ 0 , Ġval Ġy : ĠInt Ġ= Ġ 0 , Ġval Ġz : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"$ x Ġ$ y Ġ$ z " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġrelative (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"~ $ x Ġ~ $ y Ġ~ $ z " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġrelative Rot ated (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"^ $ x Ġ^ $ y Ġ^ $ z " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġprocess ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ NC Intent Term (" shape ") Ġshape : ĠNC Token , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ NC Intent Term (" block ") Ġblock Token : ĠNC Token , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ NC Intent Term (" len ") Ġlength : ĠOptional < NC Token >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ NC Intent Term (" position ") Ġposition : ĠNC Token ĊĠĠĠĠĠĠĠ Ġ): ĠNC Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( from , Ġto ) Ġ= Ġresult Coordinates ( transform Length ( length ), Ġshape . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblock Ġ= Ġdump s [" item "] ! ![ block Token . value ] !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġfind Player ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Coordinate Ġ= Ġposition Coordinate ( position ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠNC Result . text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" execute Ġat Ġ$ player Ġposition ed Ġ${ position Coordinate . relative ()} Ġrotated Ġ 0 Ġ 0 Ġrun Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fill Ġ${ from . relative Rot ated ()} Ġ${ to . relative Rot ated ()} Ġ$ block " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġresult Coordinates ( length : ĠInt , Ġshape : ĠString ): ĠPair < Coordinate , ĠCoordinate > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( shape ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" line " Ġ-> ĠCoordinate (- length Ġ/ Ġ 2 ) Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCoordinate (( length Ġ- Ġ 1 ) Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" square " Ġ-> ĠCoordinate (- length Ġ/ Ġ 2 , Ġ 0 , Ġ- length Ġ/ Ġ 2 ) Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCoordinate (( length Ġ- Ġ 1 ) Ġ/ Ġ 2 , Ġ 0 , Ġ( length Ġ- Ġ 1 ) Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" cube " Ġ-> ĠCoordinate (- length Ġ/ Ġ 2 , Ġ- length Ġ/ Ġ 2 , Ġ- length Ġ/ Ġ 2 ) Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCoordinate (( length Ġ- Ġ 1 ) Ġ/ Ġ 2 , Ġ( length Ġ- Ġ 1 ) Ġ/ Ġ 2 , Ġ( length Ġ- Ġ 1 ) Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠNC Rejection (" Unsupported Ġshape ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġposition Coordinate ( position : ĠNC Token ): ĠCoordinate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( position . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" position : player " Ġ-> ĠCoordinate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" position : front " Ġ-> ĠCoordinate ( 0 , Ġ 0 , Ġtransform Length ( Optional . of ( position ), Ġ 1 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠNC Rejection (" Unsupported Ġposition ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġtransform Length ( length : ĠOptional < NC Token >, Ġdefault : ĠInt Ġ= Ġ 5 ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlength . flatMap Ġ{ Ġx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx . part Tokens . stream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . id Ġ== Ġ" nlp craft : num " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Any () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . meta < Double >(" nlp craft : num : from "). toInt () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. orElse ( default ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġfind Player ( position : ĠNC Token ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpart Ġ= Ġposition . part Tokens . stream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . id Ġ== Ġ" mc : player " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Any () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. orElse Throw Ġ{ ĠAssertionError (" Player Ġwasn 't Ġfound ") Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( part . lemma Ġ== Ġ" i " Ġ|| Ġpart . lemma Ġ== Ġ" my ") Ġ"@ p " Ġelse Ġpart . original Text Ġ?: Ġ"@ p " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ