diff --git a/annotations/src/main/resources/revisions/BulletComp/2.json b/annotations/src/main/resources/revisions/BulletComp/2.json new file mode 100644 index 0000000000..3a075d3fbf --- /dev/null +++ b/annotations/src/main/resources/revisions/BulletComp/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:collided,type:arc.struct.IntSeq},{name:damage,type:float},{name:data,type:java.lang.Object},{name:fdata,type:float},{name:lifetime,type:float},{name:owner,type:mindustry.gen.Entityc},{name:rotation,type:float},{name:team,type:mindustry.game.Team},{name:time,type:float},{name:type,type:mindustry.entities.bullet.BulletType},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/alpha/2.json b/annotations/src/main/resources/revisions/alpha/2.json new file mode 100644 index 0000000000..5bf10ed861 --- /dev/null +++ b/annotations/src/main/resources/revisions/alpha/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/arkyid/2.json b/annotations/src/main/resources/revisions/arkyid/2.json new file mode 100644 index 0000000000..5bf10ed861 --- /dev/null +++ b/annotations/src/main/resources/revisions/arkyid/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/beta/2.json b/annotations/src/main/resources/revisions/beta/2.json new file mode 100644 index 0000000000..5bf10ed861 --- /dev/null +++ b/annotations/src/main/resources/revisions/beta/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/block/6.json b/annotations/src/main/resources/revisions/block/6.json new file mode 100644 index 0000000000..2fa2662e57 --- /dev/null +++ b/annotations/src/main/resources/revisions/block/6.json @@ -0,0 +1 @@ +{version:6,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/corvus/6.json b/annotations/src/main/resources/revisions/corvus/6.json new file mode 100644 index 0000000000..2fa2662e57 --- /dev/null +++ b/annotations/src/main/resources/revisions/corvus/6.json @@ -0,0 +1 @@ +{version:6,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/flare/6.json b/annotations/src/main/resources/revisions/flare/6.json new file mode 100644 index 0000000000..2fa2662e57 --- /dev/null +++ b/annotations/src/main/resources/revisions/flare/6.json @@ -0,0 +1 @@ +{version:6,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/gamma/2.json b/annotations/src/main/resources/revisions/gamma/2.json new file mode 100644 index 0000000000..5bf10ed861 --- /dev/null +++ b/annotations/src/main/resources/revisions/gamma/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/mace/6.json b/annotations/src/main/resources/revisions/mace/6.json new file mode 100644 index 0000000000..625b446d65 --- /dev/null +++ b/annotations/src/main/resources/revisions/mace/6.json @@ -0,0 +1 @@ +{version:6,fields:[{name:ammo,type:float},{name:baseRotation,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/mega/4.json b/annotations/src/main/resources/revisions/mega/4.json new file mode 100644 index 0000000000..647e3ce02a --- /dev/null +++ b/annotations/src/main/resources/revisions/mega/4.json @@ -0,0 +1 @@ +{version:4,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:payloads,type:arc.struct.Seq},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/mono/5.json b/annotations/src/main/resources/revisions/mono/5.json new file mode 100644 index 0000000000..a914b97628 --- /dev/null +++ b/annotations/src/main/resources/revisions/mono/5.json @@ -0,0 +1 @@ +{version:5,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/nova/4.json b/annotations/src/main/resources/revisions/nova/4.json new file mode 100644 index 0000000000..2562a5f0c5 --- /dev/null +++ b/annotations/src/main/resources/revisions/nova/4.json @@ -0,0 +1 @@ +{version:4,fields:[{name:ammo,type:float},{name:baseRotation,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/oct/4.json b/annotations/src/main/resources/revisions/oct/4.json new file mode 100644 index 0000000000..647e3ce02a --- /dev/null +++ b/annotations/src/main/resources/revisions/oct/4.json @@ -0,0 +1 @@ +{version:4,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:payloads,type:arc.struct.Seq},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/poly/4.json b/annotations/src/main/resources/revisions/poly/4.json new file mode 100644 index 0000000000..7d090769e7 --- /dev/null +++ b/annotations/src/main/resources/revisions/poly/4.json @@ -0,0 +1 @@ +{version:4,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/pulsar/2.json b/annotations/src/main/resources/revisions/pulsar/2.json new file mode 100644 index 0000000000..a3a3b83466 --- /dev/null +++ b/annotations/src/main/resources/revisions/pulsar/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float},{name:baseRotation,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/quad/5.json b/annotations/src/main/resources/revisions/quad/5.json new file mode 100644 index 0000000000..b8e94f88a9 --- /dev/null +++ b/annotations/src/main/resources/revisions/quad/5.json @@ -0,0 +1 @@ +{version:5,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:payloads,type:arc.struct.Seq},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/quasar/2.json b/annotations/src/main/resources/revisions/quasar/2.json new file mode 100644 index 0000000000..a3a3b83466 --- /dev/null +++ b/annotations/src/main/resources/revisions/quasar/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float},{name:baseRotation,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/risso/6.json b/annotations/src/main/resources/revisions/risso/6.json new file mode 100644 index 0000000000..2fa2662e57 --- /dev/null +++ b/annotations/src/main/resources/revisions/risso/6.json @@ -0,0 +1 @@ +{version:6,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/spiroct/5.json b/annotations/src/main/resources/revisions/spiroct/5.json new file mode 100644 index 0000000000..a914b97628 --- /dev/null +++ b/annotations/src/main/resources/revisions/spiroct/5.json @@ -0,0 +1 @@ +{version:5,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/toxopid/2.json b/annotations/src/main/resources/revisions/toxopid/2.json new file mode 100644 index 0000000000..5bf10ed861 --- /dev/null +++ b/annotations/src/main/resources/revisions/toxopid/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]} \ No newline at end of file diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 42a0389f8d..3657c09bc3 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -120,7 +120,7 @@ public class UnitTypes implements ContentList{ hitSize = 13f; rotateSpeed = 3f; targetAir = false; - health = 820; + health = 900; armor = 9f; mechFrontSway = 0.55f; @@ -133,15 +133,15 @@ public class UnitTypes implements ContentList{ shake = 2f; ejectEffect = Fx.casing2; shootSound = Sounds.artillery; - bullet = new ArtilleryBulletType(2f, 8, "shell"){{ + bullet = new ArtilleryBulletType(2f, 20, "shell"){{ hitEffect = Fx.blastExplosion; knockback = 0.8f; lifetime = 120f; width = height = 14f; collides = true; collidesTiles = true; - splashDamageRadius = 30f; - splashDamage = 60f; + splashDamageRadius = 35f; + splashDamage = 80f; backColor = Pal.bulletYellowBack; frontColor = Pal.bulletYellow; }}; diff --git a/core/src/mindustry/entities/comp/BulletComp.java b/core/src/mindustry/entities/comp/BulletComp.java index c967d4dff4..e1254670f0 100644 --- a/core/src/mindustry/entities/comp/BulletComp.java +++ b/core/src/mindustry/entities/comp/BulletComp.java @@ -44,6 +44,13 @@ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Draw } } + //bullets always considered local + @Override + @Replace + public boolean isLocal(){ + return true; + } + @Override public void add(){ type.init(self()); diff --git a/core/src/mindustry/entities/comp/ShieldComp.java b/core/src/mindustry/entities/comp/ShieldComp.java index d1d3b50a87..aa77d1e8bc 100644 --- a/core/src/mindustry/entities/comp/ShieldComp.java +++ b/core/src/mindustry/entities/comp/ShieldComp.java @@ -16,8 +16,8 @@ abstract class ShieldComp implements Healthc, Posc{ /** Absorbs health damage. */ float shield; - /** Subtracts an amount from damage. */ - float armor; + /** Subtracts an amount from damage. No need to save. */ + transient float armor; /** Shield opacity. */ transient float shieldAlpha = 0f; diff --git a/core/src/mindustry/entities/comp/VelComp.java b/core/src/mindustry/entities/comp/VelComp.java index 3e79b04e17..8be3a30151 100644 --- a/core/src/mindustry/entities/comp/VelComp.java +++ b/core/src/mindustry/entities/comp/VelComp.java @@ -13,20 +13,24 @@ import static mindustry.Vars.*; abstract class VelComp implements Posc{ @Import float x, y; - //TODO @SyncLocal this? does it even need to be sent? - transient final Vec2 vel = new Vec2(); + @SyncLocal Vec2 vel = new Vec2(); + transient float drag = 0f; //velocity needs to be called first, as it affects delta and lastPosition @MethodPriority(-1) @Override public void update(){ - float px = x, py = y; - move(vel.x * Time.delta, vel.y * Time.delta); - if(Mathf.equal(px, x)) vel.x = 0; - if(Mathf.equal(py, y)) vel.y = 0; + //do not update velocity on the client at all, unless it's non-interpolated + //velocity conflicts with interpolation. + if(!net.client() || isLocal()){ + float px = x, py = y; + move(vel.x * Time.delta, vel.y * Time.delta); + if(Mathf.equal(px, x)) vel.x = 0; + if(Mathf.equal(py, y)) vel.y = 0; - vel.scl(Math.max(1f - drag * Time.delta, 0)); + vel.scl(Math.max(1f - drag * Time.delta, 0)); + } } /** @return function to use for check solid state. if null, no checking is done. */ diff --git a/core/src/mindustry/world/blocks/production/Separator.java b/core/src/mindustry/world/blocks/production/Separator.java index 3809ce3e80..a863178208 100644 --- a/core/src/mindustry/world/blocks/production/Separator.java +++ b/core/src/mindustry/world/blocks/production/Separator.java @@ -128,19 +128,17 @@ public class Separator extends Block{ return !consumes.itemFilters.get(item.id); } - //TODO write seed in 128 release, don't write it now for compatibility with 127.x - //@Override - //public byte version(){ - // return 1; - //} + @Override + public byte version(){ + return 1; + } @Override public void write(Writes write){ super.write(write); write.f(progress); write.f(warmup); - //TODO see above - //write.i(seed); + write.i(seed); } @Override @@ -148,8 +146,7 @@ public class Separator extends Block{ super.read(read, revision); progress = read.f(); warmup = read.f(); - //TODO see above - //if(revision == 1) seed = read.i(); + if(revision == 1) seed = read.i(); } } }