From d94174e4135deaa4d4cb097df5ece4b43821078d Mon Sep 17 00:00:00 2001 From: Wartich <46074580+Wartich@users.noreply.github.com> Date: Thu, 5 Mar 2026 11:25:15 +0300 Subject: [PATCH] Default lockon improvement --- .../entities/instances/PartGun.java | 6 +++--- .../packloading/LegacyCompatSystem.java | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/mccore/src/main/java/minecrafttransportsimulator/entities/instances/PartGun.java b/mccore/src/main/java/minecrafttransportsimulator/entities/instances/PartGun.java index 7fc6931c0..4da540497 100644 --- a/mccore/src/main/java/minecrafttransportsimulator/entities/instances/PartGun.java +++ b/mccore/src/main/java/minecrafttransportsimulator/entities/instances/PartGun.java @@ -808,10 +808,10 @@ private void handleControl(IWrapperEntity controller) { case DEFAULT: { //Default gets target based on controller eyes and where they are looking. //Need to get their eye position though, not their main position, for accurate targeting. - //Also, don't use gun max distance here, since that's only for boresight. + //Uses lockRange and lockMaxAngle from JSON like boresight. startPoint = controller.getEyePosition(); - searchVector = controller.getLineOfSight(RAYTRACE_DISTANCE); - coneAngle = DEFAULT_CONE_ANGLE; + searchVector = controller.getLineOfSight(definition.gun.lockRange); + coneAngle = definition.gun.lockMaxAngle; break; } case BORESIGHT: { diff --git a/mccore/src/main/java/minecrafttransportsimulator/packloading/LegacyCompatSystem.java b/mccore/src/main/java/minecrafttransportsimulator/packloading/LegacyCompatSystem.java index 8dbe248f0..c39e840b0 100644 --- a/mccore/src/main/java/minecrafttransportsimulator/packloading/LegacyCompatSystem.java +++ b/mccore/src/main/java/minecrafttransportsimulator/packloading/LegacyCompatSystem.java @@ -1031,6 +1031,12 @@ private static void performPartLegacyCompats(JSONPart definition) { if (definition.gun.targetType == null) { definition.gun.targetType = JSONPart.TargetType.ALL; } + if (definition.gun.lockRange == 0) { + definition.gun.lockRange = 750; + } + if (definition.gun.lockMaxAngle == 0) { + definition.gun.lockMaxAngle = 2.0; + } definition.gun.length = 0; }