11import { array , assign , boolean , define , number , object , optional , string } from "superstruct" ;
22import { ConditionUtils } from "@lpsmods/mc-common" ;
33
4+ /**
5+ * A valid uuid4.
6+ */
47export const isUuid4 = define ( "uuid4" , ConditionUtils . isUuid4 ) ;
58
9+ /**
10+ * A valid block id.
11+ */
612export const isBlock = define ( "BlockType" , ConditionUtils . isBlock ) ;
713
14+ /**
15+ * A valid item id.
16+ */
817export const isItem = define ( "ItemType" , ConditionUtils . isItem ) ;
918
19+ /**
20+ * A valid entity id.
21+ */
1022export const isEntity = define ( "EntityType" , ConditionUtils . isEntity ) ;
1123
24+ /**
25+ * A valid effect id.
26+ */
1227export const isEffect = define ( "EffectType" , ConditionUtils . isEffect ) ;
1328
29+ /**
30+ * A valid enchantment id.
31+ */
1432export const isEnchant = define ( "EnchantmentType" , ConditionUtils . isEnchant ) ;
1533
34+ /**
35+ * A valid dimension id.
36+ */
1637export const isDimension = define ( "DimensionType" , ConditionUtils . isDimension ) ;
1738
39+ /**
40+ * A 3D vector as [x, y, z]
41+ */
1842export const vec3 = define ( "Vector3" , ConditionUtils . isVec3 ) ;
1943
44+ /**
45+ * A 2D vector as [x, y]
46+ */
2047export const vec2 = define ( "Vector2" , ConditionUtils . isVec2 ) ;
2148
49+ /**
50+ * A 2D vector as [x, z]
51+ */
52+ export const vecXZ = define ( "VectorXZ" , ConditionUtils . isVecXZ ) ;
53+
54+ /**
55+ * Contains options for filtering a property.
56+ */
2257export const entityFilterPropertyOptions = object ( {
2358 propertyId : string ( ) ,
2459 exclude : optional ( boolean ( ) ) ,
2560 value : optional ( string ( ) ) ,
2661} ) ;
2762
63+ /**
64+ * Contains options for filtering a score.
65+ */
2866export const entityFilterScoreOptions = object ( {
2967 exclude : optional ( boolean ( ) ) ,
3068 maxScore : optional ( number ( ) ) ,
3169 minScore : optional ( number ( ) ) ,
3270 objective : optional ( string ( ) ) ,
3371} ) ;
3472
73+ /**
74+ * Contains options for filtering entities.
75+ */
3576export const entityFilter = object ( {
3677 excludeFamilies : optional ( array ( string ( ) ) ) ,
3778 excludeGameModes : optional ( array ( string ( ) ) ) ,
@@ -53,6 +94,9 @@ export const entityFilter = object({
5394 type : optional ( string ( ) ) ,
5495} ) ;
5596
97+ /**
98+ * Contains options for selecting entities within an area.
99+ */
56100export const entityQuery = assign (
57101 entityFilter ,
58102 object ( {
0 commit comments