Add icons in controls menu.

This commit is contained in:
LambdAurora
2019-12-15 19:47:49 +01:00
parent 1d7c48cf59
commit 2e6b2f8434
8 changed files with 207 additions and 51 deletions

View File

@@ -12,6 +12,7 @@ package me.lambdaurora.lambdacontrols.mixin;
import me.lambdaurora.lambdacontrols.gui.LambdaControlsSettingsScreen;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.SettingsScreen;
import net.minecraft.client.gui.widget.AbstractButtonWidget;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.options.GameOptions;
import net.minecraft.client.resource.language.I18n;
@@ -21,6 +22,7 @@ import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
/**
@@ -38,16 +40,10 @@ public class SettingsScreenMixin extends Screen
super(title);
}
@Inject(method = "init", at = @At("RETURN"))
private void on_init(CallbackInfo ci)
@Redirect(method = "init", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/SettingsScreen;addButton(Lnet/minecraft/client/gui/widget/AbstractButtonWidget;)Lnet/minecraft/client/gui/widget/AbstractButtonWidget;", ordinal = 7))
private AbstractButtonWidget on_init(SettingsScreen screen, AbstractButtonWidget btn)
{
this.buttons.stream().filter(button -> button.getMessage().equals(I18n.translate("options.controls")))
.findFirst()
.ifPresent(btn -> {
this.buttons.remove(btn);
this.children.remove(btn);
this.addButton(new ButtonWidget(btn.x, btn.y, btn.getWidth(), ((AbstractButtonWidgetAccessor) btn).get_height(), btn.getMessage(),
b -> this.minecraft.openScreen(new LambdaControlsSettingsScreen(this, this.settings))));
});
return this.addButton(new ButtonWidget(btn.x, btn.y, btn.getWidth(), ((AbstractButtonWidgetAccessor) btn).get_height(), btn.getMessage(),
b -> this.minecraft.openScreen(new LambdaControlsSettingsScreen(this, this.settings))));
}
}