mirror of
https://github.com/chylex/Better-Controls.git
synced 2025-05-29 07:34:03 +02:00
Hide custom keybindings in the Controls screen
This commit is contained in:
parent
15f1635604
commit
71e7bed96f
src/main
java/chylex/bettercontrols
input
mixin
resources
@ -1,11 +1,17 @@
|
|||||||
package chylex.bettercontrols.input;
|
package chylex.bettercontrols.input;
|
||||||
import net.minecraft.client.options.KeyBinding;
|
import net.minecraft.client.options.KeyBinding;
|
||||||
import net.minecraft.client.util.InputUtil.Type;
|
import net.minecraft.client.util.InputUtil.Type;
|
||||||
|
import net.minecraft.text.Text;
|
||||||
|
import net.minecraft.text.TranslatableText;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class KeyBindingWithModifier extends KeyBinding{
|
public class KeyBindingWithModifier extends KeyBinding{
|
||||||
public static final String CATEGORY = "key.categories.bettercontrols";
|
public static final String CATEGORY = "key.categories.bettercontrols";
|
||||||
|
|
||||||
|
public static boolean checkCategoryMatches(final Text text){
|
||||||
|
return text instanceof TranslatableText && CATEGORY.equals(((TranslatableText)text).getKey());
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private ModifierKey modifier = null;
|
private ModifierKey modifier = null;
|
||||||
|
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
package chylex.bettercontrols.mixin;
|
||||||
|
import net.minecraft.client.gui.screen.options.ControlsListWidget.CategoryEntry;
|
||||||
|
import net.minecraft.text.Text;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
|
||||||
|
@Mixin(CategoryEntry.class)
|
||||||
|
public interface AccessControlsListCategory{
|
||||||
|
@Accessor
|
||||||
|
Text getText();
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package chylex.bettercontrols.mixin;
|
||||||
|
import net.minecraft.client.gui.screen.options.ControlsListWidget.KeyBindingEntry;
|
||||||
|
import net.minecraft.client.options.KeyBinding;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
|
||||||
|
@Mixin(KeyBindingEntry.class)
|
||||||
|
public interface AccessControlsListKeyBinding{
|
||||||
|
@Accessor
|
||||||
|
KeyBinding getBinding();
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
package chylex.bettercontrols.mixin;
|
||||||
|
import chylex.bettercontrols.BetterControlsMod;
|
||||||
|
import chylex.bettercontrols.input.KeyBindingWithModifier;
|
||||||
|
import net.minecraft.client.MinecraftClient;
|
||||||
|
import net.minecraft.client.gui.screen.options.ControlsListWidget;
|
||||||
|
import net.minecraft.client.gui.screen.options.ControlsListWidget.CategoryEntry;
|
||||||
|
import net.minecraft.client.gui.screen.options.ControlsListWidget.Entry;
|
||||||
|
import net.minecraft.client.gui.screen.options.ControlsListWidget.KeyBindingEntry;
|
||||||
|
import net.minecraft.client.gui.screen.options.ControlsOptionsScreen;
|
||||||
|
import net.minecraft.client.gui.widget.ElementListWidget;
|
||||||
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
@Mixin(ControlsListWidget.class)
|
||||||
|
public abstract class HookControlsListWidget extends ElementListWidget<Entry>{
|
||||||
|
public HookControlsListWidget(final MinecraftClient client, final int width, final int height, final int top, final int bottom, final int itemHeight){
|
||||||
|
super(client, width, height, top, bottom, itemHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject(method = "<init>", at = @At("TAIL"))
|
||||||
|
public void init(final ControlsOptionsScreen parent, final MinecraftClient client, final CallbackInfo ci){
|
||||||
|
children().removeIf(it -> {
|
||||||
|
if (it instanceof CategoryEntry && KeyBindingWithModifier.checkCategoryMatches(((AccessControlsListCategory)it).getText())){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (it instanceof KeyBindingEntry && ArrayUtils.contains(BetterControlsMod.config.getAllKeyBindings(), ((AccessControlsListKeyBinding)it).getBinding())){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -6,10 +6,13 @@
|
|||||||
"mixins": [
|
"mixins": [
|
||||||
"AccessCameraFields",
|
"AccessCameraFields",
|
||||||
"AccessClientPlayerFields",
|
"AccessClientPlayerFields",
|
||||||
|
"AccessControlsListCategory",
|
||||||
|
"AccessControlsListKeyBinding",
|
||||||
"AccessKeyBindingFields",
|
"AccessKeyBindingFields",
|
||||||
"AccessScreenButtons",
|
"AccessScreenButtons",
|
||||||
"HookClientPlayerInputTick",
|
"HookClientPlayerInputTick",
|
||||||
"HookClientPlayerTick",
|
"HookClientPlayerTick",
|
||||||
|
"HookControlsListWidget",
|
||||||
"HookLoadGameOptions",
|
"HookLoadGameOptions",
|
||||||
"HookOpenScreen",
|
"HookOpenScreen",
|
||||||
"HookStickyKeyBindingState"
|
"HookStickyKeyBindingState"
|
||||||
|
Loading…
Reference in New Issue
Block a user