From 6d2c0c3863503afa3f462a180ee4de6b603ecef9 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 27 Sep 2025 09:22:06 -0400 Subject: [PATCH] Turret serverside rotation fix --- .../world/blocks/defense/turrets/Turret.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 5601a6ac06..1eecae2121 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -25,6 +25,7 @@ import mindustry.graphics.*; import mindustry.logic.*; import mindustry.type.*; import mindustry.ui.*; +import mindustry.world.*; import mindustry.world.blocks.*; import mindustry.world.draw.*; import mindustry.world.meta.*; @@ -252,6 +253,14 @@ public class Turret extends ReloadTurret{ public abstract BulletType type(); } + @Override + public void placeEnded(Tile tile, @Nullable Unit builder, int rotation, @Nullable Object config){ + super.placeEnded(tile, builder, rotation, config); + if(rotate && tile.build instanceof TurretBuild turret){ + turret.rotation = tile.build.rotdeg(); + } + } + public class TurretBuild extends ReloadTurretBuild implements ControlBlock{ //TODO storing these as instance variables is horrible design /** Turret sprite offset, based on recoil. Updated every frame. */ @@ -277,20 +286,6 @@ public class Turret extends ReloadTurret{ float lastRangeChange; - @Override - public void placed(){ - super.placed(); - if(rotate){ - rotation = rotdeg(); - } - } - - //overridden so that the rotation isn't affected during repairs (standard placed() code isn't called) - @Override - public void onRepaired(){ - super.placed(); - } - @Override public void remove(){ super.remove(); @@ -505,6 +500,11 @@ public class Turret extends ReloadTurret{ heatReq = calculateHeat(sideHeat); } + if(rotate){ + //sync underlying rotation; 0-3 rotation is a shadowed field + ((Building)this).rotation = Mathf.mod(Mathf.round(rotation / 90f), 4); + } + //turret always reloads regardless of whether it's targeting something if(reloadWhileCharging || !charging()){ updateReload();