HookControlsListWidget.java 1.2 KB

123456789101112131415161718192021222324
  1. package chylex.bettercontrols.mixin;
  2. import chylex.bettercontrols.BetterControlsCommon;
  3. import net.minecraft.client.KeyMapping;
  4. import net.minecraft.client.Minecraft;
  5. import net.minecraft.client.Options;
  6. import net.minecraft.client.gui.components.ContainerObjectSelectionList;
  7. import net.minecraft.client.gui.screens.controls.ControlList;
  8. import net.minecraft.client.gui.screens.controls.ControlList.Entry;
  9. import org.apache.commons.lang3.ArrayUtils;
  10. import org.spongepowered.asm.mixin.Mixin;
  11. import org.spongepowered.asm.mixin.injection.At;
  12. import org.spongepowered.asm.mixin.injection.Redirect;
  13. @Mixin(ControlList.class)
  14. public abstract class HookControlsListWidget extends ContainerObjectSelectionList<Entry> {
  15. public HookControlsListWidget(final Minecraft client, final int width, final int height, final int top, final int bottom, final int itemHeight) {
  16. super(client, width, height, top, bottom, itemHeight);
  17. }
  18. @Redirect(method = "<init>", at = @At(value = "FIELD", target = "Lnet/minecraft/client/Options;keyMappings:[Lnet/minecraft/client/KeyMapping;"))
  19. private KeyMapping[] excludeOwnKeyBindings(final Options options) {
  20. return ArrayUtils.removeElements(options.keyMappings, BetterControlsCommon.getConfig().getAllKeyBindings());
  21. }
  22. }