@@ -11,55 +11,54 @@ import mindustry.world.consumers.*
11
11
12
12
object BlockConsumesResolver : PatchHandler.Resolver, TypeRegistry.Resolver {
13
13
override fun resolve (node : Node , child : String ): Node ? {
14
- if (node is Node .Modifiable && node.obj is Array <* > && node.elementType == Consume ::class .java) {
15
- val block = ((node.parent as Node . WithObj ).obj as ? Block ) ? : return null
16
- fun modifier ( body : Array < Consume >.( JsonValue ) -> Array < Consume >) = node.withModifier(child) {
17
- beforeModify()
18
- PatchHandler .registerAfterHandler(node.key) {
19
- block. apply {
20
- consPower = consumers.filterIsInstance< ConsumePower >().firstOrNull()
21
- optionalConsumers = consumers.filter { it.optional && ! it.ignore() }.toTypedArray ()
22
- nonOptionalConsumers = consumers.filter { ! it.optional && ! it.ignore() }.toTypedArray()
23
- updateConsumers = consumers.filter { it.update && ! it.ignore() }.toTypedArray()
24
- hasConsumers = consumers.isNotEmpty ()
25
- itemFilter.fill( false )
26
- liquidFilter .fill(false )
27
- consumers.forEach { it. apply ( this ) }
28
- setBars()
29
- }
14
+ if (node ! is Node .Modifiable <* > || ! Array < Consume > ::class .java.isAssignableFrom(node.type))
15
+ return null
16
+ val block = ((node.parent as Node . WithObj < * >).obj as ? Block ) ? : return null
17
+ fun modifier ( body : Array < Consume >.( JsonValue ) -> Array < Consume >) = node.withModifier(child) { v ->
18
+ beforeModify()
19
+ PatchHandler .registerAfterHandler(key) {
20
+ block. apply {
21
+ consPower = consumers.filterIsInstance< ConsumePower >().firstOrNull ()
22
+ optionalConsumers = consumers.filter { it.optional && ! it.ignore() }.toTypedArray()
23
+ nonOptionalConsumers = consumers.filter { ! it.optional && ! it.ignore() }.toTypedArray()
24
+ updateConsumers = consumers.filter { it.update && ! it.ignore() }.toTypedArray ()
25
+ hasConsumers = consumers.isNotEmpty( )
26
+ itemFilter .fill(false )
27
+ liquidFilter.fill( false )
28
+ consumers.forEach { it. apply ( this ) }
29
+ setBars()
30
30
}
31
- @Suppress(" UNCHECKED_CAST" ) val obj = node.obj as Array <Consume >
32
- setValue(obj.body(it))
33
31
}
34
- return when (child) {
35
- " clearItems" -> modifier { filterNot { it is ConsumeItems || it is ConsumeItemFilter }.toTypedArray() }
36
- " item" -> modifier { this + ConsumeItems (arrayOf(ItemStack (TypeRegistry .resolve(it), 1 ))) }
37
- " items" -> modifier { this + TypeRegistry .resolve<ConsumeItems >(it) }
38
- " itemCharged" -> modifier { this + TypeRegistry .resolve<ConsumeItemCharged >(it) }
39
- " itemFlammable" -> modifier { this + TypeRegistry .resolve<ConsumeItemFlammable >(it) }
40
- " itemRadioactive" -> modifier { this + TypeRegistry .resolve<ConsumeItemRadioactive >(it) }
41
- " itemExplosive" -> modifier { this + TypeRegistry .resolve<ConsumeItemExplosive >(it) }
42
- " itemExplode" -> modifier { this + TypeRegistry .resolve<ConsumeItemExplode >(it) }
43
-
44
- " clearLiquids" -> modifier { filterNot { it is ConsumeLiquidBase || it is ConsumeLiquids }.toTypedArray() }
45
- " liquid" -> modifier { this + TypeRegistry .resolve<ConsumeLiquid >(it) }
46
- " liquids" -> modifier { this + TypeRegistry .resolve<ConsumeLiquids >(it) }
47
- " liquidFlammable" -> modifier { this + TypeRegistry .resolve<ConsumeLiquidFlammable >(it) }
48
- " coolant" -> modifier { this + TypeRegistry .resolve<ConsumeCoolant >(it) }
32
+ @Suppress(" UNCHECKED_CAST" )
33
+ setValueAny((obj as Array <Consume >).body(v))
34
+ }
35
+ return when (child) {
36
+ " clearItems" -> modifier { filterNot { it is ConsumeItems || it is ConsumeItemFilter }.toTypedArray() }
37
+ " item" -> modifier { this + ConsumeItems (arrayOf(ItemStack (TypeRegistry .resolve(it), 1 ))) }
38
+ " items" -> modifier { this + TypeRegistry .resolve<ConsumeItems >(it) }
39
+ " itemCharged" -> modifier { this + TypeRegistry .resolve<ConsumeItemCharged >(it) }
40
+ " itemFlammable" -> modifier { this + TypeRegistry .resolve<ConsumeItemFlammable >(it) }
41
+ " itemRadioactive" -> modifier { this + TypeRegistry .resolve<ConsumeItemRadioactive >(it) }
42
+ " itemExplosive" -> modifier { this + TypeRegistry .resolve<ConsumeItemExplosive >(it) }
43
+ " itemExplode" -> modifier { this + TypeRegistry .resolve<ConsumeItemExplode >(it) }
49
44
50
- " clearPower" -> modifier { filterNot { it is ConsumePower }.toTypedArray() }
51
- " power" -> modifier {
52
- this .filterNot { c -> c is ConsumePower }.toTypedArray() + TypeRegistry .resolve<ConsumePower >(it)
53
- }
45
+ " clearLiquids" -> modifier { filterNot { it is ConsumeLiquidBase || it is ConsumeLiquids }.toTypedArray() }
46
+ " liquid" -> modifier { this + TypeRegistry .resolve<ConsumeLiquid >(it) }
47
+ " liquids" -> modifier { this + TypeRegistry .resolve<ConsumeLiquids >(it) }
48
+ " liquidFlammable" -> modifier { this + TypeRegistry .resolve<ConsumeLiquidFlammable >(it) }
49
+ " coolant" -> modifier { this + TypeRegistry .resolve<ConsumeCoolant >(it) }
54
50
55
- " powerBuffered" -> modifier {
56
- this .filterNot { c -> c is ConsumePower }.toTypedArray() + ConsumePower (0f , it.asFloat(), true )
57
- }
51
+ " clearPower" -> modifier { filterNot { it is ConsumePower }.toTypedArray() }
52
+ " power" -> modifier {
53
+ this .filterNot { c -> c is ConsumePower }.toTypedArray() + TypeRegistry .resolve<ConsumePower >(it)
54
+ }
58
55
59
- else -> null
56
+ " powerBuffered" -> modifier {
57
+ this .filterNot { c -> c is ConsumePower }.toTypedArray() + ConsumePower (0f , it.asFloat(), true )
60
58
}
59
+
60
+ else -> null
61
61
}
62
- return null
63
62
}
64
63
65
64
override fun <T : Any > resolveType (json : JsonValue , type : Class <T >? , elementType : Class <* >? , keyType : Class <* >? ): T ? {
0 commit comments