Skip to content

Commit 92acc6a

Browse files
Implement flight inertia cancellation (#2612)
1 parent 41f3711 commit 92acc6a

File tree

8 files changed

+59
-10
lines changed

8 files changed

+59
-10
lines changed

src/main/java/gregtech/api/util/input/KeyBind.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public enum KeyBind {
3838
VANILLA_RIGHT(() -> () -> Minecraft.getMinecraft().gameSettings.keyBindRight),
3939
ARMOR_MODE_SWITCH("gregtech.key.armor_mode_switch", KeyConflictContext.IN_GAME, Keyboard.KEY_M),
4040
ARMOR_HOVER("gregtech.key.armor_hover", KeyConflictContext.IN_GAME, Keyboard.KEY_H),
41+
ARMOR_CANCEL_INERTIA("gregtech.key.armor_cancel_inertia", KeyConflictContext.IN_GAME, Keyboard.KEY_I),
4142
ARMOR_CHARGING("gregtech.key.armor_charging", KeyConflictContext.IN_GAME, Keyboard.KEY_N),
4243
TOOL_AOE_CHANGE("gregtech.key.tool_aoe_change", KeyConflictContext.IN_GAME, Keyboard.KEY_V);
4344

src/main/java/gregtech/common/items/armor/AdvancedJetpack.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public void onArmorTick(World world, EntityPlayer player, @NotNull ItemStack ite
4444
}
4545
}
4646

47-
performFlying(player, hoverMode, item);
47+
performFlying(player, hoverMode, false, item);
4848

4949
if (toggleTimer > 0) toggleTimer--;
5050

src/main/java/gregtech/common/items/armor/AdvancedNanoMuscleSuite.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ else if (canShare)
7676
data.setBoolean("canShare", canShare);
7777
}
7878

79-
performFlying(player, hoverMode, item);
79+
performFlying(player, hoverMode, false, item);
8080

8181
// Charging mechanics
8282
if (canShare && !world.isRemote) {

src/main/java/gregtech/common/items/armor/AdvancedQuarkTechSuite.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public void onArmorTick(World world, EntityPlayer player, ItemStack item) {
4646

4747
NBTTagCompound data = GTUtility.getOrCreateNbtCompound(item);
4848
boolean hoverMode = data.hasKey("hover") && data.getBoolean("hover");
49+
boolean cancelInertiaMode = data.hasKey("cancelInertia") && data.getBoolean("cancelInertia");
4950
byte toggleTimer = data.hasKey("toggleTimer") ? data.getByte("toggleTimer") : 0;
5051
boolean canShare = data.hasKey("canShare") && data.getBoolean("canShare");
5152

@@ -61,6 +62,20 @@ public void onArmorTick(World world, EntityPlayer player, ItemStack item) {
6162
}
6263
}
6364

65+
if (toggleTimer == 0 && KeyBind.ARMOR_CANCEL_INERTIA.isKeyDown(player)) {
66+
cancelInertiaMode = !cancelInertiaMode;
67+
toggleTimer = 5;
68+
data.setBoolean("cancelInertia", cancelInertiaMode);
69+
if (!world.isRemote) {
70+
if (cancelInertiaMode)
71+
player.sendStatusMessage(new TextComponentTranslation("metaarmor.jetpack.cancel_inertia.enable"),
72+
true);
73+
else
74+
player.sendStatusMessage(new TextComponentTranslation("metaarmor.jetpack.cancel_inertia.disable"),
75+
true);
76+
}
77+
}
78+
6479
if (toggleTimer == 0 && KeyBind.ARMOR_CHARGING.isKeyDown(player)) {
6580
canShare = !canShare;
6681
toggleTimer = 5;
@@ -78,7 +93,7 @@ else if (canShare)
7893
data.setBoolean("canShare", canShare);
7994
}
8095

81-
performFlying(player, hoverMode, item);
96+
performFlying(player, hoverMode, cancelInertiaMode, item);
8297

8398
if (player.isBurning())
8499
player.extinguish();
@@ -130,6 +145,7 @@ else if (canShare)
130145
if (toggleTimer > 0) toggleTimer--;
131146

132147
data.setBoolean("canShare", canShare);
148+
data.setBoolean("cancelInertia", cancelInertiaMode);
133149
data.setBoolean("hover", hoverMode);
134150
data.setByte("toggleTimer", toggleTimer);
135151
player.inventoryContainer.detectAndSendChanges();
@@ -157,6 +173,11 @@ public void addInfo(ItemStack itemStack, List<String> lines) {
157173
status = I18n.format("metaarmor.hud.status.enabled");
158174
}
159175
lines.add(I18n.format("metaarmor.hud.hover_mode", status));
176+
if (data.hasKey("cancelInertia")) {
177+
if (data.getBoolean("cancelInertia"))
178+
status = I18n.format("metaarmor.hud.status.enabled");
179+
}
180+
lines.add(I18n.format("metaarmor.hud.cancel_inertia_mode", status));
160181
super.addInfo(itemStack, lines);
161182
}
162183

