Skip to content
This repository was archived by the owner on Apr 28, 2020. It is now read-only.

Commit 4a915b5

Browse files
gbuiRunemoro
authored andcommitted
Add KeyBindingAdder
1 parent f6f6443 commit 4a915b5

3 files changed

Lines changed: 40 additions & 0 deletions

File tree

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.dimdev.rift.listener.client;
2+
3+
import net.minecraft.client.settings.KeyBinding;
4+
5+
import java.util.Collection;
6+
7+
public interface KeyBindingAdder {
8+
Collection<? extends KeyBinding> getKeyBindings();
9+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.dimdev.rift.mixin.hook.client;
2+
3+
import net.minecraft.client.GameSettings;
4+
import net.minecraft.client.settings.KeyBinding;
5+
import org.dimdev.rift.listener.client.KeyBindingAdder;
6+
import org.dimdev.riftloader.RiftLoader;
7+
import org.spongepowered.asm.mixin.Mixin;
8+
import org.spongepowered.asm.mixin.Shadow;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
12+
13+
import java.util.ArrayList;
14+
import java.util.Collections;
15+
import java.util.List;
16+
17+
@Mixin(GameSettings.class)
18+
public class MixinGameSettings {
19+
@Shadow public KeyBinding[] keyBindings;
20+
21+
@Inject(method = "loadOptions", at = @At("HEAD"))
22+
private void onLoadOptions(CallbackInfo ci) {
23+
List<KeyBinding> keyBindingList = new ArrayList<>(keyBindings.length);
24+
Collections.addAll(keyBindingList, keyBindings);
25+
for (KeyBindingAdder keyBindingAdder : RiftLoader.instance.getListeners(KeyBindingAdder.class)) {
26+
keyBindingList.addAll(keyBindingAdder.getKeyBindings());
27+
}
28+
keyBindings = keyBindingList.toArray(new KeyBinding[0]);
29+
}
30+
}

src/main/resources/mixins.rift.hooks.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
"client.MixinTileEntityRendererDispatcher",
4848
"client.MixinRenderManager",
4949
"client.MixinEntityPlayerSP",
50+
"client.MixinGameSettings",
5051
"client.MixinGuiIngame",
5152
"client.MixinIntegratedServer"
5253
]

0 commit comments

Comments
 (0)