-
-
Notifications
You must be signed in to change notification settings - Fork 81
Expand file tree
/
Copy pathCompoundInput.java
More file actions
36 lines (28 loc) · 1.13 KB
/
Copy pathCompoundInput.java
File metadata and controls
36 lines (28 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package dev.isxander.controlify.bindings.input;
import com.mojang.serialization.Codec;
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import dev.isxander.controlify.controller.input.ControllerStateView;
import net.minecraft.resources.Identifier;
import java.util.List;
public record CompoundInput(List<Input> inputs) implements Input {
public static final String INPUT_ID = "compound";
public static final MapCodec<CompoundInput> CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group(
Codec.lazyInitialized(()-> Input.CODEC).listOf().fieldOf(INPUT_ID).forGetter(CompoundInput::inputs)
).apply(instance, CompoundInput::new));
@Override
public float state(ControllerStateView state) {
for (Input input : inputs) {
if (input.state(state) == 0) return 0;
}
return 1;
}
@Override
public List<Identifier> getRelevantInputs() {
return inputs.stream().flatMap(input -> input.getRelevantInputs().stream()).toList();
}
@Override
public InputType<?> type() {
return InputType.COMPOUND;
}
}