@@ -210,6 +231,12 @@ public void drawHUD(ItemStack item) {
210231
"metaarmor.hud.status.disabled";
211232
this.HUD.newString(I18n.format("metaarmor.hud.hover_mode", I18n.format(status)));
212233
}
234+
235+
if (data.hasKey("cancelInertia")) {
236+
String status = data.getBoolean("cancelInertia") ? "metaarmor.hud.status.enabled" :
237+
"metaarmor.hud.status.disabled";
238+
this.HUD.newString(I18n.format("metaarmor.hud.cancel_inertia_mode", I18n.format(status)));
239+
}
213240
}
214241
this.HUD.draw();
215242
this.HUD.reset();

src/main/java/gregtech/common/items/armor/IJetpack.java

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ default float getFallDamageReduction() {
5959

6060
boolean hasEnergy(ItemStack stack);
6161

62-
default void performFlying(@NotNull EntityPlayer player, boolean hover, ItemStack stack) {
62+
default void performFlying(@NotNull EntityPlayer player, boolean hover, boolean cancelInertia, ItemStack stack) {
6363
double currentAccel = getVerticalAcceleration() * (player.motionY < 0.3D ? 2.5D : 1.0D);
6464
double currentSpeedVertical = getVerticalSpeed() * (player.isInWater() ? 0.4D : 1.0D);
6565
boolean flyKeyDown = KeyBind.VANILLA_JUMP.isKeyDown(player);
@@ -89,14 +89,31 @@ default void performFlying(@NotNull EntityPlayer player, boolean hover, ItemStac
8989
float speedForward = (float) (player.isSprinting() ? speedSideways * getSprintSpeedModifier() :
9090
speedSideways);
9191

92-
if (KeyBind.VANILLA_FORWARD.isKeyDown(player))
92+
boolean anyKeyPressed = flyKeyDown || descendKeyDown;
93+
if (KeyBind.VANILLA_FORWARD.isKeyDown(player)) {
9394
player.moveRelative(0, 0, speedForward, speedForward);
94-
if (KeyBind.VANILLA_BACKWARD.isKeyDown(player))
95+
anyKeyPressed = true;
96+
}
97+
if (KeyBind.VANILLA_BACKWARD.isKeyDown(player)) {
9598
player.moveRelative(0, 0, -speedSideways, speedSideways * 0.8f);
96-
if (KeyBind.VANILLA_LEFT.isKeyDown(player))
99+
anyKeyPressed = true;
100+
}
101+
if (KeyBind.VANILLA_LEFT.isKeyDown(player)) {
97102
player.moveRelative(speedSideways, 0, 0, speedSideways);
98-
if (KeyBind.VANILLA_RIGHT.isKeyDown(player))
103+
anyKeyPressed = true;
104+
}
105+
if (KeyBind.VANILLA_RIGHT.isKeyDown(player)) {
99106
player.moveRelative(-speedSideways, 0, 0, speedSideways);
107+
anyKeyPressed = true;
108+
}
109+
110+
/* hover check not needed, because of "flyKeyDown || hover && !player.onGround" check */
111+
if (!anyKeyPressed && cancelInertia) {
112+
player.motionX *= 0.5;
113+
player.motionY *= 0.5;
114+
player.motionZ *= 0.5;
115+
}
116+
100117
if (!player.getEntityWorld().isRemote) {
101118
player.fallDistance = 0;
102119
}

src/main/java/gregtech/common/items/armor/Jetpack.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public void onArmorTick(World world, EntityPlayer player, @NotNull ItemStack sta
5959
}
6060
}
6161

62-
performFlying(player, hover, stack);
62+
performFlying(player, hover, false, stack);
6363

6464
if (toggleTimer > 0) toggleTimer--;
6565

src/main/java/gregtech/common/items/armor/PowerlessJetpack.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public void onArmorTick(World world, EntityPlayer player, @NotNull ItemStack sta
9292
if (currentRecipe == null)
9393
findNewRecipe(stack);
9494

95-
performFlying(player, hover, stack);
95+
performFlying(player, hover, false, stack);
9696

9797
if (toggleTimer > 0)
9898
toggleTimer--;

src/main/resources/assets/gregtech/lang/en_us.lang

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1182,6 +1182,9 @@ metaarmor.qts.nightvision.error=QuarkTech™ Suite: §cNot enough power!
11821182
metaarmor.jetpack.hover.enable=Jetpack: Hover Mode Enabled
11831183
metaarmor.jetpack.hover.disable=Jetpack: Hover Mode Disabled
11841184

1185+
metaarmor.jetpack.cancel_inertia.enable=Jetpack: Inertia Cancellation Enabled
1186+
metaarmor.jetpack.cancel_inertia.disable=Jetpack: Inertia Cancellation Disabled
1187+
11851188
metaarmor.jetpack.emergency_hover_mode=Emergency Hover Mode Enabled!
11861189

11871190
metaarmor.nms.share.enable=NanoMuscle™ Suite: Charging Enabled
@@ -1210,6 +1213,7 @@ metaarmor.hud.status.disabled=§cOFF
12101213
metaarmor.hud.energy_lvl=Energy Level: %s
12111214
metaarmor.hud.fuel_lvl=Fuel Level: %s
12121215
metaarmor.hud.hover_mode=Hover Mode: %s
1216+
metaarmor.hud.cancel_inertia_mode=Inertia Cancellation: %s
12131217
mataarmor.hud.supply_mode=Supply Mode: %s
12141218
metaarmor.hud.gravi_engine=GraviEngine: %s
12151219

0 commit comments

Comments
 (0)