diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index a35429f8983..0c54457cd67 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -2594,6 +2594,7 @@ "gtceu.key.enable_boots": "Enable Boosted Jump", "gtceu.key.enable_jetpack": "Enable Jetpack", "gtceu.key.tool_aoe_change": "Tool AoE Mode Switch", + "gtceu.key.enable_step_assist": "Enable StepAssist", "gtceu.large_boiler": "Large Boiler", "gtceu.large_chemical_reactor": "Large Chemical Reactor", "gtceu.laser_engraver": "Laser Engraver", @@ -5671,20 +5672,26 @@ "metaarmor.message.nightvision.disabled": "§bNightVision: §cOff", "metaarmor.message.nightvision.enabled": "§bNightVision: §aOn", "metaarmor.message.nightvision.error": "§cNot enough power!", - "metaarmor.nms.boosted_jump.disabled": "NanoMuscle™ Suite: Jump Boost Disabled", - "metaarmor.nms.boosted_jump.enabled": "NanoMuscle™ Suite: Jump Boost Enabled", + "metaarmor.message.step_assist.disabled": "StepAssist: §cOff", + "metaarmor.message.step_assist.enabled": "StepAssist: §aOn", "metaarmor.nms.nightvision.disabled": "NanoMuscle™ Suite: NightVision Disabled", "metaarmor.nms.nightvision.enabled": "NanoMuscle™ Suite: NightVision Enabled", "metaarmor.nms.nightvision.error": "NanoMuscle™ Suite: §cNot enough power!", - "metaarmor.nms.share.disable": "NanoMuscle™ Suite: Charging Disabled", - "metaarmor.nms.share.enable": "NanoMuscle™ Suite: Charging Enabled", - "metaarmor.nms.share.error": "NanoMuscle™ Suite: §cNot enough power for charging!", "metaarmor.qts.nightvision.disabled": "QuarkTech™ Suite: NightVision Disabled", "metaarmor.qts.nightvision.enabled": "QuarkTech™ Suite: NightVision Enabled", "metaarmor.qts.nightvision.error": "QuarkTech™ Suite: §cNot enough power!", + "metaarmor.nms.step_assist.disabled": "NanoMuscle™ Suite: StepAssist Disabled", + "metaarmor.nms.step_assist.enabled": "NanoMuscle™ Suite: StepAssist Enabled", + "metaarmor.qts.step_assist.disabled": "QuarkTech™ Suite: StepAssist Disabled", + "metaarmor.qts.step_assist.enabled": "QuarkTech™ Suite: StepAssist Enabled", + "metaarmor.nms.share.disable": "NanoMuscle™ Suite: Charging Disabled", + "metaarmor.nms.share.enable": "NanoMuscle™ Suite: Charging Enabled", + "metaarmor.nms.share.error": "NanoMuscle™ Suite: §cNot enough power for charging!", "metaarmor.qts.share.disable": "QuarkTech™ Suite: Charging Disabled", "metaarmor.qts.share.enable": "QuarkTech™ Suite: Charging Enabled", "metaarmor.qts.share.error": "QuarkTech™ Suite: §cNot enough power for charging!", + "metaarmor.qts.boosted_jump.disabled": "QuarkTech™ Suite: Jump Boost Disabled", + "metaarmor.qts.boosted_jump.enabled": "QuarkTech™ Suite: Jump Boost Enabled", "metaarmor.tooltip.autoeat": "Replenishes Food Bar by Using Food from Inventory", "metaarmor.tooltip.breath": "Replenishes Underwater Breath Bar", "metaarmor.tooltip.burning": "Nullifies Burning", diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/NanoMuscleSuite.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/NanoMuscleSuite.java index b3c62d5c22c..546c6a24ccb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/NanoMuscleSuite.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/NanoMuscleSuite.java @@ -51,19 +51,36 @@ public void onArmorTick(Level world, Player player, ItemStack itemStack) { return; } CompoundTag data = itemStack.getOrCreateTag(); - byte toggleTimer = data.contains("toggleTimer") ? data.getByte("toggleTimer") : 0; - int nightVisionTimer = data.contains("nightVisionTimer") ? data.getInt("nightVisionTimer") : - ArmorUtils.NIGHTVISION_DURATION; + + byte toggleStepTimer = data.getByte("toggleStepTimer"); + if (type == ArmorItem.Type.BOOTS) { + boolean stepAssist = data.contains("stepAssist") && data.getBoolean("stepAssist"); + if (toggleStepTimer == 0 && SyncedKeyMappings.STEP_ASSIST_ENABLE.isKeyDown(player)) { + stepAssist = !stepAssist; + toggleStepTimer = 5; + if (world.isClientSide()) player.displayClientMessage(Component + .translatable("metaarmor.nms.step_assist." + (stepAssist ? "enabled" : "disabled")), true); + data.putBoolean("stepAssist", stepAssist); + } + + if (toggleStepTimer > 0) toggleStepTimer--; + data.putInt("toggleStepTimer", toggleStepTimer); + } + if (type == ArmorItem.Type.HELMET) { + byte toggleTimer = data.contains("toggleTimer") ? data.getByte("toggleTimer") : 0; + int nightVisionTimer = data.contains("nightVisionTimer") ? data.getInt("nightVisionTimer") : + ArmorUtils.NIGHTVISION_DURATION; boolean nightVision = data.contains("nightVision") && data.getBoolean("nightVision"); if (toggleTimer == 0 && SyncedKeyMappings.ARMOR_MODE_SWITCH.isKeyDown(player)) { nightVision = !nightVision; toggleTimer = 5; if (item.getCharge() < ArmorUtils.MIN_NIGHTVISION_CHARGE) { nightVision = false; - player.displayClientMessage(Component.translatable("metaarmor.nms.nightvision.error"), true); + if (world.isClientSide()) + player.displayClientMessage(Component.translatable("metaarmor.nms.nightvision.error"), true); } else { - player.displayClientMessage(Component + if (world.isClientSide()) player.displayClientMessage(Component .translatable("metaarmor.nms.nightvision." + (nightVision ? "enabled" : "disabled")), true); } } @@ -81,14 +98,11 @@ public void onArmorTick(Level world, Player player, ItemStack itemStack) { player.removeEffect(MobEffects.NIGHT_VISION); } data.putBoolean("nightVision", nightVision); - + if (nightVisionTimer > 0) nightVisionTimer--; + if (toggleTimer > 0) toggleTimer--; + data.putInt("nightVisionTimer", nightVisionTimer); + data.putByte("toggleTimer", toggleTimer); } - - if (nightVisionTimer > 0) nightVisionTimer--; - if (toggleTimer > 0) toggleTimer--; - - data.putInt("nightVisionTimer", nightVisionTimer); - data.putByte("toggleTimer", toggleTimer); } public static void disableNightVision(@NotNull Level world, Player player, boolean sendMsg) { @@ -163,8 +177,9 @@ public void drawHUD(ItemStack item, GuiGraphics guiGraphics) { @Override public void addInfo(ItemStack itemStack, List lines) { super.addInfo(itemStack, lines); + CompoundTag nbtData = itemStack.getOrCreateTag(); if (type == ArmorItem.Type.HELMET) { - CompoundTag nbtData = itemStack.getOrCreateTag(); + boolean nv = nbtData.getBoolean("nightVision"); if (nv) { lines.add(Component.translatable("metaarmor.message.nightvision.enabled")); @@ -172,7 +187,9 @@ public void addInfo(ItemStack itemStack, List lines) { lines.add(Component.translatable("metaarmor.message.nightvision.disabled")); } } else if (type == ArmorItem.Type.BOOTS) { - lines.add(Component.translatable("metaarmor.tooltip.stepassist")); + if (nbtData.getBoolean("stepAssist")) + lines.add(Component.translatable("metaarmor.message.step_assist.enabled")); + else lines.add(Component.translatable("metaarmor.message.step_assist.disabled")); lines.add(Component.translatable("metaarmor.tooltip.falldamage")); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java index c0faac5aed3..4c245423a1c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java @@ -77,7 +77,7 @@ public void onArmorTick(Level world, Player player, ItemStack itemStack) { int nightVisionTimer = data.contains("nightVisionTimer") ? data.getInt("nightVisionTimer") : ArmorUtils.NIGHTVISION_DURATION; byte runningTimer = data.contains("runningTimer") ? data.getByte("runningTimer") : RUNNING_TIMER; - byte boostedJumpTimer = data.contains("boostedJumpTimer") ? data.getByte("boostedJumpTimer") : JUMPING_TIMER; + byte toggleBootsTimer = data.contains("toggleBootsTimer") ? data.getByte("toggleBootsTimer") : JUMPING_TIMER; if (!player.getItemBySlot(EquipmentSlot.CHEST).is(GTItems.QUANTUM_CHESTPLATE.get()) && !player.getItemBySlot(EquipmentSlot.CHEST).is(GTItems.QUANTUM_CHESTPLATE_ADVANCED.get())) { @@ -98,10 +98,10 @@ public void onArmorTick(Level world, Player player, ItemStack itemStack) { toggleTimer = 5; if (item.getCharge() < ArmorUtils.MIN_NIGHTVISION_CHARGE) { nightVision = false; - player.displayClientMessage(Component.translatable("metaarmor.nms.nightvision.error"), true); + player.displayClientMessage(Component.translatable("metaarmor.qts.nightvision.error"), true); } else { player.displayClientMessage(Component - .translatable("metaarmor.nms.nightvision." + (nightVision ? "enabled" : "disabled")), true); + .translatable("metaarmor.qts.nightvision." + (nightVision ? "enabled" : "disabled")), true); } } @@ -162,11 +162,11 @@ public void onArmorTick(Level world, Player player, ItemStack itemStack) { boolean canUseEnergy = item.canUse(energyPerUse / 100); boolean jumping = SyncedKeyMappings.VANILLA_JUMP.isKeyDown(player); boolean boostedJump = data.contains("boostedJump") && data.getBoolean("boostedJump"); - if (boostedJumpTimer == 0 && SyncedKeyMappings.BOOTS_ENABLE.isKeyDown(player)) { + if (toggleBootsTimer == 0 && SyncedKeyMappings.BOOTS_ENABLE.isKeyDown(player)) { boostedJump = !boostedJump; - boostedJumpTimer = JUMPING_TIMER; + toggleBootsTimer = JUMPING_TIMER; player.displayClientMessage(Component - .translatable("metaarmor.nms.boosted_jump." + (boostedJump ? "enabled" : "disabled")), true); + .translatable("metaarmor.qts.boosted_jump." + (boostedJump ? "enabled" : "disabled")), true); } if (boostedJump) { if (!world.isClientSide) { @@ -199,11 +199,19 @@ public void onArmorTick(Level world, Player player, ItemStack itemStack) { } } } - data.putBoolean("boostedJump", boostedJump); - if (boostedJumpTimer > 0) boostedJumpTimer--; + boolean stepAssist = data.contains("stepAssist") && data.getBoolean("stepAssist"); + if (toggleBootsTimer == 0 && SyncedKeyMappings.STEP_ASSIST_ENABLE.isKeyDown(player)) { + stepAssist = !stepAssist; + toggleBootsTimer = 5; + if (world.isClientSide()) player.displayClientMessage(Component + .translatable("metaarmor.qts.step_assist." + (stepAssist ? "enabled" : "disabled")), true); + data.putBoolean("stepAssist", stepAssist); + } - data.putInt("boostedJumpTimer", boostedJumpTimer); + data.putBoolean("boostedJump", boostedJump); + if (toggleBootsTimer > 0) toggleBootsTimer--; + data.putInt("toggleBootsTimer", toggleBootsTimer); } if (ret) { @@ -357,7 +365,10 @@ public void addInfo(ItemStack itemStack, List lines) { } else if (type == ArmorItem.Type.LEGGINGS) { lines.add(Component.translatable("metaarmor.tooltip.speed")); } else if (type == ArmorItem.Type.BOOTS) { - lines.add(Component.translatable("metaarmor.tooltip.stepassist")); + CompoundTag nbtData = itemStack.getOrCreateTag(); + if (nbtData.getBoolean("stepAssist")) + lines.add(Component.translatable("metaarmor.message.step_assist.enabled")); + else lines.add(Component.translatable("metaarmor.message.step_assist.disabled")); lines.add(Component.translatable("metaarmor.tooltip.falldamage")); lines.add(Component.translatable("metaarmor.tooltip.jump")); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index 8a903d631d7..2c6660c0284 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -305,12 +305,16 @@ public static void init(RegistrateLangProvider provider) { provider.add("metaitem.liquid_fuel_jetpack.tooltip", "Uses Combustion Generator Fuels for Thrust"); provider.add("metaarmor.nms.nightvision.enabled", "NanoMuscle™ Suite: NightVision Enabled"); provider.add("metaarmor.nms.nightvision.disabled", "NanoMuscle™ Suite: NightVision Disabled"); - provider.add("metaarmor.nms.boosted_jump.enabled", "NanoMuscle™ Suite: Jump Boost Enabled"); - provider.add("metaarmor.nms.boosted_jump.disabled", "NanoMuscle™ Suite: Jump Boost Disabled"); provider.add("metaarmor.nms.nightvision.error", "NanoMuscle™ Suite: §cNot enough power!"); provider.add("metaarmor.qts.nightvision.enabled", "QuarkTech™ Suite: NightVision Enabled"); provider.add("metaarmor.qts.nightvision.disabled", "QuarkTech™ Suite: NightVision Disabled"); provider.add("metaarmor.qts.nightvision.error", "QuarkTech™ Suite: §cNot enough power!"); + provider.add("metaarmor.nms.step_assist.disabled", "NanoMuscle™ Suite: StepAssist Disabled"); + provider.add("metaarmor.nms.step_assist.enabled", "NanoMuscle™ Suite: StepAssist Enabled"); + provider.add("metaarmor.qts.step_assist.disabled", "QuarkTech™ Suite: StepAssist Disabled"); + provider.add("metaarmor.qts.step_assist.enabled", "QuarkTech™ Suite: StepAssist Enabled"); + provider.add("metaarmor.qts.boosted_jump.enabled", "QuarkTech™ Suite: Jump Boost Enabled"); + provider.add("metaarmor.qts.boosted_jump.disabled", "QuarkTech™ Suite: Jump Boost Disabled"); provider.add("metaarmor.jetpack.flight.enable", "Jetpack: Flight Enabled"); provider.add("metaarmor.jetpack.flight.disable", "Jetpack: Flight Disabled"); provider.add("metaarmor.jetpack.hover.enable", "Jetpack: Hover Mode Enabled"); @@ -1204,6 +1208,7 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.key.enable_boots", "Enable Boosted Jump"); provider.add("gtceu.key.armor_charging", "Armor Charging to Inventory Toggle"); provider.add("gtceu.key.tool_aoe_change", "Tool AoE Mode Switch"); + provider.add("gtceu.key.enable_step_assist", "Enable StepAssist"); provider.add("gtceu.debug.f3_h.enabled", "GregTech has modified the debug info! For Developers: enable the misc:debug config option in the GregTech config file to see more"); provider.add("config.jade.plugin_gtceu.controllable_provider", "[GTCEu] Controllable"); diff --git a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java index beeb8ad9a40..46edb2fac7b 100644 --- a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java @@ -415,7 +415,9 @@ public static void playerTickEvent(TickEvent.PlayerTickEvent event) { public static void stepAssistHandler(LivingEvent.LivingTickEvent event) { float MAGIC_STEP_HEIGHT = 1.0023f; if (event.getEntity() == null || !(event.getEntity() instanceof Player player)) return; - if (!player.isCrouching() && player.getItemBySlot(EquipmentSlot.FEET).is(CustomTags.STEP_BOOTS)) { + CompoundTag tag = player.getItemBySlot(EquipmentSlot.FEET).getOrCreateTag(); + if (!player.isCrouching() && player.getItemBySlot(EquipmentSlot.FEET).is(CustomTags.STEP_BOOTS) && + (!tag.contains("stepAssist") || tag.getBoolean("stepAssist"))) { if (player.getStepHeight() < MAGIC_STEP_HEIGHT) { player.setMaxUpStep(MAGIC_STEP_HEIGHT); } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappings.java b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappings.java index c609389d887..f59598a7104 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappings.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappings.java @@ -38,6 +38,9 @@ public final class SyncedKeyMappings { "gtceu.key.armor_charging", KeyConflictContext.IN_GAME, InputConstants.KEY_N); public static final SyncedKeyMapping TOOL_AOE_CHANGE = SyncedKeyMapping.createConfigurable( "gtceu.key.tool_aoe_change", KeyConflictContext.IN_GAME, InputConstants.KEY_V); + public static final SyncedKeyMapping STEP_ASSIST_ENABLE = SyncedKeyMapping.createConfigurable( + "gtceu.key.enable_step_assist", KeyConflictContext.IN_GAME, + InputConstants.KEY_APOSTROPHE); public static void init() { if (GTCEu.isClientSide()) {