1
0
forked from Clones/Controlify

improve bindings

This commit is contained in:
isXander
2023-03-29 17:56:43 +01:00
parent 8f5d42e5aa
commit 0d9ddc27fc
17 changed files with 606 additions and 82 deletions

View File

@ -0,0 +1,38 @@
package dev.isxander.controlify.api.bind;
import dev.isxander.controlify.bindings.ControllerBinding;
import dev.isxander.controlify.bindings.GamepadBinds;
import dev.isxander.controlify.bindings.IBind;
import dev.isxander.controlify.controller.Controller;
import dev.isxander.controlify.controller.ControllerState;
import net.minecraft.client.KeyMapping;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import java.util.function.BooleanSupplier;
public interface ControllerBindingBuilder<T extends ControllerState> {
static <T extends ControllerState> ControllerBindingBuilder<T> create(Controller<T, ?> controller) {
return new ControllerBinding.ControllerBindingBuilderImpl<>(controller);
}
ControllerBindingBuilder<T> identifier(ResourceLocation id);
ControllerBindingBuilder<T> identifier(String namespace, String path);
ControllerBindingBuilder<T> defaultBind(IBind<T> bind);
ControllerBindingBuilder<T> defaultBind(GamepadBinds gamepadBind);
ControllerBindingBuilder<T> name(Component name);
ControllerBindingBuilder<T> description(Component description);
ControllerBindingBuilder<T> category(Component category);
ControllerBindingBuilder<T> vanillaOverride(KeyMapping keyMapping, BooleanSupplier toggleable);
ControllerBindingBuilder<T> vanillaOverride(KeyMapping keyMapping);
ControllerBinding<T> build();
}