Skip to content

Commit ae6d3ed

Browse files
committed
Adapted KeyConflictContext
1 parent 0dca3ba commit ae6d3ed

File tree

4 files changed

+110
-17
lines changed

4 files changed

+110
-17
lines changed

RELEASE_NOTES.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
# Epic Fight in Minecraft 1.21.1 Changelog
22
# Changelog on publishing websites and Discord will be parsed between version header ([x.x.x] - yyyy-mm-dd) and (For Devs) section
33

4+
## [21.13.5] - Unreleased
5+
6+
### For Devs
7+
- Adopted KeyConflictContext for each keybind as documented by [Neoforge](https://docs.neoforged.net/docs/misc/keymappings/#ikeyconflictcontext) to avoid potential problem from inconsistency
8+
- Made GUARD and DODGE CombatKeyMapping, to activate only in Epic Fight mode
9+
410
## [21.13.4] - 2025-11-04
511

612
### Changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ loader_version_range=[4,)
1919
mod_id=epicfight
2020
mod_name=Epic Fight
2121
mod_license=GNU GENERAL PUBLIC LICENSE
22-
mod_version=21.13.4
22+
mod_version=21.13.5
2323
mod_group_id=yesman.epicfight
2424
mod_authors=Yesman(a.k.a maninthe_home)
2525
mod_description=Fight til u dead

src/main/java/yesman/epicfight/client/input/CombatKeyMapping.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,25 @@
55
import net.minecraft.client.KeyMapping;
66
import net.neoforged.api.distmarker.Dist;
77
import net.neoforged.api.distmarker.OnlyIn;
8+
import net.neoforged.neoforge.client.settings.KeyConflictContext;
9+
import org.jetbrains.annotations.NotNull;
810
import yesman.epicfight.client.ClientEngine;
911

1012
@OnlyIn(Dist.CLIENT)
1113
public class CombatKeyMapping extends KeyMapping {
14+
public CombatKeyMapping(String description, int code, String category) {
15+
this(description, InputConstants.Type.KEYSYM, code, category);
16+
}
17+
18+
/**
19+
* This key mapping only applies {@link KeyConflictContext#IN_GAME} since it represents player moves
20+
*/
1221
public CombatKeyMapping(String description, InputConstants.Type type, int code, String category) {
13-
super(description, type, code, category);
22+
super(description, KeyConflictContext.IN_GAME, type, code, category);
1423
}
1524

1625
@Override
17-
public boolean isActiveAndMatches(InputConstants.Key keyCode) {
26+
public boolean isActiveAndMatches(@NotNull InputConstants.Key keyCode) {
1827
return super.isActiveAndMatches(keyCode) && ClientEngine.getInstance().isEpicFightMode();
1928
}
2029
}

src/main/java/yesman/epicfight/client/input/EpicFightKeyMappings.java

Lines changed: 92 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,105 @@
77
import net.neoforged.bus.api.SubscribeEvent;
88
import net.neoforged.fml.common.EventBusSubscriber;
99
import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent;
10+
import net.neoforged.neoforge.client.settings.KeyConflictContext;
1011
import yesman.epicfight.main.EpicFightMod;
1112

1213
@EventBusSubscriber(value = Dist.CLIENT)
1314
public class EpicFightKeyMappings {
1415

15-
// GUI
16-
public static final KeyMapping WEAPON_INNATE_SKILL_TOOLTIP = new KeyMapping(EpicFightMod.format("key.%s.show_tooltip"), InputConstants.KEY_LSHIFT, EpicFightMod.format("key.%s.gui"));
17-
public static final KeyMapping SKILL_EDIT = new KeyMapping(EpicFightMod.format("key.%s.skill_gui"), InputConstants.KEY_K, EpicFightMod.format("key.%s.gui"));
18-
public static final KeyMapping OPEN_CONFIG_SCREEN = new KeyMapping(EpicFightMod.format("key.%s.config"), -1, EpicFightMod.format("key.%s.gui"));
16+
// Key mappings for GUI
17+
public static final KeyMapping WEAPON_INNATE_SKILL_TOOLTIP =
18+
new KeyMapping(
19+
EpicFightMod.format("key.%s.show_tooltip"),
20+
KeyConflictContext.GUI,
21+
InputConstants.Type.KEYSYM,
22+
InputConstants.KEY_LSHIFT,
23+
EpicFightMod.format("key.%s.gui")
24+
);
25+
26+
public static final KeyMapping SKILL_EDIT =
27+
new KeyMapping(
28+
EpicFightMod.format("key.%s.skill_gui"),
29+
KeyConflictContext.IN_GAME,
30+
InputConstants.Type.KEYSYM,
31+
InputConstants.KEY_K,
32+
EpicFightMod.format("key.%s.gui")
33+
);
34+
35+
public static final KeyMapping OPEN_CONFIG_SCREEN =
36+
new KeyMapping(
37+
EpicFightMod.format("key.%s.config"),
38+
KeyConflictContext.IN_GAME,
39+
InputConstants.Type.KEYSYM,
40+
-1,
41+
EpicFightMod.format("key.%s.gui")
42+
);
1943

20-
// Ingame
21-
public static final KeyMapping SWITCH_MODE = new KeyMapping(EpicFightMod.format("key.%s.switch_mode"), InputConstants.KEY_R, EpicFightMod.format("key.%s.combat"));
22-
public static final KeyMapping DODGE = new KeyMapping(EpicFightMod.format("key.%s.dodge"), InputConstants.KEY_LALT, EpicFightMod.format("key.%s.combat"));
23-
public static final KeyMapping GUARD = new KeyMapping(EpicFightMod.format("key.%s.guard"), InputConstants.Type.MOUSE, InputConstants.MOUSE_BUTTON_RIGHT, EpicFightMod.format("key.%s.combat"));
24-
public static final KeyMapping ATTACK = new CombatKeyMapping(EpicFightMod.format("key.%s.attack"), InputConstants.Type.MOUSE, InputConstants.MOUSE_BUTTON_LEFT, EpicFightMod.format("key.%s.combat"));
25-
public static final KeyMapping WEAPON_INNATE_SKILL = new CombatKeyMapping(EpicFightMod.format("key.%s.weapon_innate_skill"), InputConstants.Type.MOUSE, InputConstants.MOUSE_BUTTON_LEFT, EpicFightMod.format("key.%s.combat"));
26-
public static final KeyMapping MOVER_SKILL = new CombatKeyMapping(EpicFightMod.format("key.%s.mover_skill"), InputConstants.Type.KEYSYM, InputConstants.KEY_SPACE, EpicFightMod.format("key.%s.combat"));
27-
public static final KeyMapping LOCK_ON = new KeyMapping(EpicFightMod.format("key.%s.lock_on"), InputConstants.KEY_G, EpicFightMod.format("key.%s.combat"));
44+
// Ingame key mappings
45+
public static final KeyMapping DODGE =
46+
new CombatKeyMapping(
47+
EpicFightMod.format("key.%s.dodge"),
48+
InputConstants.KEY_LALT,
49+
EpicFightMod.format("key.%s.combat")
50+
);
51+
52+
public static final KeyMapping GUARD =
53+
new CombatKeyMapping(
54+
EpicFightMod.format("key.%s.guard"),
55+
InputConstants.Type.MOUSE,
56+
InputConstants.MOUSE_BUTTON_RIGHT,
57+
EpicFightMod.format("key.%s.combat")
58+
);
59+
60+
public static final KeyMapping ATTACK =
61+
new CombatKeyMapping(
62+
EpicFightMod.format("key.%s.attack"),
63+
InputConstants.Type.MOUSE,
64+
InputConstants.MOUSE_BUTTON_LEFT,
65+
EpicFightMod.format("key.%s.combat"));
66+
67+
public static final KeyMapping WEAPON_INNATE_SKILL =
68+
new CombatKeyMapping(
69+
EpicFightMod.format("key.%s.weapon_innate_skill"),
70+
InputConstants.Type.MOUSE,
71+
InputConstants.MOUSE_BUTTON_LEFT,
72+
EpicFightMod.format("key.%s.combat")
73+
);
74+
75+
public static final KeyMapping MOVER_SKILL =
76+
new CombatKeyMapping(
77+
EpicFightMod.format("key.%s.mover_skill"),
78+
InputConstants.KEY_SPACE,
79+
EpicFightMod.format("key.%s.combat")
80+
);
81+
82+
public static final KeyMapping SWITCH_MODE =
83+
new KeyMapping(
84+
EpicFightMod.format("key.%s.switch_mode"),
85+
KeyConflictContext.IN_GAME,
86+
InputConstants.Type.KEYSYM,
87+
InputConstants.KEY_R,
88+
EpicFightMod.format("key.%s.combat")
89+
);
90+
91+
public static final KeyMapping LOCK_ON =
92+
new KeyMapping(
93+
EpicFightMod.format("key.%s.lock_on"),
94+
KeyConflictContext.IN_GAME,
95+
InputConstants.Type.KEYSYM,
96+
InputConstants.KEY_G,
97+
EpicFightMod.format("key.%s.combat")
98+
);
2899

29-
// System
30-
public static final KeyMapping SWITCH_VANILLA_MODEL_DEBUGGING = new KeyMapping(EpicFightMod.format("key.%s.switch_vanilla_model_debug"), -1, EpicFightMod.format("key.%s.system"));
100+
// Systemical key mappings especially for debugging
101+
public static final KeyMapping SWITCH_VANILLA_MODEL_DEBUGGING =
102+
new KeyMapping(
103+
EpicFightMod.format("key.%s.switch_vanilla_model_debug"),
104+
KeyConflictContext.IN_GAME,
105+
InputConstants.Type.KEYSYM,
106+
-1,
107+
EpicFightMod.format("key.%s.system")
108+
);
31109

32110
@SubscribeEvent
33111
public static void registerKeys(RegisterKeyMappingsEvent event) {

0 commit comments

Comments
 (0)