1
0
mirror of https://github.com/chylex/Better-Controls.git synced 2025-04-22 18:15:46 +02:00

Update for Minecraft 1.21

Closes 
This commit is contained in:
chylex 2024-07-01 23:12:12 +02:00
parent ffc5c00201
commit 73a6571f20
Signed by: chylex
GPG Key ID: 4DE42C8F19A80548
4 changed files with 18 additions and 18 deletions

View File

@ -16,8 +16,8 @@ import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.CycleButton;
import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.client.gui.screens.OptionsSubScreen;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.options.OptionsSubScreen;
import net.minecraft.network.chat.Component;
import org.jetbrains.annotations.Nullable;
import org.lwjgl.glfw.GLFW;
@ -211,9 +211,7 @@ public class BetterControlsScreen extends OptionsSubScreen {
}
@Override
public void init() {
super.init();
protected void addContents() {
allKeyBindings.clear();
final List<GuiEventListener> elements = new ArrayList<>();
@ -234,6 +232,9 @@ public class BetterControlsScreen extends OptionsSubScreen {
optionsWidget = addRenderableWidget(new OptionListWidget(width, layout.getContentHeight(), layout.getHeaderHeight(), y - TITLE_MARGIN_TOP + BOTTOM_PADDING, elements));
}
@Override
protected void addOptions() {}
@Override
protected void repositionElements() {
super.repositionElements();

View File

@ -5,8 +5,8 @@ import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
import net.minecraft.client.Options;
import net.minecraft.client.gui.components.ContainerObjectSelectionList;
import net.minecraft.client.gui.screens.controls.KeyBindsList;
import net.minecraft.client.gui.screens.controls.KeyBindsList.Entry;
import net.minecraft.client.gui.screens.options.controls.KeyBindsList;
import net.minecraft.client.gui.screens.options.controls.KeyBindsList.Entry;
import org.apache.commons.lang3.ArrayUtils;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;

View File

@ -4,14 +4,13 @@ import chylex.bettercontrols.gui.BetterControlsScreen;
import net.minecraft.client.Minecraft;
import net.minecraft.client.Options;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.OptionsList;
import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.client.gui.screens.OptionsSubScreen;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.controls.ControlsScreen;
import net.minecraft.client.gui.screens.options.OptionsSubScreen;
import net.minecraft.client.gui.screens.options.controls.ControlsScreen;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@ -24,20 +23,18 @@ public abstract class HookControlsScreen extends OptionsSubScreen {
super(parentScreen, options, title);
}
@Inject(method = "init", at = @At("RETURN"))
public void afterInit(final CallbackInfo ci) {
@Inject(method = "addOptions", at = @At("RETURN"))
public void afterAddOptions(final CallbackInfo ci) {
@SuppressWarnings("ConstantConditions")
final ControlsScreen screen = (ControlsScreen)(Object)this;
for (final GuiEventListener child : children()) {
if (child instanceof final OptionsList optionsList) {
final MutableComponent buttonTitle = BetterControlsScreen.TITLE.plainCopy().append("...");
optionsList.addSmall(List.of(Button.builder(buttonTitle, btn -> showOptionsScreen(screen)).build()));
break;
}
if (list != null) {
final MutableComponent buttonTitle = BetterControlsScreen.TITLE.plainCopy().append("...");
list.addSmall(List.of(Button.builder(buttonTitle, btn -> showOptionsScreen(screen)).build()));
}
}
@Unique
private static void showOptionsScreen(final ControlsScreen screen) {
final Minecraft mc = Minecraft.getInstance();
mc.setScreen(new BetterControlsScreen(mc, screen));

View File

@ -10,12 +10,14 @@ import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(Options.class)
public abstract class HookLoadGameOptions {
@Unique
private boolean hasLoaded = false;
@Mutable