mirror of
https://github.com/chylex/Better-Controls.git
synced 2025-04-30 14:34:04 +02:00
parent
ffc5c00201
commit
73a6571f20
src/main/java/chylex/bettercontrols
@ -16,8 +16,8 @@ import net.minecraft.client.KeyMapping;
|
|||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.gui.components.CycleButton;
|
import net.minecraft.client.gui.components.CycleButton;
|
||||||
import net.minecraft.client.gui.components.events.GuiEventListener;
|
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.Screen;
|
||||||
|
import net.minecraft.client.gui.screens.options.OptionsSubScreen;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
@ -211,9 +211,7 @@ public class BetterControlsScreen extends OptionsSubScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() {
|
protected void addContents() {
|
||||||
super.init();
|
|
||||||
|
|
||||||
allKeyBindings.clear();
|
allKeyBindings.clear();
|
||||||
|
|
||||||
final List<GuiEventListener> elements = new ArrayList<>();
|
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));
|
optionsWidget = addRenderableWidget(new OptionListWidget(width, layout.getContentHeight(), layout.getHeaderHeight(), y - TITLE_MARGIN_TOP + BOTTOM_PADDING, elements));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addOptions() {}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void repositionElements() {
|
protected void repositionElements() {
|
||||||
super.repositionElements();
|
super.repositionElements();
|
||||||
|
@ -5,8 +5,8 @@ import net.minecraft.client.KeyMapping;
|
|||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.Options;
|
import net.minecraft.client.Options;
|
||||||
import net.minecraft.client.gui.components.ContainerObjectSelectionList;
|
import net.minecraft.client.gui.components.ContainerObjectSelectionList;
|
||||||
import net.minecraft.client.gui.screens.controls.KeyBindsList;
|
import net.minecraft.client.gui.screens.options.controls.KeyBindsList;
|
||||||
import net.minecraft.client.gui.screens.controls.KeyBindsList.Entry;
|
import net.minecraft.client.gui.screens.options.controls.KeyBindsList.Entry;
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
@ -4,14 +4,13 @@ import chylex.bettercontrols.gui.BetterControlsScreen;
|
|||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.Options;
|
import net.minecraft.client.Options;
|
||||||
import net.minecraft.client.gui.components.Button;
|
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.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.Component;
|
||||||
import net.minecraft.network.chat.MutableComponent;
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
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.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
@ -24,20 +23,18 @@ public abstract class HookControlsScreen extends OptionsSubScreen {
|
|||||||
super(parentScreen, options, title);
|
super(parentScreen, options, title);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject(method = "init", at = @At("RETURN"))
|
@Inject(method = "addOptions", at = @At("RETURN"))
|
||||||
public void afterInit(final CallbackInfo ci) {
|
public void afterAddOptions(final CallbackInfo ci) {
|
||||||
@SuppressWarnings("ConstantConditions")
|
@SuppressWarnings("ConstantConditions")
|
||||||
final ControlsScreen screen = (ControlsScreen)(Object)this;
|
final ControlsScreen screen = (ControlsScreen)(Object)this;
|
||||||
|
|
||||||
for (final GuiEventListener child : children()) {
|
if (list != null) {
|
||||||
if (child instanceof final OptionsList optionsList) {
|
final MutableComponent buttonTitle = BetterControlsScreen.TITLE.plainCopy().append("...");
|
||||||
final MutableComponent buttonTitle = BetterControlsScreen.TITLE.plainCopy().append("...");
|
list.addSmall(List.of(Button.builder(buttonTitle, btn -> showOptionsScreen(screen)).build()));
|
||||||
optionsList.addSmall(List.of(Button.builder(buttonTitle, btn -> showOptionsScreen(screen)).build()));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Unique
|
||||||
private static void showOptionsScreen(final ControlsScreen screen) {
|
private static void showOptionsScreen(final ControlsScreen screen) {
|
||||||
final Minecraft mc = Minecraft.getInstance();
|
final Minecraft mc = Minecraft.getInstance();
|
||||||
mc.setScreen(new BetterControlsScreen(mc, screen));
|
mc.setScreen(new BetterControlsScreen(mc, screen));
|
||||||
|
@ -10,12 +10,14 @@ import org.spongepowered.asm.mixin.Final;
|
|||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Mutable;
|
import org.spongepowered.asm.mixin.Mutable;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
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.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
@Mixin(Options.class)
|
@Mixin(Options.class)
|
||||||
public abstract class HookLoadGameOptions {
|
public abstract class HookLoadGameOptions {
|
||||||
|
@Unique
|
||||||
private boolean hasLoaded = false;
|
private boolean hasLoaded = false;
|
||||||
|
|
||||||
@Mutable
|
@Mutable
|
||||||
|
Loading…
Reference in New Issue
Block a user