diff --git a/annotations/src/main/resources/classids.properties b/annotations/src/main/resources/classids.properties index 91aa31d081..0920fbaca5 100644 --- a/annotations/src/main/resources/classids.properties +++ b/annotations/src/main/resources/classids.properties @@ -4,6 +4,7 @@ alpha=0 arkyid=37 atrax=38 block=1 +bryde=40 cix=2 draug=3 flare=36 diff --git a/annotations/src/main/resources/revisions/BlockUnitUnit/1.json b/annotations/src/main/resources/revisions/BlockUnitUnit/1.json new file mode 100644 index 0000000000..dd8fdb2784 --- /dev/null +++ b/annotations/src/main/resources/revisions/BlockUnitUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BlockUnitUnit/2.json b/annotations/src/main/resources/revisions/BlockUnitUnit/2.json new file mode 100644 index 0000000000..a73abd7000 --- /dev/null +++ b/annotations/src/main/resources/revisions/BlockUnitUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderCommanderMechMinerUnit/1.json b/annotations/src/main/resources/revisions/BuilderCommanderMechMinerUnit/1.json new file mode 100644 index 0000000000..6ed4e60191 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderCommanderMechMinerUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderCommanderMechMinerUnit/2.json b/annotations/src/main/resources/revisions/BuilderCommanderMechMinerUnit/2.json new file mode 100644 index 0000000000..36a9e50333 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderCommanderMechMinerUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderLegsUnit/1.json b/annotations/src/main/resources/revisions/BuilderLegsUnit/1.json new file mode 100644 index 0000000000..885ef84f29 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderLegsUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderLegsUnit/2.json b/annotations/src/main/resources/revisions/BuilderLegsUnit/2.json new file mode 100644 index 0000000000..f6efa6f663 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderLegsUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderMechUnit/1.json b/annotations/src/main/resources/revisions/BuilderMechUnit/1.json new file mode 100644 index 0000000000..a5d726ded8 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderMechUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderMechUnit/2.json b/annotations/src/main/resources/revisions/BuilderMechUnit/2.json new file mode 100644 index 0000000000..08f1b277b3 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderMechUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderMinerPayloadUnit/1.json b/annotations/src/main/resources/revisions/BuilderMinerPayloadUnit/1.json new file mode 100644 index 0000000000..de89770ab4 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderMinerPayloadUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:payloads,type:arc.struct.Seq,size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderMinerPayloadUnit/2.json b/annotations/src/main/resources/revisions/BuilderMinerPayloadUnit/2.json new file mode 100644 index 0000000000..025bfc439c --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderMinerPayloadUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:payloads,type:arc.struct.Seq,size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderMinerTrailUnit/1.json b/annotations/src/main/resources/revisions/BuilderMinerTrailUnit/1.json new file mode 100644 index 0000000000..3a92a12856 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderMinerTrailUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderMinerTrailUnit/2.json b/annotations/src/main/resources/revisions/BuilderMinerTrailUnit/2.json new file mode 100644 index 0000000000..d30cd7ad51 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderMinerTrailUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderMinerUnit/1.json b/annotations/src/main/resources/revisions/BuilderMinerUnit/1.json new file mode 100644 index 0000000000..3a92a12856 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderMinerUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderMinerUnit/2.json b/annotations/src/main/resources/revisions/BuilderMinerUnit/2.json new file mode 100644 index 0000000000..d30cd7ad51 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderMinerUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/CommanderPayloadUnitWaterMove/0.json b/annotations/src/main/resources/revisions/CommanderPayloadUnitWaterMove/0.json new file mode 100644 index 0000000000..dbb981dfd1 --- /dev/null +++ b/annotations/src/main/resources/revisions/CommanderPayloadUnitWaterMove/0.json @@ -0,0 +1 @@ +{fields:[{name:ammo,type:int,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:payloads,type:arc.struct.Seq,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/CommanderUnitWaterMove/1.json b/annotations/src/main/resources/revisions/CommanderUnitWaterMove/1.json new file mode 100644 index 0000000000..dd8fdb2784 --- /dev/null +++ b/annotations/src/main/resources/revisions/CommanderUnitWaterMove/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/CommanderUnitWaterMove/2.json b/annotations/src/main/resources/revisions/CommanderUnitWaterMove/2.json new file mode 100644 index 0000000000..a73abd7000 --- /dev/null +++ b/annotations/src/main/resources/revisions/CommanderUnitWaterMove/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/LegsUnit/1.json b/annotations/src/main/resources/revisions/LegsUnit/1.json new file mode 100644 index 0000000000..dd8fdb2784 --- /dev/null +++ b/annotations/src/main/resources/revisions/LegsUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/LegsUnit/2.json b/annotations/src/main/resources/revisions/LegsUnit/2.json new file mode 100644 index 0000000000..a73abd7000 --- /dev/null +++ b/annotations/src/main/resources/revisions/LegsUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/MechUnit/1.json b/annotations/src/main/resources/revisions/MechUnit/1.json new file mode 100644 index 0000000000..66897ee06f --- /dev/null +++ b/annotations/src/main/resources/revisions/MechUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/MechUnit/2.json b/annotations/src/main/resources/revisions/MechUnit/2.json new file mode 100644 index 0000000000..b113f6564d --- /dev/null +++ b/annotations/src/main/resources/revisions/MechUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/MinerUnit/1.json b/annotations/src/main/resources/revisions/MinerUnit/1.json new file mode 100644 index 0000000000..9d58b6775a --- /dev/null +++ b/annotations/src/main/resources/revisions/MinerUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/MinerUnit/2.json b/annotations/src/main/resources/revisions/MinerUnit/2.json new file mode 100644 index 0000000000..048458ea23 --- /dev/null +++ b/annotations/src/main/resources/revisions/MinerUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/UnitEntity/1.json b/annotations/src/main/resources/revisions/UnitEntity/1.json new file mode 100644 index 0000000000..dd8fdb2784 --- /dev/null +++ b/annotations/src/main/resources/revisions/UnitEntity/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/UnitEntity/2.json b/annotations/src/main/resources/revisions/UnitEntity/2.json new file mode 100644 index 0000000000..a73abd7000 --- /dev/null +++ b/annotations/src/main/resources/revisions/UnitEntity/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/core/assets-raw/sprites/blocks/production/spore-press-frame0.png b/core/assets-raw/sprites/blocks/production/spore-press-frame0.png index 442adfd6f8..a8b86d93bd 100644 Binary files a/core/assets-raw/sprites/blocks/production/spore-press-frame0.png and b/core/assets-raw/sprites/blocks/production/spore-press-frame0.png differ diff --git a/core/assets-raw/sprites/blocks/production/spore-press-frame1.png b/core/assets-raw/sprites/blocks/production/spore-press-frame1.png index 14409d1122..9b403cb9ce 100644 Binary files a/core/assets-raw/sprites/blocks/production/spore-press-frame1.png and b/core/assets-raw/sprites/blocks/production/spore-press-frame1.png differ diff --git a/core/assets-raw/sprites/blocks/production/spore-press-frame2.png b/core/assets-raw/sprites/blocks/production/spore-press-frame2.png index c392397bb4..34f8aad11b 100644 Binary files a/core/assets-raw/sprites/blocks/production/spore-press-frame2.png and b/core/assets-raw/sprites/blocks/production/spore-press-frame2.png differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index ff36ac2e14..1c4a24cf93 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -599,7 +599,8 @@ bar.poweramount = Power: {0} bar.poweroutput = Power Output: {0} bar.items = Items: {0} bar.capacity = Capacity: {0} -bar.units = Units: {0}/{1} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Liquid bar.heat = Heat bar.power = Power diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 771e9ce52c..165eb3a965 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -982,7 +982,7 @@ block.liquid-void.name = Рідинний вакуум block.power-void.name = Енергетичний вакуум block.power-source.name = Нескінченне джерело енергії block.unloader.name = Розвантажувач -block.vault.name = Сховище +block.vault.name = Вмістилище block.wave.name = Хвиля block.swarmer.name = Роєвик block.salvo.name = Залп @@ -1013,7 +1013,7 @@ block.phase-conduit.name = Фазовий трубопровід block.liquid-router.name = Рідинний маршрутизатор block.liquid-tank.name = Рідинний резервуар block.liquid-junction.name = Рідинне перехрестя -block.bridge-conduit.name = Мостовий водопровід +block.bridge-conduit.name = Мостовий трубопровід block.rotary-pump.name = Роторний насос block.thorium-reactor.name = Торієвий реактор block.mass-driver.name = Електромагнітна катапульта diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index ced18aafd9..4a667ccd7d 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -253,3 +253,28 @@ 63491=tetrative-reconstructor|block-tetrative-reconstructor-medium 63490=resupply-point|block-resupply-point-medium 63489=parallax|block-parallax-medium +63488=dagger|unit-dagger-medium +63487=mace|unit-mace-medium +63486=fortress|unit-fortress-medium +63485=nova|unit-nova-medium +63484=pulsar|unit-pulsar-medium +63483=quasar|unit-quasar-medium +63482=crawler|unit-crawler-medium +63481=atrax|unit-atrax-medium +63480=spiroct|unit-spiroct-medium +63479=arkyid|unit-arkyid-medium +63478=flare|unit-flare-medium +63477=horizon|unit-horizon-medium +63476=zenith|unit-zenith-medium +63475=antumbra|unit-antumbra-medium +63474=eclipse|unit-eclipse-medium +63473=mono|unit-mono-medium +63472=poly|unit-poly-medium +63471=mega|unit-mega-medium +63470=risse|unit-risse-medium +63469=minke|unit-minke-medium +63468=bryde|unit-bryde-medium +63467=alpha|unit-alpha-medium +63466=beta|unit-beta-medium +63465=gamma|unit-gamma-medium +63464=block|unit-block-medium diff --git a/core/assets/sprites/fallback/sprites.atlas b/core/assets/sprites/fallback/sprites.atlas index 708f6456c2..20384f5ad5 100644 --- a/core/assets/sprites/fallback/sprites.atlas +++ b/core/assets/sprites/fallback/sprites.atlas @@ -10220,7 +10220,7 @@ alpha-bg index: -1 bar rotate: false - xy: 1727, 785 + xy: 719, 282 size: 27, 36 split: 9, 9, 9, 9 orig: 27, 36 @@ -10228,7 +10228,7 @@ bar index: -1 bar-top rotate: false - xy: 1698, 785 + xy: 751, 578 size: 27, 36 split: 9, 10, 9, 10 orig: 27, 36 @@ -10243,21 +10243,21 @@ block-additive-reconstructor-large index: -1 block-additive-reconstructor-medium rotate: false - xy: 1601, 857 + xy: 957, 589 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-additive-reconstructor-small rotate: false - xy: 1987, 839 + xy: 781, 690 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-additive-reconstructor-tiny rotate: false - xy: 301, 1 + xy: 2031, 821 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10278,21 +10278,21 @@ block-air-factory-large index: -1 block-air-factory-medium rotate: false - xy: 1635, 857 + xy: 995, 618 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-air-factory-small rotate: false - xy: 939, 1 + xy: 80, 2 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-air-factory-tiny rotate: false - xy: 319, 1 + xy: 2031, 803 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10306,28 +10306,28 @@ block-air-factory-xlarge index: -1 block-alloy-smelter-large rotate: false - xy: 351, 224 + xy: 351, 74 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-alloy-smelter-medium rotate: false - xy: 1669, 857 + xy: 1033, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-alloy-smelter-small rotate: false - xy: 965, 1 + xy: 106, 2 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-alloy-smelter-tiny rotate: false - xy: 309, 698 + xy: 2031, 785 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10341,28 +10341,28 @@ block-alloy-smelter-xlarge index: -1 block-arc-large rotate: false - xy: 401, 274 + xy: 401, 124 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-arc-medium rotate: false - xy: 1703, 857 + xy: 1067, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-arc-small rotate: false - xy: 991, 1 + xy: 1953, 802 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-arc-tiny rotate: false - xy: 331, 598 + xy: 2031, 767 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10376,28 +10376,28 @@ block-arc-xlarge index: -1 block-armored-conveyor-large rotate: false - xy: 451, 324 + xy: 451, 174 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-armored-conveyor-medium rotate: false - xy: 1737, 857 + xy: 1101, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-armored-conveyor-small rotate: false - xy: 1017, 1 + xy: 1953, 776 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-armored-conveyor-tiny rotate: false - xy: 667, 20 + xy: 2031, 749 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10411,35 +10411,35 @@ block-armored-conveyor-xlarge index: -1 block-battery-large rotate: false - xy: 501, 374 + xy: 501, 224 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-battery-large-large rotate: false - xy: 551, 424 + xy: 551, 274 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-battery-large-medium rotate: false - xy: 1771, 857 + xy: 1135, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-battery-large-small rotate: false - xy: 1043, 1 + xy: 1979, 805 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-battery-large-tiny rotate: false - xy: 905, 315 + xy: 2031, 731 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10453,21 +10453,21 @@ block-battery-large-xlarge index: -1 block-battery-medium rotate: false - xy: 1805, 857 + xy: 1169, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-battery-small rotate: false - xy: 1069, 1 + xy: 1979, 779 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-battery-tiny rotate: false - xy: 132, 10 + xy: 2031, 713 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10481,28 +10481,28 @@ block-battery-xlarge index: -1 block-blast-drill-large rotate: false - xy: 601, 474 + xy: 601, 324 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-blast-drill-medium rotate: false - xy: 1839, 857 + xy: 1203, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-blast-drill-small rotate: false - xy: 781, 690 + xy: 2005, 813 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-blast-drill-tiny rotate: false - xy: 1535, 589 + xy: 301, 1 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10516,28 +10516,28 @@ block-blast-drill-xlarge index: -1 block-blast-mixer-large rotate: false - xy: 651, 524 + xy: 651, 374 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-blast-mixer-medium rotate: false - xy: 1873, 857 + xy: 1237, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-blast-mixer-small rotate: false - xy: 80, 2 + xy: 2005, 787 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-blast-mixer-tiny rotate: false - xy: 1151, 542 + xy: 319, 1 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10551,28 +10551,28 @@ block-blast-mixer-xlarge index: -1 block-block-forge-large rotate: false - xy: 701, 574 + xy: 701, 424 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-block-forge-medium rotate: false - xy: 1907, 857 + xy: 1271, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-block-forge-small rotate: false - xy: 769, 484 + xy: 351, 6 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-block-forge-tiny rotate: false - xy: 1177, 505 + xy: 2031, 695 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10586,28 +10586,28 @@ block-block-forge-xlarge index: -1 block-block-loader-large rotate: false - xy: 351, 182 + xy: 351, 32 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-block-loader-medium rotate: false - xy: 1941, 857 + xy: 1305, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-block-loader-small rotate: false - xy: 1785, 797 + xy: 377, 6 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-block-loader-tiny rotate: false - xy: 1203, 542 + xy: 309, 698 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10621,28 +10621,28 @@ block-block-loader-xlarge index: -1 block-block-unloader-large rotate: false - xy: 351, 140 + xy: 751, 536 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-block-unloader-medium rotate: false - xy: 633, 4 + xy: 1339, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-block-unloader-small rotate: false - xy: 106, 2 + xy: 403, 6 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-block-unloader-tiny rotate: false - xy: 309, 680 + xy: 331, 598 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10656,28 +10656,28 @@ block-block-unloader-xlarge index: -1 block-bridge-conduit-large rotate: false - xy: 351, 98 + xy: 751, 494 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-bridge-conduit-medium rotate: false - xy: 901, 673 + xy: 1373, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-bridge-conduit-small rotate: false - xy: 1785, 771 + xy: 885, 342 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-bridge-conduit-tiny rotate: false - xy: 331, 580 + xy: 132, 10 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10691,28 +10691,28 @@ block-bridge-conduit-xlarge index: -1 block-bridge-conveyor-large rotate: false - xy: 351, 56 + xy: 793, 536 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-bridge-conveyor-medium rotate: false - xy: 935, 673 + xy: 1407, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-bridge-conveyor-small rotate: false - xy: 1811, 797 + xy: 911, 330 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-bridge-conveyor-tiny rotate: false - xy: 1177, 487 + xy: 1899, 770 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10726,28 +10726,28 @@ block-bridge-conveyor-xlarge index: -1 block-char-large rotate: false - xy: 351, 14 + xy: 793, 494 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-char-medium rotate: false - xy: 1979, 899 + xy: 1441, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-char-small rotate: false - xy: 1811, 771 + xy: 937, 325 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-char-tiny rotate: false - xy: 1203, 524 + xy: 989, 11 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10761,28 +10761,28 @@ block-char-xlarge index: -1 block-cliff-large rotate: false - xy: 393, 224 + xy: 835, 536 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cliff-medium rotate: false - xy: 2013, 907 + xy: 991, 584 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cliff-small rotate: false - xy: 1837, 797 + xy: 885, 316 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cliff-tiny rotate: false - xy: 1221, 542 + xy: 1119, 63 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10796,28 +10796,28 @@ block-cliff-xlarge index: -1 block-cliffs-large rotate: false - xy: 393, 182 + xy: 835, 494 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cliffs-medium rotate: false - xy: 881, 639 + xy: 1029, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cliffs-small rotate: false - xy: 1837, 771 + xy: 911, 304 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cliffs-tiny rotate: false - xy: 1177, 469 + xy: 1145, 89 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10831,28 +10831,28 @@ block-cliffs-xlarge index: -1 block-coal-centrifuge-large rotate: false - xy: 393, 140 + xy: 751, 452 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-coal-centrifuge-medium rotate: false - xy: 881, 605 + xy: 1063, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-coal-centrifuge-small rotate: false - xy: 1863, 797 + xy: 937, 299 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-coal-centrifuge-tiny rotate: false - xy: 1221, 524 + xy: 1171, 115 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10866,28 +10866,28 @@ block-coal-centrifuge-xlarge index: -1 block-combustion-generator-large rotate: false - xy: 393, 98 + xy: 793, 452 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-combustion-generator-medium rotate: false - xy: 915, 639 + xy: 1097, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-combustion-generator-small rotate: false - xy: 1863, 771 + xy: 885, 290 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-combustion-generator-tiny rotate: false - xy: 1239, 542 + xy: 1197, 141 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10901,28 +10901,28 @@ block-combustion-generator-xlarge index: -1 block-conduit-large rotate: false - xy: 393, 56 + xy: 835, 452 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-conduit-medium rotate: false - xy: 915, 605 + xy: 1131, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-conduit-small rotate: false - xy: 1889, 797 + xy: 911, 278 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-conduit-tiny rotate: false - xy: 1177, 451 + xy: 1223, 167 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10936,28 +10936,28 @@ block-conduit-xlarge index: -1 block-container-large rotate: false - xy: 393, 14 + xy: 743, 410 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-container-medium rotate: false - xy: 881, 571 + xy: 1165, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-container-small rotate: false - xy: 1889, 771 + xy: 937, 273 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-container-tiny rotate: false - xy: 1239, 524 + xy: 1249, 193 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10971,28 +10971,28 @@ block-container-xlarge index: -1 block-conveyor-large rotate: false - xy: 443, 274 + xy: 785, 410 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-conveyor-medium rotate: false - xy: 915, 571 + xy: 1199, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-conveyor-small rotate: false - xy: 1915, 797 + xy: 885, 264 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-conveyor-tiny rotate: false - xy: 1257, 542 + xy: 1275, 219 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11006,35 +11006,35 @@ block-conveyor-xlarge index: -1 block-copper-wall-large rotate: false - xy: 435, 232 + xy: 827, 410 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-copper-wall-large-large rotate: false - xy: 435, 190 + xy: 701, 382 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-copper-wall-large-medium rotate: false - xy: 949, 639 + xy: 1233, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-copper-wall-large-small rotate: false - xy: 1915, 771 + xy: 911, 252 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-copper-wall-large-tiny rotate: false - xy: 1177, 433 + xy: 1327, 255 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11048,21 +11048,21 @@ block-copper-wall-large-xlarge index: -1 block-copper-wall-medium rotate: false - xy: 949, 605 + xy: 1267, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-copper-wall-small rotate: false - xy: 1941, 797 + xy: 937, 247 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-copper-wall-tiny rotate: false - xy: 1257, 524 + xy: 1353, 281 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11076,28 +11076,28 @@ block-copper-wall-xlarge index: -1 block-core-foundation-large rotate: false - xy: 435, 148 + xy: 743, 368 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-core-foundation-medium rotate: false - xy: 949, 571 + xy: 1301, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-core-foundation-small rotate: false - xy: 1941, 771 + xy: 885, 238 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-core-foundation-tiny rotate: false - xy: 1275, 542 + xy: 1431, 323 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11111,28 +11111,28 @@ block-core-foundation-xlarge index: -1 block-core-nucleus-large rotate: false - xy: 435, 106 + xy: 785, 368 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-core-nucleus-medium rotate: false - xy: 969, 673 + xy: 1335, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-core-nucleus-small rotate: false - xy: 1095, 4 + xy: 911, 226 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-core-nucleus-tiny rotate: false - xy: 1177, 415 + xy: 309, 680 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11146,28 +11146,28 @@ block-core-nucleus-xlarge index: -1 block-core-shard-large rotate: false - xy: 435, 64 + xy: 827, 368 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-core-shard-medium rotate: false - xy: 983, 639 + xy: 1369, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-core-shard-small rotate: false - xy: 1121, 4 + xy: 937, 221 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-core-shard-tiny rotate: false - xy: 1275, 524 + xy: 331, 580 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11181,28 +11181,28 @@ block-core-shard-xlarge index: -1 block-craters-large rotate: false - xy: 435, 22 + xy: 393, 74 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-craters-medium rotate: false - xy: 983, 605 + xy: 1403, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-craters-small rotate: false - xy: 1147, 4 + xy: 885, 212 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-craters-tiny rotate: false - xy: 1293, 542 + xy: 1007, 11 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11216,28 +11216,28 @@ block-craters-xlarge index: -1 block-cryofluidmixer-large rotate: false - xy: 493, 324 + xy: 393, 32 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cryofluidmixer-medium rotate: false - xy: 983, 571 + xy: 1437, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cryofluidmixer-small rotate: false - xy: 1967, 797 + xy: 911, 200 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cryofluidmixer-tiny rotate: false - xy: 1177, 397 + xy: 1119, 45 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11251,28 +11251,28 @@ block-cryofluidmixer-xlarge index: -1 block-cultivator-large rotate: false - xy: 485, 282 + xy: 443, 124 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cultivator-medium rotate: false - xy: 743, 553 + xy: 1025, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cultivator-small rotate: false - xy: 1967, 771 + xy: 937, 195 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cultivator-tiny rotate: false - xy: 1293, 524 + xy: 1449, 323 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11286,28 +11286,28 @@ block-cultivator-xlarge index: -1 block-cyclone-large rotate: false - xy: 543, 374 + xy: 435, 82 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cyclone-medium rotate: false - xy: 777, 544 + xy: 1059, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cyclone-small rotate: false - xy: 735, 527 + xy: 885, 186 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cyclone-tiny rotate: false - xy: 1311, 542 + xy: 1025, 11 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11321,28 +11321,28 @@ block-cyclone-xlarge index: -1 block-dark-metal-large rotate: false - xy: 535, 332 + xy: 435, 40 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-metal-medium rotate: false - xy: 811, 544 + xy: 1093, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-metal-small rotate: false - xy: 1785, 745 + xy: 911, 174 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-metal-tiny rotate: false - xy: 1177, 379 + xy: 1467, 323 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11356,28 +11356,28 @@ block-dark-metal-xlarge index: -1 block-dark-panel-1-large rotate: false - xy: 593, 424 + xy: 493, 174 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-1-medium rotate: false - xy: 845, 544 + xy: 1127, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-1-small rotate: false - xy: 1811, 745 + xy: 937, 169 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-1-tiny rotate: false - xy: 1311, 524 + xy: 1043, 11 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11391,28 +11391,28 @@ block-dark-panel-1-xlarge index: -1 block-dark-panel-2-large rotate: false - xy: 585, 382 + xy: 485, 132 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-2-medium rotate: false - xy: 879, 537 + xy: 1161, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-2-small rotate: false - xy: 1837, 745 + xy: 885, 160 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-2-tiny rotate: false - xy: 1329, 542 + xy: 1061, 11 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11426,28 +11426,28 @@ block-dark-panel-2-xlarge index: -1 block-dark-panel-3-large rotate: false - xy: 643, 474 + xy: 543, 224 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-3-medium rotate: false - xy: 913, 537 + xy: 1195, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-3-small rotate: false - xy: 1863, 745 + xy: 911, 148 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-3-tiny rotate: false - xy: 1177, 361 + xy: 1079, 11 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11461,28 +11461,28 @@ block-dark-panel-3-xlarge index: -1 block-dark-panel-4-large rotate: false - xy: 635, 432 + xy: 535, 182 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-4-medium rotate: false - xy: 947, 537 + xy: 1229, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-4-small rotate: false - xy: 1889, 745 + xy: 937, 143 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-4-tiny rotate: false - xy: 1329, 524 + xy: 1097, 11 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11496,28 +11496,28 @@ block-dark-panel-4-xlarge index: -1 block-dark-panel-5-large rotate: false - xy: 693, 524 + xy: 593, 274 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-5-medium rotate: false - xy: 981, 537 + xy: 1263, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-5-small rotate: false - xy: 1915, 745 + xy: 885, 134 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-5-tiny rotate: false - xy: 1347, 542 + xy: 1379, 297 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11531,28 +11531,28 @@ block-dark-panel-5-xlarge index: -1 block-dark-panel-6-large rotate: false - xy: 685, 482 + xy: 585, 232 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-6-medium rotate: false - xy: 1027, 786 + xy: 1297, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-6-small rotate: false - xy: 1941, 745 + xy: 911, 122 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-6-tiny rotate: false - xy: 1177, 343 + xy: 1397, 297 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11566,49 +11566,49 @@ block-dark-panel-6-xlarge index: -1 block-darksand-large rotate: false - xy: 477, 232 + xy: 643, 324 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-darksand-medium rotate: false - xy: 1069, 828 + xy: 1331, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-small rotate: false - xy: 1967, 745 + xy: 937, 117 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-darksand-tainted-water-large rotate: false - xy: 477, 190 + xy: 635, 282 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-darksand-tainted-water-medium rotate: false - xy: 1103, 828 + xy: 1365, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-tainted-water-small rotate: false - xy: 1993, 813 + xy: 885, 108 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-darksand-tainted-water-tiny rotate: false - xy: 1347, 524 + xy: 1119, 27 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11622,35 +11622,35 @@ block-darksand-tainted-water-xlarge index: -1 block-darksand-tiny rotate: false - xy: 1365, 542 + xy: 1415, 297 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-darksand-water-large rotate: false - xy: 477, 148 + xy: 869, 410 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-darksand-water-medium rotate: false - xy: 1137, 828 + xy: 1399, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-water-small rotate: false - xy: 1993, 787 + xy: 911, 96 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-darksand-water-tiny rotate: false - xy: 1177, 325 + xy: 1301, 234 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11671,28 +11671,28 @@ block-darksand-xlarge index: -1 block-data-processor-large rotate: false - xy: 477, 106 + xy: 869, 368 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-data-processor-medium rotate: false - xy: 1171, 828 + xy: 1433, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-data-processor-small rotate: false - xy: 2019, 813 + xy: 937, 91 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-data-processor-tiny rotate: false - xy: 1365, 524 + xy: 2025, 677 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11706,28 +11706,28 @@ block-data-processor-xlarge index: -1 block-deepwater-large rotate: false - xy: 477, 64 + xy: 477, 82 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-deepwater-medium rotate: false - xy: 1205, 828 + xy: 1979, 899 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-deepwater-small rotate: false - xy: 1993, 761 + xy: 885, 82 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-deepwater-tiny rotate: false - xy: 1383, 542 + xy: 2025, 659 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11741,28 +11741,28 @@ block-deepwater-xlarge index: -1 block-differential-generator-large rotate: false - xy: 477, 22 + xy: 477, 40 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-differential-generator-medium rotate: false - xy: 1239, 828 + xy: 2013, 907 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-differential-generator-small rotate: false - xy: 2019, 787 + xy: 911, 70 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-differential-generator-tiny rotate: false - xy: 1177, 307 + xy: 1115, 9 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11776,28 +11776,28 @@ block-differential-generator-xlarge index: -1 block-diode-large rotate: false - xy: 527, 282 + xy: 527, 132 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-diode-medium rotate: false - xy: 1273, 828 + xy: 881, 560 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-diode-small rotate: false - xy: 2019, 761 + xy: 937, 65 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-diode-tiny rotate: false - xy: 1383, 524 + xy: 1641, 708 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11811,28 +11811,28 @@ block-diode-xlarge index: -1 block-disassembler-large rotate: false - xy: 519, 240 + xy: 519, 90 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-disassembler-medium rotate: false - xy: 1307, 828 + xy: 915, 560 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-disassembler-small rotate: false - xy: 1993, 735 + xy: 885, 56 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-disassembler-tiny rotate: false - xy: 1401, 542 + xy: 1433, 305 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11846,28 +11846,28 @@ block-disassembler-xlarge index: -1 block-distributor-large rotate: false - xy: 519, 198 + xy: 519, 48 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-distributor-medium rotate: false - xy: 1341, 828 + xy: 877, 526 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-distributor-small rotate: false - xy: 2019, 735 + xy: 855, 30 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-distributor-tiny rotate: false - xy: 1177, 289 + xy: 1451, 305 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11881,35 +11881,35 @@ block-distributor-xlarge index: -1 block-door-large rotate: false - xy: 519, 156 + xy: 577, 182 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-door-large-large rotate: false - xy: 519, 114 + xy: 569, 140 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-door-large-medium rotate: false - xy: 1375, 828 + xy: 911, 526 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-door-large-small rotate: false - xy: 1095, 768 + xy: 881, 30 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-door-large-tiny rotate: false - xy: 1401, 524 + xy: 1469, 305 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11923,21 +11923,21 @@ block-door-large-xlarge index: -1 block-door-medium rotate: false - xy: 1409, 828 + xy: 877, 492 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-door-small rotate: false - xy: 1121, 768 + xy: 885, 4 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-door-tiny rotate: false - xy: 1419, 542 + xy: 1487, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11951,28 +11951,28 @@ block-door-xlarge index: -1 block-dunerocks-large rotate: false - xy: 519, 72 + xy: 627, 232 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dunerocks-medium rotate: false - xy: 1443, 828 + xy: 911, 492 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dunerocks-small rotate: false - xy: 1147, 768 + xy: 911, 44 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dunerocks-tiny rotate: false - xy: 1177, 271 + xy: 1505, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11986,28 +11986,28 @@ block-dunerocks-xlarge index: -1 block-duo-large rotate: false - xy: 519, 30 + xy: 619, 190 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-duo-medium rotate: false - xy: 1477, 828 + xy: 877, 458 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-duo-small rotate: false - xy: 1173, 768 + xy: 937, 39 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-duo-tiny rotate: false - xy: 1419, 524 + xy: 1523, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12021,28 +12021,28 @@ block-duo-xlarge index: -1 block-exponential-reconstructor-large rotate: false - xy: 577, 332 + xy: 677, 282 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-exponential-reconstructor-medium rotate: false - xy: 1511, 828 + xy: 911, 458 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-exponential-reconstructor-small rotate: false - xy: 1199, 768 + xy: 911, 18 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-exponential-reconstructor-tiny rotate: false - xy: 1437, 542 + xy: 1541, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12056,28 +12056,28 @@ block-exponential-reconstructor-xlarge index: -1 block-force-projector-large rotate: false - xy: 569, 290 + xy: 669, 240 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-force-projector-medium rotate: false - xy: 1545, 828 + xy: 911, 424 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-force-projector-small rotate: false - xy: 1225, 768 + xy: 937, 13 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-force-projector-tiny rotate: false - xy: 1177, 253 + xy: 1559, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12091,28 +12091,28 @@ block-force-projector-xlarge index: -1 block-fuse-large rotate: false - xy: 627, 382 + xy: 561, 90 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-fuse-medium rotate: false - xy: 985, 744 + xy: 911, 390 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-fuse-small rotate: false - xy: 1251, 768 + xy: 1953, 750 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-fuse-tiny rotate: false - xy: 1437, 524 + xy: 1577, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12126,28 +12126,28 @@ block-fuse-xlarge index: -1 block-graphite-press-large rotate: false - xy: 619, 340 + xy: 561, 48 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-graphite-press-medium rotate: false - xy: 977, 710 + xy: 911, 356 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-graphite-press-small rotate: false - xy: 1277, 768 + xy: 1979, 753 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-graphite-press-tiny rotate: false - xy: 1455, 542 + xy: 1595, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12161,28 +12161,28 @@ block-graphite-press-xlarge index: -1 block-grass-large rotate: false - xy: 677, 432 + xy: 519, 6 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-grass-medium rotate: false - xy: 1979, 865 + xy: 949, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-grass-small rotate: false - xy: 1303, 768 + xy: 2005, 761 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-grass-tiny rotate: false - xy: 1177, 235 + xy: 687, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12196,28 +12196,28 @@ block-grass-xlarge index: -1 block-ground-factory-large rotate: false - xy: 669, 390 + xy: 561, 6 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ground-factory-medium rotate: false - xy: 2013, 873 + xy: 945, 521 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ground-factory-small rotate: false - xy: 1329, 768 + xy: 963, 320 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ground-factory-tiny rotate: false - xy: 1455, 524 + xy: 705, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12231,28 +12231,28 @@ block-ground-factory-xlarge index: -1 block-hail-large rotate: false - xy: 727, 482 + xy: 611, 140 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-hail-medium rotate: false - xy: 1011, 710 + xy: 945, 487 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-hail-small rotate: false - xy: 1355, 768 + xy: 963, 294 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-hail-tiny rotate: false - xy: 1473, 542 + xy: 723, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12266,28 +12266,28 @@ block-hail-xlarge index: -1 block-holostone-large rotate: false - xy: 719, 440 + xy: 603, 98 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-holostone-medium rotate: false - xy: 1003, 676 + xy: 945, 453 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-holostone-small rotate: false - xy: 1381, 768 + xy: 963, 268 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-holostone-tiny rotate: false - xy: 1177, 217 + xy: 741, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12301,28 +12301,28 @@ block-holostone-xlarge index: -1 block-hotrock-large rotate: false - xy: 561, 240 + xy: 603, 56 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-hotrock-medium rotate: false - xy: 1019, 744 + xy: 945, 419 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-hotrock-small rotate: false - xy: 1407, 768 + xy: 963, 242 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-hotrock-tiny rotate: false - xy: 1473, 524 + xy: 1137, 63 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12336,49 +12336,49 @@ block-hotrock-xlarge index: -1 block-ice-large rotate: false - xy: 561, 198 + xy: 603, 14 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ice-medium rotate: false - xy: 1017, 642 + xy: 945, 385 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ice-small rotate: false - xy: 1433, 768 + xy: 963, 216 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ice-snow-large rotate: false - xy: 561, 156 + xy: 661, 190 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ice-snow-medium rotate: false - xy: 1017, 608 + xy: 945, 351 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ice-snow-small rotate: false - xy: 1459, 768 + xy: 963, 190 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ice-snow-tiny rotate: false - xy: 1491, 542 + xy: 1137, 45 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12392,7 +12392,7 @@ block-ice-snow-xlarge index: -1 block-ice-tiny rotate: false - xy: 1177, 199 + xy: 1137, 27 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12406,28 +12406,28 @@ block-ice-xlarge index: -1 block-icerocks-large rotate: false - xy: 561, 114 + xy: 653, 148 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-icerocks-medium rotate: false - xy: 1017, 574 + xy: 983, 550 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icerocks-small rotate: false - xy: 1485, 768 + xy: 963, 164 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icerocks-tiny rotate: false - xy: 1491, 524 + xy: 1133, 9 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12441,28 +12441,28 @@ block-icerocks-xlarge index: -1 block-ignarock-large rotate: false - xy: 561, 72 + xy: 711, 240 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ignarock-medium rotate: false - xy: 1037, 676 + xy: 979, 516 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ignarock-small rotate: false - xy: 1511, 768 + xy: 963, 138 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ignarock-tiny rotate: false - xy: 1509, 542 + xy: 1163, 89 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12476,28 +12476,28 @@ block-ignarock-xlarge index: -1 block-illuminator-large rotate: false - xy: 561, 30 + xy: 703, 198 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-illuminator-medium rotate: false - xy: 1045, 710 + xy: 979, 482 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-illuminator-small rotate: false - xy: 1537, 768 + xy: 963, 112 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-illuminator-tiny rotate: false - xy: 1177, 181 + xy: 1155, 71 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12511,28 +12511,28 @@ block-illuminator-xlarge index: -1 block-impact-reactor-large rotate: false - xy: 611, 290 + xy: 645, 98 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-impact-reactor-medium rotate: false - xy: 1051, 642 + xy: 979, 448 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-impact-reactor-small rotate: false - xy: 1563, 763 + xy: 963, 86 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-impact-reactor-tiny rotate: false - xy: 1509, 524 + xy: 1155, 53 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12546,28 +12546,28 @@ block-impact-reactor-xlarge index: -1 block-incinerator-large rotate: false - xy: 603, 248 + xy: 645, 56 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-incinerator-medium rotate: false - xy: 1051, 608 + xy: 979, 414 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-incinerator-small rotate: false - xy: 1087, 742 + xy: 963, 60 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-incinerator-tiny rotate: false - xy: 1177, 163 + xy: 1155, 35 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12581,28 +12581,28 @@ block-incinerator-xlarge index: -1 block-inverted-sorter-large rotate: false - xy: 603, 206 + xy: 645, 14 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-inverted-sorter-medium rotate: false - xy: 1051, 574 + xy: 979, 380 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-inverted-sorter-small rotate: false - xy: 1113, 742 + xy: 963, 34 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-inverted-sorter-tiny rotate: false - xy: 1177, 145 + xy: 1189, 115 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12616,28 +12616,28 @@ block-inverted-sorter-xlarge index: -1 block-item-source-large rotate: false - xy: 603, 164 + xy: 695, 148 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-item-source-medium rotate: false - xy: 1071, 676 + xy: 979, 346 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-item-source-small rotate: false - xy: 1139, 742 + xy: 963, 8 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-item-source-tiny rotate: false - xy: 1177, 127 + xy: 1181, 97 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12651,28 +12651,28 @@ block-item-source-xlarge index: -1 block-item-void-large rotate: false - xy: 603, 122 + xy: 687, 106 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-item-void-medium rotate: false - xy: 1085, 642 + xy: 1017, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-item-void-small rotate: false - xy: 1165, 742 + xy: 2005, 735 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-item-void-tiny rotate: false - xy: 1177, 109 + xy: 1215, 141 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12686,28 +12686,28 @@ block-item-void-xlarge index: -1 block-junction-large rotate: false - xy: 603, 80 + xy: 687, 64 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-junction-medium rotate: false - xy: 1085, 608 + xy: 1051, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-junction-small rotate: false - xy: 1191, 742 + xy: 1979, 727 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-junction-tiny rotate: false - xy: 1177, 91 + xy: 1207, 123 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12721,28 +12721,28 @@ block-junction-xlarge index: -1 block-kiln-large rotate: false - xy: 603, 38 + xy: 687, 22 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-kiln-medium rotate: false - xy: 1085, 574 + xy: 1085, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-kiln-small rotate: false - xy: 1217, 742 + xy: 2005, 709 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-kiln-tiny rotate: false - xy: 1177, 73 + xy: 1241, 167 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12756,28 +12756,28 @@ block-kiln-xlarge index: -1 block-lancer-large rotate: false - xy: 661, 340 + xy: 745, 198 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-lancer-medium rotate: false - xy: 2013, 839 + xy: 1119, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-lancer-small rotate: false - xy: 1243, 742 + xy: 1693, 472 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-lancer-tiny rotate: false - xy: 1177, 55 + xy: 1233, 149 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12791,28 +12791,28 @@ block-lancer-xlarge index: -1 block-large-overdrive-projector-large rotate: false - xy: 653, 298 + xy: 737, 156 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-large-overdrive-projector-medium rotate: false - xy: 1579, 823 + xy: 1153, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-large-overdrive-projector-small rotate: false - xy: 1269, 742 + xy: 1693, 446 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-large-overdrive-projector-tiny rotate: false - xy: 1177, 37 + xy: 1267, 193 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12826,28 +12826,28 @@ block-large-overdrive-projector-xlarge index: -1 block-laser-drill-large rotate: false - xy: 711, 390 + xy: 729, 106 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-laser-drill-medium rotate: false - xy: 1613, 823 + xy: 1187, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-laser-drill-small rotate: false - xy: 1295, 742 + xy: 1693, 420 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-laser-drill-tiny rotate: false - xy: 667, 2 + xy: 1259, 175 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12861,35 +12861,35 @@ block-laser-drill-xlarge index: -1 block-launch-pad-large rotate: false - xy: 703, 348 + xy: 729, 64 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-launch-pad-large-large rotate: false - xy: 761, 440 + xy: 729, 22 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-launch-pad-large-medium rotate: false - xy: 1647, 823 + xy: 1221, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-launch-pad-large-small rotate: false - xy: 1321, 742 + xy: 1693, 394 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-launch-pad-large-tiny rotate: false - xy: 1527, 542 + xy: 1345, 255 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12903,21 +12903,21 @@ block-launch-pad-large-xlarge index: -1 block-launch-pad-medium rotate: false - xy: 1681, 823 + xy: 1255, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-launch-pad-small rotate: false - xy: 1347, 742 + xy: 1693, 368 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-launch-pad-tiny rotate: false - xy: 1527, 524 + xy: 1371, 279 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12931,28 +12931,28 @@ block-launch-pad-xlarge index: -1 block-liquid-junction-large rotate: false - xy: 753, 398 + xy: 779, 156 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-junction-medium rotate: false - xy: 1715, 823 + xy: 1289, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-junction-small rotate: false - xy: 1373, 742 + xy: 1693, 342 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-junction-tiny rotate: false - xy: 1561, 599 + xy: 1389, 279 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12966,28 +12966,28 @@ block-liquid-junction-xlarge index: -1 block-liquid-router-large rotate: false - xy: 645, 248 + xy: 771, 114 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-router-medium rotate: false - xy: 1749, 823 + xy: 1323, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-router-small rotate: false - xy: 1399, 742 + xy: 1693, 316 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-router-tiny rotate: false - xy: 1541, 571 + xy: 1407, 279 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13001,28 +13001,28 @@ block-liquid-router-xlarge index: -1 block-liquid-source-large rotate: false - xy: 645, 206 + xy: 771, 72 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-source-medium rotate: false - xy: 1783, 823 + xy: 1357, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-source-small rotate: false - xy: 1425, 742 + xy: 1693, 290 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-source-tiny rotate: false - xy: 435, 4 + xy: 1319, 234 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13036,28 +13036,28 @@ block-liquid-source-xlarge index: -1 block-liquid-tank-large rotate: false - xy: 645, 164 + xy: 771, 30 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-tank-medium rotate: false - xy: 1817, 823 + xy: 1391, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-tank-small rotate: false - xy: 1451, 742 + xy: 1691, 768 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-tank-tiny rotate: false - xy: 453, 4 + xy: 1337, 237 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13071,28 +13071,28 @@ block-liquid-tank-xlarge index: -1 block-liquid-void-large rotate: false - xy: 645, 122 + xy: 813, 114 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-void-medium rotate: false - xy: 1851, 823 + xy: 1425, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-void-small rotate: false - xy: 1477, 742 + xy: 1717, 768 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-void-tiny rotate: false - xy: 471, 4 + xy: 1645, 690 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13106,28 +13106,28 @@ block-liquid-void-xlarge index: -1 block-magmarock-large rotate: false - xy: 645, 80 + xy: 813, 72 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-magmarock-medium rotate: false - xy: 1885, 823 + xy: 1013, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-magmarock-small rotate: false - xy: 1503, 742 + xy: 1743, 768 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-magmarock-tiny rotate: false - xy: 489, 4 + xy: 1645, 672 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13141,28 +13141,28 @@ block-magmarock-xlarge index: -1 block-mass-conveyor-large rotate: false - xy: 645, 38 + xy: 813, 30 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mass-conveyor-medium rotate: false - xy: 1919, 823 + xy: 1013, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mass-conveyor-small rotate: false - xy: 1529, 742 + xy: 1769, 768 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mass-conveyor-tiny rotate: false - xy: 855, 2 + xy: 1645, 654 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13176,28 +13176,28 @@ block-mass-conveyor-xlarge index: -1 block-mass-driver-large rotate: false - xy: 695, 298 + xy: 821, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mass-driver-medium rotate: false - xy: 1953, 823 + xy: 1047, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mass-driver-small rotate: false - xy: 1079, 716 + xy: 1795, 768 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mass-driver-tiny rotate: false - xy: 873, 2 + xy: 1645, 636 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13211,28 +13211,28 @@ block-mass-driver-xlarge index: -1 block-mechanical-drill-large rotate: false - xy: 687, 256 + xy: 863, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mechanical-drill-medium rotate: false - xy: 769, 510 + xy: 1013, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mechanical-drill-small rotate: false - xy: 1105, 716 + xy: 1687, 742 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mechanical-drill-tiny rotate: false - xy: 891, 2 + xy: 1645, 618 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13246,28 +13246,28 @@ block-mechanical-drill-xlarge index: -1 block-mechanical-pump-large rotate: false - xy: 687, 214 + xy: 905, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mechanical-pump-medium rotate: false - xy: 803, 510 + xy: 1047, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mechanical-pump-small rotate: false - xy: 1131, 716 + xy: 1713, 742 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mechanical-pump-tiny rotate: false - xy: 909, 2 + xy: 1645, 600 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13281,28 +13281,28 @@ block-mechanical-pump-xlarge index: -1 block-meltdown-large rotate: false - xy: 687, 172 + xy: 947, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-meltdown-medium rotate: false - xy: 837, 510 + xy: 1081, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-meltdown-small rotate: false - xy: 1157, 716 + xy: 1739, 742 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-meltdown-tiny rotate: false - xy: 1581, 745 + xy: 1433, 287 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13316,28 +13316,28 @@ block-meltdown-xlarge index: -1 block-melter-large rotate: false - xy: 687, 130 + xy: 989, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-melter-medium rotate: false - xy: 871, 503 + xy: 1013, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-melter-small rotate: false - xy: 1183, 716 + xy: 1765, 742 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-melter-tiny rotate: false - xy: 1195, 505 + xy: 1451, 287 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13351,28 +13351,28 @@ block-melter-xlarge index: -1 block-mend-projector-large rotate: false - xy: 687, 88 + xy: 1031, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mend-projector-medium rotate: false - xy: 905, 503 + xy: 1047, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mend-projector-small rotate: false - xy: 1209, 716 + xy: 1791, 742 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mend-projector-tiny rotate: false - xy: 1195, 487 + xy: 1469, 287 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13386,28 +13386,28 @@ block-mend-projector-xlarge index: -1 block-mender-large rotate: false - xy: 687, 46 + xy: 1073, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mender-medium rotate: false - xy: 939, 503 + xy: 1081, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mender-small rotate: false - xy: 1235, 716 + xy: 1821, 762 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mender-tiny rotate: false - xy: 1195, 469 + xy: 1487, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13421,28 +13421,28 @@ block-mender-xlarge index: -1 block-message-large rotate: false - xy: 745, 348 + xy: 1115, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-message-medium rotate: false - xy: 973, 503 + xy: 1115, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-message-small rotate: false - xy: 1261, 716 + xy: 1847, 762 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-message-tiny rotate: false - xy: 1195, 451 + xy: 1505, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13456,28 +13456,28 @@ block-message-xlarge index: -1 block-metal-floor-2-large rotate: false - xy: 737, 306 + xy: 1157, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-2-medium rotate: false - xy: 1007, 503 + xy: 1013, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-2-small rotate: false - xy: 1287, 716 + xy: 1873, 762 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-2-tiny rotate: false - xy: 1195, 433 + xy: 1523, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13491,28 +13491,28 @@ block-metal-floor-2-xlarge index: -1 block-metal-floor-3-large rotate: false - xy: 795, 398 + xy: 1199, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-3-medium rotate: false - xy: 1015, 537 + xy: 1047, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-3-small rotate: false - xy: 1313, 716 + xy: 1817, 736 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-3-tiny rotate: false - xy: 1195, 415 + xy: 1541, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13526,28 +13526,28 @@ block-metal-floor-3-xlarge index: -1 block-metal-floor-5-large rotate: false - xy: 787, 356 + xy: 1241, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-5-medium rotate: false - xy: 1049, 540 + xy: 1081, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-5-small rotate: false - xy: 1339, 716 + xy: 1843, 736 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-5-tiny rotate: false - xy: 1195, 397 + xy: 1559, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13561,28 +13561,28 @@ block-metal-floor-5-xlarge index: -1 block-metal-floor-damaged-large rotate: false - xy: 729, 256 + xy: 1283, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-damaged-medium rotate: false - xy: 1083, 540 + xy: 1115, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-damaged-small rotate: false - xy: 1365, 716 + xy: 1869, 736 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-damaged-tiny rotate: false - xy: 1195, 379 + xy: 1577, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13596,28 +13596,28 @@ block-metal-floor-damaged-xlarge index: -1 block-metal-floor-large rotate: false - xy: 729, 214 + xy: 1325, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-medium rotate: false - xy: 1041, 503 + xy: 1149, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-small rotate: false - xy: 1391, 716 + xy: 1649, 726 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-tiny rotate: false - xy: 1195, 361 + xy: 1595, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13631,28 +13631,28 @@ block-metal-floor-xlarge index: -1 block-moss-large rotate: false - xy: 729, 172 + xy: 1367, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-moss-medium rotate: false - xy: 1075, 506 + xy: 1047, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-moss-small rotate: false - xy: 1417, 716 + xy: 1895, 736 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-moss-tiny rotate: false - xy: 1195, 343 + xy: 1173, 71 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13666,28 +13666,28 @@ block-moss-xlarge index: -1 block-multi-press-large rotate: false - xy: 729, 130 + xy: 1409, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-multi-press-medium rotate: false - xy: 1109, 506 + xy: 1081, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-multi-press-small rotate: false - xy: 1443, 716 + xy: 1921, 739 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-multi-press-tiny rotate: false - xy: 1195, 325 + xy: 1173, 53 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13701,28 +13701,28 @@ block-multi-press-xlarge index: -1 block-multiplicative-reconstructor-large rotate: false - xy: 729, 88 + xy: 1451, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-multiplicative-reconstructor-medium rotate: false - xy: 1117, 540 + xy: 1115, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-multiplicative-reconstructor-small rotate: false - xy: 1469, 716 + xy: 1947, 724 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-multiplicative-reconstructor-tiny rotate: false - xy: 1195, 307 + xy: 1173, 35 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13736,28 +13736,28 @@ block-multiplicative-reconstructor-xlarge index: -1 block-naval-factory-large rotate: false - xy: 729, 46 + xy: 1493, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-naval-factory-medium rotate: false - xy: 1143, 506 + xy: 1149, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-naval-factory-small rotate: false - xy: 1495, 716 + xy: 1921, 713 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-naval-factory-tiny rotate: false - xy: 1195, 289 + xy: 1155, 17 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13771,28 +13771,28 @@ block-naval-factory-xlarge index: -1 block-oil-extractor-large rotate: false - xy: 687, 4 + xy: 1535, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-oil-extractor-medium rotate: false - xy: 837, 476 + xy: 1183, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-oil-extractor-small rotate: false - xy: 1521, 716 + xy: 1947, 698 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-oil-extractor-tiny rotate: false - xy: 1195, 271 + xy: 1173, 17 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13806,28 +13806,28 @@ block-oil-extractor-xlarge index: -1 block-ore-coal-large rotate: false - xy: 729, 4 + xy: 1577, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-coal-medium rotate: false - xy: 803, 476 + xy: 1081, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-coal-small rotate: false - xy: 1105, 690 + xy: 1973, 701 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-coal-tiny rotate: false - xy: 1195, 253 + xy: 1199, 97 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13841,28 +13841,28 @@ block-ore-coal-xlarge index: -1 block-ore-copper-large rotate: false - xy: 779, 306 + xy: 1619, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-copper-medium rotate: false - xy: 803, 442 + xy: 1115, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-copper-small rotate: false - xy: 1131, 690 + xy: 1675, 716 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-copper-tiny rotate: false - xy: 1195, 235 + xy: 1191, 79 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13876,28 +13876,28 @@ block-ore-copper-xlarge index: -1 block-ore-lead-large rotate: false - xy: 771, 264 + xy: 1661, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-lead-medium rotate: false - xy: 837, 442 + xy: 1149, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-lead-small rotate: false - xy: 1157, 690 + xy: 1701, 716 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-lead-tiny rotate: false - xy: 1195, 217 + xy: 1191, 61 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13911,28 +13911,28 @@ block-ore-lead-xlarge index: -1 block-ore-scrap-large rotate: false - xy: 771, 222 + xy: 1703, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-scrap-medium rotate: false - xy: 871, 469 + xy: 1183, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-scrap-small rotate: false - xy: 1183, 690 + xy: 1727, 716 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-scrap-tiny rotate: false - xy: 1195, 199 + xy: 1191, 43 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13946,28 +13946,28 @@ block-ore-scrap-xlarge index: -1 block-ore-thorium-large rotate: false - xy: 771, 180 + xy: 1745, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-thorium-medium rotate: false - xy: 905, 469 + xy: 1217, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-thorium-small rotate: false - xy: 1209, 690 + xy: 1753, 716 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-thorium-tiny rotate: false - xy: 1195, 181 + xy: 1191, 25 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13981,28 +13981,28 @@ block-ore-thorium-xlarge index: -1 block-ore-titanium-large rotate: false - xy: 771, 138 + xy: 1787, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-titanium-medium rotate: false - xy: 939, 469 + xy: 1115, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-titanium-small rotate: false - xy: 1235, 690 + xy: 1779, 716 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-titanium-tiny rotate: false - xy: 1195, 163 + xy: 1225, 123 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14016,28 +14016,28 @@ block-ore-titanium-xlarge index: -1 block-overdrive-projector-large rotate: false - xy: 771, 96 + xy: 1829, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-overdrive-projector-medium rotate: false - xy: 973, 469 + xy: 1149, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-overdrive-projector-small rotate: false - xy: 1261, 690 + xy: 1805, 710 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-overdrive-projector-tiny rotate: false - xy: 1195, 145 + xy: 1217, 105 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14051,28 +14051,28 @@ block-overdrive-projector-xlarge index: -1 block-overflow-gate-large rotate: false - xy: 771, 54 + xy: 1871, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-overflow-gate-medium rotate: false - xy: 1007, 469 + xy: 1183, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-overflow-gate-small rotate: false - xy: 1287, 690 + xy: 1831, 710 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-overflow-gate-tiny rotate: false - xy: 1195, 127 + xy: 1251, 149 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14086,28 +14086,28 @@ block-overflow-gate-xlarge index: -1 block-parallax-large rotate: false - xy: 771, 12 + xy: 1913, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-parallax-medium rotate: false - xy: 1041, 469 + xy: 1217, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-parallax-small rotate: false - xy: 1313, 690 + xy: 1857, 710 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-parallax-tiny rotate: false - xy: 1195, 109 + xy: 1243, 131 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14121,28 +14121,28 @@ block-parallax-xlarge index: -1 block-payload-router-large rotate: false - xy: 829, 356 + xy: 1955, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-payload-router-medium rotate: false - xy: 1075, 472 + xy: 1251, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-payload-router-small rotate: false - xy: 1339, 690 + xy: 1883, 710 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-payload-router-tiny rotate: false - xy: 1195, 91 + xy: 1277, 175 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14156,28 +14156,28 @@ block-payload-router-xlarge index: -1 block-pebbles-large rotate: false - xy: 821, 314 + xy: 845, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pebbles-medium rotate: false - xy: 1109, 472 + xy: 1149, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pebbles-small rotate: false - xy: 1365, 690 + xy: 1973, 675 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pebbles-tiny rotate: false - xy: 1195, 73 + xy: 1269, 157 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14191,28 +14191,28 @@ block-pebbles-xlarge index: -1 block-phase-conduit-large rotate: false - xy: 813, 264 + xy: 887, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-phase-conduit-medium rotate: false - xy: 1143, 472 + xy: 1183, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-conduit-small rotate: false - xy: 1391, 690 + xy: 1999, 683 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-phase-conduit-tiny rotate: false - xy: 1195, 55 + xy: 1355, 237 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14226,28 +14226,28 @@ block-phase-conduit-xlarge index: -1 block-phase-conveyor-large rotate: false - xy: 813, 222 + xy: 929, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-phase-conveyor-medium rotate: false - xy: 837, 408 + xy: 1217, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-conveyor-small rotate: false - xy: 1417, 690 + xy: 1999, 657 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-phase-conveyor-tiny rotate: false - xy: 1195, 37 + xy: 1209, 79 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14261,35 +14261,35 @@ block-phase-conveyor-xlarge index: -1 block-phase-wall-large rotate: false - xy: 813, 180 + xy: 971, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-phase-wall-large-large rotate: false - xy: 813, 138 + xy: 1013, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-phase-wall-large-medium rotate: false - xy: 871, 435 + xy: 1251, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-wall-large-small rotate: false - xy: 1443, 690 + xy: 989, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-phase-wall-large-tiny rotate: false - xy: 1213, 506 + xy: 1209, 61 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14303,21 +14303,21 @@ block-phase-wall-large-xlarge index: -1 block-phase-wall-medium rotate: false - xy: 905, 435 + xy: 1285, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-wall-small rotate: false - xy: 1469, 690 + xy: 1015, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-phase-wall-tiny rotate: false - xy: 1213, 488 + xy: 1209, 43 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14331,28 +14331,28 @@ block-phase-wall-xlarge index: -1 block-phase-weaver-large rotate: false - xy: 813, 96 + xy: 1055, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-phase-weaver-medium rotate: false - xy: 939, 435 + xy: 1183, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-weaver-small rotate: false - xy: 1495, 690 + xy: 989, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-phase-weaver-tiny rotate: false - xy: 1231, 506 + xy: 1209, 25 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14366,28 +14366,28 @@ block-phase-weaver-xlarge index: -1 block-pine-large rotate: false - xy: 813, 54 + xy: 1097, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pine-medium rotate: false - xy: 973, 435 + xy: 1217, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pine-small rotate: false - xy: 1521, 690 + xy: 1041, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pine-tiny rotate: false - xy: 1213, 470 + xy: 1191, 7 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14401,28 +14401,28 @@ block-pine-xlarge index: -1 block-plastanium-compressor-large rotate: false - xy: 813, 12 + xy: 1139, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-plastanium-compressor-medium rotate: false - xy: 1007, 435 + xy: 1251, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-plastanium-compressor-small rotate: false - xy: 1555, 737 + xy: 989, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-plastanium-compressor-tiny rotate: false - xy: 1231, 488 + xy: 1209, 7 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14436,28 +14436,28 @@ block-plastanium-compressor-xlarge index: -1 block-plastanium-conveyor-large rotate: false - xy: 863, 314 + xy: 1181, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-plastanium-conveyor-medium rotate: false - xy: 1041, 435 + xy: 1285, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-plastanium-conveyor-small rotate: false - xy: 1547, 711 + xy: 1015, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-plastanium-conveyor-tiny rotate: false - xy: 1249, 506 + xy: 1235, 105 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14471,35 +14471,35 @@ block-plastanium-conveyor-xlarge index: -1 block-plastanium-wall-large rotate: false - xy: 855, 272 + xy: 1223, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-plastanium-wall-large-large rotate: false - xy: 855, 230 + xy: 1265, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-plastanium-wall-large-medium rotate: false - xy: 1075, 438 + xy: 1319, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-plastanium-wall-large-small rotate: false - xy: 1547, 685 + xy: 1067, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-plastanium-wall-large-tiny rotate: false - xy: 1213, 452 + xy: 1227, 87 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14513,21 +14513,21 @@ block-plastanium-wall-large-xlarge index: -1 block-plastanium-wall-medium rotate: false - xy: 1109, 438 + xy: 1217, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-plastanium-wall-small rotate: false - xy: 1119, 664 + xy: 989, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-plastanium-wall-tiny rotate: false - xy: 1231, 470 + xy: 1227, 69 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14541,28 +14541,28 @@ block-plastanium-wall-xlarge index: -1 block-plated-conduit-large rotate: false - xy: 855, 188 + xy: 1307, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-plated-conduit-medium rotate: false - xy: 1143, 438 + xy: 1251, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-plated-conduit-small rotate: false - xy: 1119, 638 + xy: 1015, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-plated-conduit-tiny rotate: false - xy: 1249, 488 + xy: 1227, 51 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14576,28 +14576,28 @@ block-plated-conduit-xlarge index: -1 block-pneumatic-drill-large rotate: false - xy: 855, 146 + xy: 1349, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pneumatic-drill-medium rotate: false - xy: 871, 401 + xy: 1285, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pneumatic-drill-small rotate: false - xy: 1145, 664 + xy: 1041, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pneumatic-drill-tiny rotate: false - xy: 1267, 506 + xy: 1227, 33 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14611,35 +14611,35 @@ block-pneumatic-drill-xlarge index: -1 block-power-node-large rotate: false - xy: 855, 104 + xy: 1391, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-power-node-large-large rotate: false - xy: 855, 62 + xy: 1433, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-power-node-large-medium rotate: false - xy: 905, 401 + xy: 1319, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-power-node-large-small rotate: false - xy: 1119, 612 + xy: 1093, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-power-node-large-tiny rotate: false - xy: 1213, 434 + xy: 1227, 15 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14653,21 +14653,21 @@ block-power-node-large-xlarge index: -1 block-power-node-medium rotate: false - xy: 939, 401 + xy: 1353, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-power-node-small rotate: false - xy: 1171, 664 + xy: 989, 211 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-power-node-tiny rotate: false - xy: 1231, 452 + xy: 1261, 131 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14681,28 +14681,28 @@ block-power-node-xlarge index: -1 block-power-source-large rotate: false - xy: 855, 20 + xy: 1475, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-power-source-medium rotate: false - xy: 973, 401 + xy: 1251, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-power-source-small rotate: false - xy: 1145, 638 + xy: 1015, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-power-source-tiny rotate: false - xy: 1249, 470 + xy: 1253, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14716,28 +14716,28 @@ block-power-source-xlarge index: -1 block-power-void-large rotate: false - xy: 897, 272 + xy: 1517, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-power-void-medium rotate: false - xy: 1007, 401 + xy: 1285, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-power-void-small rotate: false - xy: 1119, 586 + xy: 1041, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-power-void-tiny rotate: false - xy: 1267, 488 + xy: 1287, 157 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14751,28 +14751,28 @@ block-power-void-xlarge index: -1 block-pulse-conduit-large rotate: false - xy: 897, 230 + xy: 1559, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pulse-conduit-medium rotate: false - xy: 1041, 401 + xy: 1319, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pulse-conduit-small rotate: false - xy: 1197, 664 + xy: 1067, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pulse-conduit-tiny rotate: false - xy: 1285, 506 + xy: 1279, 139 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14786,28 +14786,28 @@ block-pulse-conduit-xlarge index: -1 block-pulverizer-large rotate: false - xy: 897, 188 + xy: 1601, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pulverizer-medium rotate: false - xy: 1075, 404 + xy: 1353, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pulverizer-small rotate: false - xy: 1171, 638 + xy: 1119, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pulverizer-tiny rotate: false - xy: 1213, 416 + xy: 1245, 87 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14821,28 +14821,28 @@ block-pulverizer-xlarge index: -1 block-pyratite-mixer-large rotate: false - xy: 897, 146 + xy: 1643, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pyratite-mixer-medium rotate: false - xy: 1109, 404 + xy: 1387, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pyratite-mixer-small rotate: false - xy: 1145, 612 + xy: 989, 185 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pyratite-mixer-tiny rotate: false - xy: 1231, 434 + xy: 1245, 69 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14856,28 +14856,28 @@ block-pyratite-mixer-xlarge index: -1 block-repair-point-large rotate: false - xy: 897, 104 + xy: 1685, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-repair-point-medium rotate: false - xy: 1143, 404 + xy: 1285, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-repair-point-small rotate: false - xy: 1223, 664 + xy: 1015, 211 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-repair-point-tiny rotate: false - xy: 1249, 452 + xy: 1245, 51 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14891,28 +14891,28 @@ block-repair-point-xlarge index: -1 block-resupply-point-large rotate: false - xy: 897, 62 + xy: 1727, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-resupply-point-medium rotate: false - xy: 871, 367 + xy: 1319, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-resupply-point-small rotate: false - xy: 1197, 638 + xy: 1041, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-resupply-point-tiny rotate: false - xy: 1267, 470 + xy: 1245, 33 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14926,28 +14926,28 @@ block-resupply-point-xlarge index: -1 block-ripple-large rotate: false - xy: 897, 20 + xy: 1769, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ripple-medium rotate: false - xy: 905, 367 + xy: 1353, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ripple-small rotate: false - xy: 1171, 612 + xy: 1067, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ripple-tiny rotate: false - xy: 1285, 488 + xy: 1245, 15 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14961,28 +14961,28 @@ block-ripple-xlarge index: -1 block-rock-large rotate: false - xy: 821, 933 + xy: 1811, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-rock-medium rotate: false - xy: 939, 367 + xy: 1387, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-rock-small rotate: false - xy: 1145, 586 + xy: 1093, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-rock-tiny rotate: false - xy: 1303, 506 + xy: 1271, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -14996,28 +14996,28 @@ block-rock-xlarge index: -1 block-rocks-large rotate: false - xy: 863, 933 + xy: 1853, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-rocks-medium rotate: false - xy: 973, 367 + xy: 1421, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-rocks-small rotate: false - xy: 1249, 664 + xy: 1145, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-rocks-tiny rotate: false - xy: 1213, 398 + xy: 1263, 95 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15031,28 +15031,28 @@ block-rocks-xlarge index: -1 block-rotary-pump-large rotate: false - xy: 905, 933 + xy: 1895, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-rotary-pump-medium rotate: false - xy: 1007, 367 + xy: 1319, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-rotary-pump-small rotate: false - xy: 1223, 638 + xy: 989, 159 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-rotary-pump-tiny rotate: false - xy: 1231, 416 + xy: 1263, 77 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15066,28 +15066,28 @@ block-rotary-pump-xlarge index: -1 block-router-large rotate: false - xy: 947, 933 + xy: 1937, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-router-medium rotate: false - xy: 1041, 367 + xy: 1353, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-router-small rotate: false - xy: 1197, 612 + xy: 1015, 185 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-router-tiny rotate: false - xy: 1249, 434 + xy: 1263, 59 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15101,28 +15101,28 @@ block-router-xlarge index: -1 block-rtg-generator-large rotate: false - xy: 989, 933 + xy: 859, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-rtg-generator-medium rotate: false - xy: 1075, 370 + xy: 1387, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-rtg-generator-small rotate: false - xy: 1171, 586 + xy: 1041, 211 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-rtg-generator-tiny rotate: false - xy: 1267, 452 + xy: 1263, 41 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15136,28 +15136,28 @@ block-rtg-generator-xlarge index: -1 block-salt-large rotate: false - xy: 1031, 933 + xy: 859, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-salt-medium rotate: false - xy: 1109, 370 + xy: 1421, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-salt-small rotate: false - xy: 1275, 664 + xy: 1067, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-salt-tiny rotate: false - xy: 1285, 470 + xy: 1263, 23 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15171,28 +15171,28 @@ block-salt-xlarge index: -1 block-saltrocks-large rotate: false - xy: 1073, 933 + xy: 901, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-saltrocks-medium rotate: false - xy: 1143, 370 + xy: 1353, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-saltrocks-small rotate: false - xy: 1249, 638 + xy: 1093, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-saltrocks-tiny rotate: false - xy: 1303, 488 + xy: 1297, 139 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15206,28 +15206,28 @@ block-saltrocks-xlarge index: -1 block-salvo-large rotate: false - xy: 1115, 933 + xy: 859, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-salvo-medium rotate: false - xy: 905, 333 + xy: 1387, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-salvo-small rotate: false - xy: 1223, 612 + xy: 1119, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-salvo-tiny rotate: false - xy: 1321, 506 + xy: 1289, 121 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15241,28 +15241,28 @@ block-salvo-xlarge index: -1 block-sand-boulder-large rotate: false - xy: 1157, 933 + xy: 943, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sand-boulder-medium rotate: false - xy: 939, 333 + xy: 1421, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sand-boulder-small rotate: false - xy: 1197, 586 + xy: 1171, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sand-boulder-tiny rotate: false - xy: 1213, 380 + xy: 1281, 95 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15276,56 +15276,56 @@ block-sand-boulder-xlarge index: -1 block-sand-large rotate: false - xy: 1199, 933 + xy: 901, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sand-medium rotate: false - xy: 973, 333 + xy: 1387, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sand-small rotate: false - xy: 1301, 664 + xy: 989, 133 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sand-tiny rotate: false - xy: 1231, 398 + xy: 1281, 77 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-sand-water-large rotate: false - xy: 1241, 933 + xy: 859, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sand-water-medium rotate: false - xy: 1007, 333 + xy: 1421, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sand-water-small rotate: false - xy: 1275, 638 + xy: 1015, 159 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sand-water-tiny rotate: false - xy: 1249, 416 + xy: 1281, 59 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15346,28 +15346,28 @@ block-sand-xlarge index: -1 block-sandrocks-large rotate: false - xy: 1283, 933 + xy: 985, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sandrocks-medium rotate: false - xy: 1041, 333 + xy: 1421, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sandrocks-small rotate: false - xy: 1249, 612 + xy: 1041, 185 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sandrocks-tiny rotate: false - xy: 1267, 434 + xy: 1281, 41 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15381,28 +15381,28 @@ block-sandrocks-xlarge index: -1 block-scatter-large rotate: false - xy: 1325, 933 + xy: 943, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scatter-medium rotate: false - xy: 1075, 336 + xy: 1013, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scatter-small rotate: false - xy: 1223, 586 + xy: 1067, 211 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scatter-tiny rotate: false - xy: 1285, 452 + xy: 1281, 23 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15416,28 +15416,28 @@ block-scatter-xlarge index: -1 block-scorch-large rotate: false - xy: 1367, 933 + xy: 901, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scorch-medium rotate: false - xy: 1109, 336 + xy: 1047, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scorch-small rotate: false - xy: 1327, 664 + xy: 1093, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scorch-tiny rotate: false - xy: 1303, 470 + xy: 1263, 5 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15451,28 +15451,28 @@ block-scorch-xlarge index: -1 block-scrap-wall-gigantic-large rotate: false - xy: 1409, 933 + xy: 859, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scrap-wall-gigantic-medium rotate: false - xy: 1143, 336 + xy: 1081, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-gigantic-small rotate: false - xy: 1301, 638 + xy: 1119, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scrap-wall-gigantic-tiny rotate: false - xy: 1321, 488 + xy: 1281, 5 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15486,28 +15486,28 @@ block-scrap-wall-gigantic-xlarge index: -1 block-scrap-wall-huge-large rotate: false - xy: 1451, 933 + xy: 1027, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scrap-wall-huge-medium rotate: false - xy: 939, 299 + xy: 1115, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-huge-small rotate: false - xy: 1275, 612 + xy: 1145, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scrap-wall-huge-tiny rotate: false - xy: 1339, 506 + xy: 1307, 121 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15521,35 +15521,35 @@ block-scrap-wall-huge-xlarge index: -1 block-scrap-wall-large rotate: false - xy: 1493, 933 + xy: 985, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scrap-wall-large-large rotate: false - xy: 1535, 933 + xy: 943, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scrap-wall-large-medium rotate: false - xy: 939, 265 + xy: 1149, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-large-small rotate: false - xy: 1249, 586 + xy: 1197, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scrap-wall-large-tiny rotate: false - xy: 1213, 362 + xy: 1299, 103 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15563,21 +15563,21 @@ block-scrap-wall-large-xlarge index: -1 block-scrap-wall-medium rotate: false - xy: 973, 299 + xy: 1183, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-small rotate: false - xy: 1353, 664 + xy: 989, 107 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scrap-wall-tiny rotate: false - xy: 1231, 380 + xy: 1299, 85 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15591,28 +15591,28 @@ block-scrap-wall-xlarge index: -1 block-segment-large rotate: false - xy: 1577, 933 + xy: 901, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-segment-medium rotate: false - xy: 939, 231 + xy: 1217, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-segment-small rotate: false - xy: 1327, 638 + xy: 1015, 133 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-segment-tiny rotate: false - xy: 1249, 398 + xy: 1299, 67 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15626,28 +15626,28 @@ block-segment-xlarge index: -1 block-separator-large rotate: false - xy: 1619, 933 + xy: 1069, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-separator-medium rotate: false - xy: 973, 265 + xy: 1251, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-separator-small rotate: false - xy: 1301, 612 + xy: 1041, 159 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-separator-tiny rotate: false - xy: 1267, 416 + xy: 1299, 49 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15661,28 +15661,28 @@ block-separator-xlarge index: -1 block-shale-boulder-large rotate: false - xy: 1661, 933 + xy: 1027, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-shale-boulder-medium rotate: false - xy: 1007, 299 + xy: 1285, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shale-boulder-small rotate: false - xy: 1275, 586 + xy: 1067, 185 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-shale-boulder-tiny rotate: false - xy: 1285, 434 + xy: 1299, 31 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15696,28 +15696,28 @@ block-shale-boulder-xlarge index: -1 block-shale-large rotate: false - xy: 1703, 933 + xy: 985, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-shale-medium rotate: false - xy: 939, 197 + xy: 1319, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shale-small rotate: false - xy: 1379, 664 + xy: 1093, 211 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-shale-tiny rotate: false - xy: 1303, 452 + xy: 1299, 13 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15731,28 +15731,28 @@ block-shale-xlarge index: -1 block-shalerocks-large rotate: false - xy: 1745, 933 + xy: 943, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-shalerocks-medium rotate: false - xy: 973, 231 + xy: 1353, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shalerocks-small rotate: false - xy: 1353, 638 + xy: 1119, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-shalerocks-tiny rotate: false - xy: 1321, 470 + xy: 1317, 103 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15766,28 +15766,28 @@ block-shalerocks-xlarge index: -1 block-shock-mine-large rotate: false - xy: 1787, 933 + xy: 901, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-shock-mine-medium rotate: false - xy: 1007, 265 + xy: 1387, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shock-mine-small rotate: false - xy: 1327, 612 + xy: 1145, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-shock-mine-tiny rotate: false - xy: 1339, 488 + xy: 1317, 85 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15801,28 +15801,28 @@ block-shock-mine-xlarge index: -1 block-shrubs-large rotate: false - xy: 1829, 933 + xy: 1111, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-shrubs-medium rotate: false - xy: 1041, 299 + xy: 1421, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shrubs-small rotate: false - xy: 1301, 586 + xy: 1171, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-shrubs-tiny rotate: false - xy: 1357, 506 + xy: 1317, 67 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15836,28 +15836,28 @@ block-shrubs-xlarge index: -1 block-silicon-crucible-large rotate: false - xy: 1871, 933 + xy: 1069, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-silicon-crucible-medium rotate: false - xy: 1075, 302 + xy: 1475, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-silicon-crucible-small rotate: false - xy: 1405, 664 + xy: 1223, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-silicon-crucible-tiny rotate: false - xy: 1213, 344 + xy: 1317, 49 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15871,28 +15871,28 @@ block-silicon-crucible-xlarge index: -1 block-silicon-smelter-large rotate: false - xy: 1913, 933 + xy: 1027, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-silicon-smelter-medium rotate: false - xy: 939, 163 + xy: 1471, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-silicon-smelter-small rotate: false - xy: 1379, 638 + xy: 989, 81 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-silicon-smelter-tiny rotate: false - xy: 1231, 362 + xy: 1317, 31 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15906,28 +15906,28 @@ block-silicon-smelter-xlarge index: -1 block-slag-large rotate: false - xy: 1955, 933 + xy: 985, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-slag-medium rotate: false - xy: 973, 197 + xy: 1467, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-slag-small rotate: false - xy: 1353, 612 + xy: 1015, 107 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-slag-tiny rotate: false - xy: 1249, 380 + xy: 1317, 13 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15941,42 +15941,42 @@ block-slag-xlarge index: -1 block-snow-large rotate: false - xy: 845, 891 + xy: 943, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-snow-medium rotate: false - xy: 1007, 231 + xy: 1459, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snow-pine-large rotate: false - xy: 887, 891 + xy: 1153, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-snow-pine-medium rotate: false - xy: 1041, 265 + xy: 1455, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snow-pine-small rotate: false - xy: 1327, 586 + xy: 1041, 133 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-snow-pine-tiny rotate: false - xy: 1267, 398 + xy: 1293, 216 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -15990,14 +15990,14 @@ block-snow-pine-xlarge index: -1 block-snow-small rotate: false - xy: 1431, 664 + xy: 1067, 159 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-snow-tiny rotate: false - xy: 1285, 416 + xy: 1311, 216 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16011,28 +16011,28 @@ block-snow-xlarge index: -1 block-snowrock-large rotate: false - xy: 929, 891 + xy: 1111, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-snowrock-medium rotate: false - xy: 1075, 268 + xy: 1455, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snowrock-small rotate: false - xy: 1405, 638 + xy: 1093, 185 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-snowrock-tiny rotate: false - xy: 1303, 434 + xy: 1329, 216 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16046,28 +16046,28 @@ block-snowrock-xlarge index: -1 block-snowrocks-large rotate: false - xy: 971, 891 + xy: 1069, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-snowrocks-medium rotate: false - xy: 1109, 302 + xy: 1455, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snowrocks-small rotate: false - xy: 1379, 612 + xy: 1119, 211 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-snowrocks-tiny rotate: false - xy: 1321, 452 + xy: 1347, 219 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16081,35 +16081,35 @@ block-snowrocks-xlarge index: -1 block-solar-panel-large rotate: false - xy: 1013, 891 + xy: 1027, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-solar-panel-large-large rotate: false - xy: 1055, 891 + xy: 985, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-solar-panel-large-medium rotate: false - xy: 939, 129 + xy: 1455, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-solar-panel-large-small rotate: false - xy: 1353, 586 + xy: 1145, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-solar-panel-large-tiny rotate: false - xy: 1339, 470 + xy: 1365, 219 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16123,21 +16123,21 @@ block-solar-panel-large-xlarge index: -1 block-solar-panel-medium rotate: false - xy: 973, 163 + xy: 1455, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-solar-panel-small rotate: false - xy: 1457, 664 + xy: 1171, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-solar-panel-tiny rotate: false - xy: 1357, 488 + xy: 1285, 198 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16151,28 +16151,28 @@ block-solar-panel-xlarge index: -1 block-sorter-large rotate: false - xy: 1097, 891 + xy: 1195, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sorter-medium rotate: false - xy: 1007, 197 + xy: 1455, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sorter-small rotate: false - xy: 1431, 638 + xy: 1197, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sorter-tiny rotate: false - xy: 1375, 506 + xy: 1303, 198 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16186,28 +16186,28 @@ block-sorter-xlarge index: -1 block-spawn-large rotate: false - xy: 1139, 891 + xy: 1153, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spawn-medium rotate: false - xy: 1041, 231 + xy: 1509, 660 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spawn-small rotate: false - xy: 1405, 612 + xy: 1249, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spawn-tiny rotate: false - xy: 1213, 326 + xy: 1321, 198 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16221,28 +16221,28 @@ block-spawn-xlarge index: -1 block-spectre-large rotate: false - xy: 1181, 891 + xy: 1111, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spectre-medium rotate: false - xy: 1075, 234 + xy: 1543, 660 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spectre-small rotate: false - xy: 1379, 586 + xy: 989, 55 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spectre-tiny rotate: false - xy: 1231, 344 + xy: 1295, 180 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16256,28 +16256,28 @@ block-spectre-xlarge index: -1 block-spore-cluster-large rotate: false - xy: 1223, 891 + xy: 1069, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spore-cluster-medium rotate: false - xy: 1109, 268 + xy: 1699, 828 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spore-cluster-small rotate: false - xy: 1483, 664 + xy: 1015, 81 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spore-cluster-tiny rotate: false - xy: 1249, 362 + xy: 1313, 180 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16291,28 +16291,28 @@ block-spore-cluster-xlarge index: -1 block-spore-moss-large rotate: false - xy: 1265, 891 + xy: 1027, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spore-moss-medium rotate: false - xy: 1143, 302 + xy: 1733, 828 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spore-moss-small rotate: false - xy: 1457, 638 + xy: 1041, 107 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spore-moss-tiny rotate: false - xy: 1267, 380 + xy: 1305, 162 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16326,28 +16326,28 @@ block-spore-moss-xlarge index: -1 block-spore-pine-large rotate: false - xy: 1307, 891 + xy: 1237, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spore-pine-medium rotate: false - xy: 939, 95 + xy: 1767, 828 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spore-pine-small rotate: false - xy: 1431, 612 + xy: 1067, 133 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spore-pine-tiny rotate: false - xy: 1285, 398 + xy: 1339, 198 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16361,28 +16361,28 @@ block-spore-pine-xlarge index: -1 block-spore-press-large rotate: false - xy: 1349, 891 + xy: 1195, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spore-press-medium rotate: false - xy: 973, 129 + xy: 1801, 828 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spore-press-small rotate: false - xy: 1405, 586 + xy: 1093, 159 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spore-press-tiny rotate: false - xy: 1303, 416 + xy: 1331, 180 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16396,28 +16396,28 @@ block-spore-press-xlarge index: -1 block-sporerocks-large rotate: false - xy: 1391, 891 + xy: 1153, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sporerocks-medium rotate: false - xy: 1007, 163 + xy: 1835, 828 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sporerocks-small rotate: false - xy: 1509, 664 + xy: 1119, 185 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sporerocks-tiny rotate: false - xy: 1321, 434 + xy: 1323, 162 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16431,28 +16431,28 @@ block-sporerocks-xlarge index: -1 block-stone-large rotate: false - xy: 1433, 891 + xy: 1111, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-stone-medium rotate: false - xy: 1041, 197 + xy: 1869, 828 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-stone-small rotate: false - xy: 1483, 638 + xy: 1145, 211 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-stone-tiny rotate: false - xy: 1339, 452 + xy: 1357, 201 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16466,28 +16466,28 @@ block-stone-xlarge index: -1 block-surge-tower-large rotate: false - xy: 1475, 891 + xy: 1069, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-surge-tower-medium rotate: false - xy: 1075, 200 + xy: 1903, 828 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-surge-tower-small rotate: false - xy: 1457, 612 + xy: 1171, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-surge-tower-tiny rotate: false - xy: 1357, 470 + xy: 1315, 144 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16501,35 +16501,35 @@ block-surge-tower-xlarge index: -1 block-surge-wall-large rotate: false - xy: 1517, 891 + xy: 1279, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-surge-wall-large-large rotate: false - xy: 1559, 891 + xy: 1237, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-surge-wall-large-medium rotate: false - xy: 1109, 234 + xy: 1937, 828 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-surge-wall-large-small rotate: false - xy: 1431, 586 + xy: 1197, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-surge-wall-large-tiny rotate: false - xy: 1375, 488 + xy: 1349, 180 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16543,21 +16543,21 @@ block-surge-wall-large-xlarge index: -1 block-surge-wall-medium rotate: false - xy: 1143, 268 + xy: 1657, 786 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-surge-wall-small rotate: false - xy: 1509, 638 + xy: 1223, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-surge-wall-tiny rotate: false - xy: 1393, 506 + xy: 1341, 162 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16571,28 +16571,28 @@ block-surge-wall-xlarge index: -1 block-swarmer-large rotate: false - xy: 1601, 891 + xy: 1195, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-swarmer-medium rotate: false - xy: 939, 61 + xy: 1615, 744 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-swarmer-small rotate: false - xy: 1483, 612 + xy: 1275, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-swarmer-tiny rotate: false - xy: 1213, 308 + xy: 1333, 144 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16606,28 +16606,28 @@ block-swarmer-xlarge index: -1 block-tainted-water-large rotate: false - xy: 1643, 891 + xy: 1153, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-tainted-water-medium rotate: false - xy: 973, 95 + xy: 1509, 626 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-tainted-water-small rotate: false - xy: 1457, 586 + xy: 989, 29 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-tainted-water-tiny rotate: false - xy: 1231, 326 + xy: 1325, 126 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16641,28 +16641,28 @@ block-tainted-water-xlarge index: -1 block-tar-large rotate: false - xy: 1685, 891 + xy: 1111, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-tar-medium rotate: false - xy: 1007, 129 + xy: 1543, 626 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-tar-small rotate: false - xy: 1509, 612 + xy: 1015, 55 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-tar-tiny rotate: false - xy: 1249, 344 + xy: 1375, 201 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16676,28 +16676,28 @@ block-tar-xlarge index: -1 block-tendrils-large rotate: false - xy: 1727, 891 + xy: 1321, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-tendrils-medium rotate: false - xy: 1041, 163 + xy: 1573, 702 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-tendrils-small rotate: false - xy: 1483, 586 + xy: 1041, 81 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-tendrils-tiny rotate: false - xy: 1267, 362 + xy: 1367, 183 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16711,28 +16711,28 @@ block-tendrils-xlarge index: -1 block-tetrative-reconstructor-large rotate: false - xy: 1769, 891 + xy: 1279, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-tetrative-reconstructor-medium rotate: false - xy: 1075, 166 + xy: 1577, 668 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-tetrative-reconstructor-small rotate: false - xy: 1509, 586 + xy: 1067, 107 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-tetrative-reconstructor-tiny rotate: false - xy: 1285, 380 + xy: 1359, 162 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16746,28 +16746,28 @@ block-tetrative-reconstructor-xlarge index: -1 block-thermal-generator-large rotate: false - xy: 1811, 891 + xy: 1237, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thermal-generator-medium rotate: false - xy: 1109, 200 + xy: 1577, 634 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thermal-generator-small rotate: false - xy: 1151, 560 + xy: 1093, 133 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thermal-generator-tiny rotate: false - xy: 1303, 398 + xy: 1351, 144 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16781,28 +16781,28 @@ block-thermal-generator-xlarge index: -1 block-thermal-pump-large rotate: false - xy: 1853, 891 + xy: 1195, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thermal-pump-medium rotate: false - xy: 1143, 234 + xy: 1505, 592 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thermal-pump-small rotate: false - xy: 1177, 560 + xy: 1119, 159 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thermal-pump-tiny rotate: false - xy: 1321, 416 + xy: 1343, 126 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16816,28 +16816,28 @@ block-thermal-pump-xlarge index: -1 block-thorium-reactor-large rotate: false - xy: 1895, 891 + xy: 1153, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thorium-reactor-medium rotate: false - xy: 939, 27 + xy: 1539, 592 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thorium-reactor-small rotate: false - xy: 1203, 560 + xy: 1145, 185 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thorium-reactor-tiny rotate: false - xy: 1339, 434 + xy: 1335, 108 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16851,35 +16851,35 @@ block-thorium-reactor-xlarge index: -1 block-thorium-wall-large rotate: false - xy: 1937, 891 + xy: 1363, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thorium-wall-large-large rotate: false - xy: 859, 849 + xy: 1321, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thorium-wall-large-medium rotate: false - xy: 973, 61 + xy: 1501, 558 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thorium-wall-large-small rotate: false - xy: 1229, 560 + xy: 1171, 211 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thorium-wall-large-tiny rotate: false - xy: 1357, 452 + xy: 1335, 90 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16893,21 +16893,21 @@ block-thorium-wall-large-xlarge index: -1 block-thorium-wall-medium rotate: false - xy: 1007, 95 + xy: 1535, 558 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thorium-wall-small rotate: false - xy: 1255, 560 + xy: 1197, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thorium-wall-tiny rotate: false - xy: 1375, 470 + xy: 1335, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16921,28 +16921,28 @@ block-thorium-wall-xlarge index: -1 block-thruster-large rotate: false - xy: 859, 807 + xy: 1279, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thruster-medium rotate: false - xy: 1041, 129 + xy: 435, 6 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thruster-small rotate: false - xy: 1281, 560 + xy: 1223, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thruster-tiny rotate: false - xy: 1393, 488 + xy: 1335, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16956,28 +16956,28 @@ block-thruster-xlarge index: -1 block-titanium-conveyor-large rotate: false - xy: 901, 849 + xy: 1237, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-titanium-conveyor-medium rotate: false - xy: 1075, 132 + xy: 469, 6 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-titanium-conveyor-small rotate: false - xy: 1307, 560 + xy: 1249, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-titanium-conveyor-tiny rotate: false - xy: 1411, 506 + xy: 1335, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -16991,35 +16991,35 @@ block-titanium-conveyor-xlarge index: -1 block-titanium-wall-large rotate: false - xy: 859, 765 + xy: 1195, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-titanium-wall-large-large rotate: false - xy: 943, 849 + xy: 1405, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-titanium-wall-large-medium rotate: false - xy: 1109, 166 + xy: 1979, 865 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-titanium-wall-large-small rotate: false - xy: 1333, 560 + xy: 1301, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-titanium-wall-large-tiny rotate: false - xy: 1213, 290 + xy: 1335, 18 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -17033,21 +17033,21 @@ block-titanium-wall-large-xlarge index: -1 block-titanium-wall-medium rotate: false - xy: 1143, 200 + xy: 2013, 873 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-titanium-wall-small rotate: false - xy: 1359, 560 + xy: 1015, 29 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-titanium-wall-tiny rotate: false - xy: 1231, 308 + xy: 1385, 183 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -17061,28 +17061,28 @@ block-titanium-wall-xlarge index: -1 block-turbine-generator-large rotate: false - xy: 901, 807 + xy: 1363, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-turbine-generator-medium rotate: false - xy: 973, 27 + xy: 1971, 831 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-turbine-generator-small rotate: false - xy: 1385, 560 + xy: 1041, 55 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-turbine-generator-tiny rotate: false - xy: 1249, 326 + xy: 1377, 165 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -17096,28 +17096,28 @@ block-turbine-generator-xlarge index: -1 block-underflow-gate-large rotate: false - xy: 859, 723 + xy: 1321, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-underflow-gate-medium rotate: false - xy: 1007, 61 + xy: 1607, 702 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-underflow-gate-small rotate: false - xy: 1411, 560 + xy: 1067, 81 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-underflow-gate-tiny rotate: false - xy: 1267, 344 + xy: 1369, 144 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -17131,28 +17131,28 @@ block-underflow-gate-xlarge index: -1 block-unloader-large rotate: false - xy: 985, 849 + xy: 1279, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-unloader-medium rotate: false - xy: 1041, 95 + xy: 1611, 668 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-unloader-small rotate: false - xy: 1437, 560 + xy: 1093, 107 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-unloader-tiny rotate: false - xy: 1285, 362 + xy: 1361, 126 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -17166,28 +17166,28 @@ block-unloader-xlarge index: -1 block-vault-large rotate: false - xy: 943, 807 + xy: 1237, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-vault-medium rotate: false - xy: 1075, 98 + xy: 1611, 634 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-vault-small rotate: false - xy: 1463, 560 + xy: 1119, 133 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-vault-tiny rotate: false - xy: 1303, 380 + xy: 1353, 108 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -17201,28 +17201,28 @@ block-vault-xlarge index: -1 block-water-extractor-large rotate: false - xy: 901, 765 + xy: 1447, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-water-extractor-medium rotate: false - xy: 1109, 132 + xy: 1577, 600 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-water-extractor-small rotate: false - xy: 1489, 560 + xy: 1145, 159 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-water-extractor-tiny rotate: false - xy: 1321, 398 + xy: 1353, 90 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -17236,28 +17236,28 @@ block-water-extractor-xlarge index: -1 block-water-large rotate: false - xy: 859, 681 + xy: 1405, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-water-medium rotate: false - xy: 1143, 166 + xy: 1611, 600 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-water-small rotate: false - xy: 1515, 560 + xy: 1171, 185 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-water-tiny rotate: false - xy: 1339, 416 + xy: 1353, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -17271,28 +17271,28 @@ block-water-xlarge index: -1 block-wave-large rotate: false - xy: 1027, 849 + xy: 1363, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-wave-medium rotate: false - xy: 1007, 27 + xy: 2013, 839 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-wave-small rotate: false - xy: 1535, 659 + xy: 1197, 211 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-wave-tiny rotate: false - xy: 1357, 434 + xy: 1353, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -17306,28 +17306,28 @@ block-wave-xlarge index: -1 block-white-tree-dead-large rotate: false - xy: 985, 807 + xy: 1321, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-white-tree-dead-medium rotate: false - xy: 1041, 61 + xy: 1493, 524 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-white-tree-dead-small rotate: false - xy: 1535, 633 + xy: 1223, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-white-tree-dead-tiny rotate: false - xy: 1375, 452 + xy: 1353, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -17341,28 +17341,28 @@ block-white-tree-dead-xlarge index: -1 block-white-tree-large rotate: false - xy: 943, 765 + xy: 1279, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-white-tree-medium rotate: false - xy: 1075, 64 + xy: 1527, 524 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-white-tree-small rotate: false - xy: 1535, 607 + xy: 1249, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-white-tree-tiny rotate: false - xy: 1393, 470 + xy: 1353, 18 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -17376,7 +17376,7 @@ block-white-tree-xlarge index: -1 button rotate: false - xy: 1297, 862 + xy: 881, 623 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17384,7 +17384,7 @@ button index: -1 button-disabled rotate: false - xy: 743, 587 + xy: 771, 1 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17392,7 +17392,7 @@ button-disabled index: -1 button-down rotate: false - xy: 519, 1 + xy: 809, 1 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17400,7 +17400,7 @@ button-down index: -1 button-edge-1 rotate: false - xy: 557, 1 + xy: 847, 1 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17408,7 +17408,7 @@ button-edge-1 index: -1 button-edge-2 rotate: false - xy: 595, 1 + xy: 1489, 694 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17416,7 +17416,7 @@ button-edge-2 index: -1 button-edge-3 rotate: false - xy: 901, 736 + xy: 1699, 862 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17424,7 +17424,7 @@ button-edge-3 index: -1 button-edge-4 rotate: false - xy: 939, 736 + xy: 1657, 820 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17432,7 +17432,7 @@ button-edge-4 index: -1 button-edge-over-4 rotate: false - xy: 1069, 862 + xy: 1615, 778 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17440,7 +17440,7 @@ button-edge-over-4 index: -1 button-over rotate: false - xy: 1027, 820 + xy: 1573, 736 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17448,7 +17448,7 @@ button-over index: -1 button-red rotate: false - xy: 985, 778 + xy: 1527, 694 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17456,7 +17456,7 @@ button-red index: -1 button-right rotate: false - xy: 1107, 862 + xy: 1813, 862 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17464,7 +17464,7 @@ button-right index: -1 button-right-down rotate: false - xy: 901, 707 + xy: 1737, 862 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17472,7 +17472,7 @@ button-right-down index: -1 button-right-over rotate: false - xy: 939, 707 + xy: 1775, 862 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17480,7 +17480,7 @@ button-right-over index: -1 button-select rotate: false - xy: 1561, 659 + xy: 1275, 289 size: 24, 24 split: 4, 4, 4, 4 orig: 24, 24 @@ -17488,7 +17488,7 @@ button-select index: -1 button-square rotate: false - xy: 1221, 862 + xy: 1927, 862 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17496,7 +17496,7 @@ button-square index: -1 button-square-down rotate: false - xy: 1145, 862 + xy: 1851, 862 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17504,7 +17504,7 @@ button-square-down index: -1 button-square-over rotate: false - xy: 1183, 862 + xy: 1889, 862 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17512,7 +17512,7 @@ button-square-over index: -1 button-trans rotate: false - xy: 1259, 862 + xy: 881, 652 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17520,42 +17520,42 @@ button-trans index: -1 check-disabled rotate: false - xy: 1109, 98 + xy: 1489, 490 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-off rotate: false - xy: 1143, 132 + xy: 1489, 456 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on rotate: false - xy: 1041, 27 + xy: 1523, 490 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on-disabled rotate: false - xy: 1075, 30 + xy: 1489, 422 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on-over rotate: false - xy: 1109, 64 + xy: 1523, 456 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-over rotate: false - xy: 1143, 98 + xy: 1489, 388 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -17576,7 +17576,7 @@ crater index: -1 cursor rotate: false - xy: 1987, 833 + xy: 877, 452 size: 4, 4 orig: 4, 4 offset: 0, 0 @@ -17590,7 +17590,7 @@ discord-banner index: -1 flat-down-base rotate: false - xy: 1335, 862 + xy: 919, 652 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17605,7 +17605,7 @@ info-banner index: -1 inventory rotate: false - xy: 1561, 617 + xy: 1327, 299 size: 24, 40 split: 10, 10, 10, 14 orig: 24, 40 @@ -17613,140 +17613,140 @@ inventory index: -1 item-blast-compound-icon rotate: false - xy: 1109, 30 + xy: 1523, 422 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-coal-icon rotate: false - xy: 1143, 64 + xy: 1489, 354 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-copper-icon rotate: false - xy: 1143, 30 + xy: 1523, 388 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-graphite-icon rotate: false - xy: 1061, 786 + xy: 1523, 354 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-lead-icon rotate: false - xy: 1053, 752 + xy: 1489, 320 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-metaglass-icon rotate: false - xy: 1095, 794 + xy: 1523, 320 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-phase-fabric-icon rotate: false - xy: 1129, 794 + xy: 1561, 524 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-plastanium-icon rotate: false - xy: 1163, 794 + xy: 1557, 490 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-pyratite-icon rotate: false - xy: 1197, 794 + xy: 1557, 456 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-sand-icon rotate: false - xy: 1231, 794 + xy: 1557, 422 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-scrap-icon rotate: false - xy: 1265, 794 + xy: 1557, 388 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-silicon-icon rotate: false - xy: 1299, 794 + xy: 1557, 354 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-spore-pod-icon rotate: false - xy: 1333, 794 + xy: 1557, 320 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-surge-alloy-icon rotate: false - xy: 1367, 794 + xy: 1569, 558 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-thorium-icon rotate: false - xy: 1401, 794 + xy: 1603, 566 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-titanium-icon rotate: false - xy: 1435, 794 + xy: 1595, 524 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-cryofluid-icon rotate: false - xy: 1469, 794 + xy: 1591, 490 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-oil-icon rotate: false - xy: 1503, 794 + xy: 1591, 456 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-slag-icon rotate: false - xy: 1537, 794 + xy: 1591, 422 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-water-icon rotate: false - xy: 1571, 789 + xy: 1591, 388 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -17767,7 +17767,7 @@ nomap index: -1 pane rotate: false - xy: 1411, 862 + xy: 919, 623 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17775,7 +17775,7 @@ pane index: -1 pane-2 rotate: false - xy: 1373, 862 + xy: 881, 594 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17783,7 +17783,7 @@ pane-2 index: -1 scroll rotate: false - xy: 1177, 523 + xy: 1301, 278 size: 24, 35 split: 10, 10, 6, 5 orig: 24, 35 @@ -17806,63 +17806,63 @@ scroll-knob-horizontal-black index: -1 scroll-knob-vertical-black rotate: false - xy: 1573, 695 + xy: 1353, 299 size: 24, 40 orig: 24, 40 offset: 0, 0 index: -1 scroll-knob-vertical-thin rotate: false - xy: 1213, 248 + xy: 1425, 87 size: 12, 40 orig: 12, 40 offset: 0, 0 index: -1 selection rotate: false - xy: 821, 975 + xy: 309, 866 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 slider rotate: false - xy: 837, 398 + xy: 1675, 742 size: 1, 8 orig: 1, 8 offset: 0, 0 index: -1 slider-knob rotate: false - xy: 1605, 783 + xy: 1831, 788 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-knob-down rotate: false - xy: 1636, 783 + xy: 1862, 788 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-knob-over rotate: false - xy: 1667, 783 + xy: 1893, 788 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-vertical rotate: false - xy: 309, 866 + xy: 1327, 252 size: 8, 1 orig: 8, 1 offset: 0, 0 index: -1 underline rotate: false - xy: 1563, 862 + xy: 995, 652 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17870,7 +17870,7 @@ underline index: -1 underline-2 rotate: false - xy: 1449, 862 + xy: 957, 652 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17878,7 +17878,7 @@ underline-2 index: -1 underline-disabled rotate: false - xy: 1487, 862 + xy: 919, 594 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17886,12 +17886,852 @@ underline-disabled index: -1 underline-red rotate: false - xy: 1525, 862 + xy: 957, 623 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 offset: 0, 0 index: -1 +unit-alpha-large + rotate: false + xy: 1489, 849 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-alpha-medium + rotate: false + xy: 1591, 354 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-alpha-small + rotate: false + xy: 1275, 263 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-alpha-tiny + rotate: false + xy: 1395, 165 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-alpha-xlarge + rotate: false + xy: 351, 216 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-antumbra-large + rotate: false + xy: 1447, 807 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-antumbra-medium + rotate: false + xy: 1591, 320 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-antumbra-small + rotate: false + xy: 1041, 29 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-antumbra-tiny + rotate: false + xy: 1387, 147 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-antumbra-xlarge + rotate: false + xy: 401, 266 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-arkyid-large + rotate: false + xy: 1405, 765 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-arkyid-medium + rotate: false + xy: 1637, 566 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-arkyid-small + rotate: false + xy: 1067, 55 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-arkyid-tiny + rotate: false + xy: 1379, 126 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-arkyid-xlarge + rotate: false + xy: 451, 316 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-atrax-large + rotate: false + xy: 1363, 723 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-atrax-medium + rotate: false + xy: 1629, 532 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-atrax-small + rotate: false + xy: 1093, 81 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-atrax-tiny + rotate: false + xy: 1371, 108 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-atrax-xlarge + rotate: false + xy: 501, 366 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-beta-large + rotate: false + xy: 1321, 681 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-beta-medium + rotate: false + xy: 1629, 498 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-beta-small + rotate: false + xy: 1119, 107 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-beta-tiny + rotate: false + xy: 1371, 90 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-beta-xlarge + rotate: false + xy: 551, 416 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-bryde-large + rotate: false + xy: 1531, 849 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-bryde-medium + rotate: false + xy: 1625, 464 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-bryde-small + rotate: false + xy: 1145, 133 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-bryde-tiny + rotate: false + xy: 1371, 72 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-bryde-xlarge + rotate: false + xy: 601, 466 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-crawler-large + rotate: false + xy: 1489, 807 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-crawler-medium + rotate: false + xy: 1625, 430 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-crawler-small + rotate: false + xy: 1171, 159 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-crawler-tiny + rotate: false + xy: 1371, 54 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-crawler-xlarge + rotate: false + xy: 651, 516 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-dagger-large + rotate: false + xy: 1447, 765 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-dagger-medium + rotate: false + xy: 1625, 396 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-dagger-small + rotate: false + xy: 1197, 185 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-dagger-tiny + rotate: false + xy: 1371, 36 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-dagger-xlarge + rotate: false + xy: 701, 566 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-eclipse-large + rotate: false + xy: 1405, 723 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-eclipse-medium + rotate: false + xy: 1625, 362 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-eclipse-small + rotate: false + xy: 1223, 211 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-eclipse-tiny + rotate: false + xy: 1371, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-eclipse-xlarge + rotate: false + xy: 351, 166 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-flare-large + rotate: false + xy: 1363, 681 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-flare-medium + rotate: false + xy: 1625, 328 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-flare-small + rotate: false + xy: 1249, 237 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-flare-tiny + rotate: false + xy: 1405, 147 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-flare-xlarge + rotate: false + xy: 401, 216 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-fortress-large + rotate: false + xy: 1573, 849 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-fortress-medium + rotate: false + xy: 1663, 532 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-fortress-small + rotate: false + xy: 1379, 315 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-fortress-tiny + rotate: false + xy: 1397, 129 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-fortress-xlarge + rotate: false + xy: 451, 266 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-gamma-large + rotate: false + xy: 1531, 807 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-gamma-medium + rotate: false + xy: 1663, 498 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-gamma-small + rotate: false + xy: 1067, 29 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-gamma-tiny + rotate: false + xy: 1389, 108 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-gamma-xlarge + rotate: false + xy: 501, 316 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-horizon-large + rotate: false + xy: 1489, 765 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-horizon-medium + rotate: false + xy: 1659, 464 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-horizon-small + rotate: false + xy: 1093, 55 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-horizon-tiny + rotate: false + xy: 1389, 90 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-horizon-xlarge + rotate: false + xy: 551, 366 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-mace-large + rotate: false + xy: 1447, 723 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-mace-medium + rotate: false + xy: 1659, 430 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-mace-small + rotate: false + xy: 1119, 81 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-mace-tiny + rotate: false + xy: 1389, 72 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-mace-xlarge + rotate: false + xy: 601, 416 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-mega-large + rotate: false + xy: 1405, 681 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-mega-medium + rotate: false + xy: 1659, 396 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-mega-small + rotate: false + xy: 1145, 107 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-mega-tiny + rotate: false + xy: 1389, 54 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-mega-xlarge + rotate: false + xy: 651, 466 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-minke-large + rotate: false + xy: 1615, 849 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-minke-medium + rotate: false + xy: 1659, 362 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-minke-small + rotate: false + xy: 1171, 133 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-minke-tiny + rotate: false + xy: 1389, 36 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-minke-xlarge + rotate: false + xy: 701, 516 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-mono-large + rotate: false + xy: 1573, 807 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-mono-medium + rotate: false + xy: 1659, 328 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-mono-small + rotate: false + xy: 1197, 159 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-mono-tiny + rotate: false + xy: 1389, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-mono-xlarge + rotate: false + xy: 351, 116 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-nova-large + rotate: false + xy: 1531, 765 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-nova-medium + rotate: false + xy: 1625, 294 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-nova-small + rotate: false + xy: 1223, 185 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-nova-tiny + rotate: false + xy: 1415, 129 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-nova-xlarge + rotate: false + xy: 401, 166 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-poly-large + rotate: false + xy: 1489, 723 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-poly-medium + rotate: false + xy: 1659, 294 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-poly-small + rotate: false + xy: 1249, 211 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-poly-tiny + rotate: false + xy: 1407, 111 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-poly-xlarge + rotate: false + xy: 451, 216 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-pulsar-large + rotate: false + xy: 1447, 681 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-pulsar-medium + rotate: false + xy: 1653, 752 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-pulsar-small + rotate: false + xy: 1275, 237 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-pulsar-tiny + rotate: false + xy: 1407, 93 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-pulsar-xlarge + rotate: false + xy: 501, 266 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-quasar-large + rotate: false + xy: 1657, 849 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-quasar-medium + rotate: false + xy: 1695, 794 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-quasar-small + rotate: false + xy: 1301, 252 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-quasar-tiny + rotate: false + xy: 1407, 75 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-quasar-xlarge + rotate: false + xy: 551, 316 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-risse-large + rotate: false + xy: 1615, 807 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-risse-medium + rotate: false + xy: 1729, 794 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-risse-small + rotate: false + xy: 1327, 273 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-risse-tiny + rotate: false + xy: 1407, 57 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-risse-xlarge + rotate: false + xy: 601, 366 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-spiroct-large + rotate: false + xy: 1573, 765 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-spiroct-medium + rotate: false + xy: 1763, 794 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-spiroct-small + rotate: false + xy: 1405, 315 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-spiroct-tiny + rotate: false + xy: 1407, 39 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-spiroct-xlarge + rotate: false + xy: 651, 416 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-zenith-large + rotate: false + xy: 1531, 723 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-zenith-medium + rotate: false + xy: 1797, 794 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-zenith-small + rotate: false + xy: 1093, 29 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-zenith-tiny + rotate: false + xy: 1407, 21 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-zenith-xlarge + rotate: false + xy: 701, 466 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 whiteui rotate: false xy: 821, 928 @@ -17901,7 +18741,7 @@ whiteui index: -1 window-empty rotate: false - xy: 1756, 760 + xy: 1924, 765 size: 27, 61 split: 4, 4, 2, 2 orig: 27, 61 diff --git a/core/assets/sprites/fallback/sprites.png b/core/assets/sprites/fallback/sprites.png index 9b0e0dced6..0ac9ae0e72 100644 Binary files a/core/assets/sprites/fallback/sprites.png and b/core/assets/sprites/fallback/sprites.png differ diff --git a/core/assets/sprites/fallback/sprites2.png b/core/assets/sprites/fallback/sprites2.png index 13d896f8bc..0d87820cf5 100644 Binary files a/core/assets/sprites/fallback/sprites2.png and b/core/assets/sprites/fallback/sprites2.png differ diff --git a/core/assets/sprites/fallback/sprites3.png b/core/assets/sprites/fallback/sprites3.png index 16d451396d..d7621ba8ac 100644 Binary files a/core/assets/sprites/fallback/sprites3.png and b/core/assets/sprites/fallback/sprites3.png differ diff --git a/core/assets/sprites/fallback/sprites4.png b/core/assets/sprites/fallback/sprites4.png index dff65b2e46..340afcfeb1 100644 Binary files a/core/assets/sprites/fallback/sprites4.png and b/core/assets/sprites/fallback/sprites4.png differ diff --git a/core/assets/sprites/fallback/sprites5.png b/core/assets/sprites/fallback/sprites5.png index 04a20e93af..69ee2ace6b 100644 Binary files a/core/assets/sprites/fallback/sprites5.png and b/core/assets/sprites/fallback/sprites5.png differ diff --git a/core/assets/sprites/fallback/sprites6.png b/core/assets/sprites/fallback/sprites6.png index 2970060990..95d69da677 100644 Binary files a/core/assets/sprites/fallback/sprites6.png and b/core/assets/sprites/fallback/sprites6.png differ diff --git a/core/assets/sprites/fallback/sprites7.png b/core/assets/sprites/fallback/sprites7.png index 7a76bfa2ad..449c7250a1 100644 Binary files a/core/assets/sprites/fallback/sprites7.png and b/core/assets/sprites/fallback/sprites7.png differ diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index fa0a3a3031..d79c126414 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -10201,14 +10201,14 @@ filter: nearest,nearest repeat: none alpha-bg rotate: false - xy: 1, 13 + xy: 1, 15 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 bar rotate: false - xy: 3827, 278 + xy: 3793, 196 size: 27, 36 split: 9, 9, 9, 9 orig: 27, 36 @@ -10216,7 +10216,7 @@ bar index: -1 bar-top rotate: false - xy: 3798, 278 + xy: 3764, 196 size: 27, 36 split: 9, 10, 9, 10 orig: 27, 36 @@ -10224,7147 +10224,7147 @@ bar-top index: -1 block-additive-reconstructor-large rotate: false - xy: 2859, 418 + xy: 131, 3 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-additive-reconstructor-medium rotate: false - xy: 821, 429 + xy: 821, 431 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-additive-reconstructor-small rotate: false - xy: 781, 175 + xy: 781, 177 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-additive-reconstructor-tiny rotate: false - xy: 309, 183 + xy: 4079, 274 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-additive-reconstructor-xlarge rotate: false - xy: 131, 93 + xy: 131, 95 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-air-factory-large rotate: false - xy: 2901, 418 + xy: 173, 3 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-air-factory-medium rotate: false - xy: 2583, 305 + xy: 2797, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-air-factory-small rotate: false - xy: 3856, 290 + xy: 3822, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-air-factory-tiny rotate: false - xy: 257, 25 + xy: 4079, 256 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-air-factory-xlarge rotate: false - xy: 771, 413 + xy: 771, 415 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-alloy-smelter-large rotate: false - xy: 2943, 418 + xy: 215, 3 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-alloy-smelter-medium rotate: false - xy: 2621, 334 + xy: 2831, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-alloy-smelter-small rotate: false - xy: 3882, 290 + xy: 915, 79 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-alloy-smelter-tiny rotate: false - xy: 3681, 264 + xy: 257, 27 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-alloy-smelter-xlarge rotate: false - xy: 259, 304 + xy: 259, 306 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-arc-large rotate: false - xy: 2985, 418 + xy: 845, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-arc-medium rotate: false - xy: 2655, 334 + xy: 2865, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-arc-small rotate: false - xy: 3908, 290 + xy: 944, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-arc-tiny rotate: false - xy: 3833, 260 + xy: 1331, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-arc-xlarge rotate: false - xy: 131, 43 + xy: 131, 45 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-armored-conveyor-large rotate: false - xy: 3027, 418 + xy: 887, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-armored-conveyor-medium rotate: false - xy: 2689, 334 + xy: 2899, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-armored-conveyor-small rotate: false - xy: 3934, 290 + xy: 3848, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-armored-conveyor-tiny rotate: false - xy: 1305, 18 + xy: 309, 165 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-armored-conveyor-xlarge rotate: false - xy: 181, 93 + xy: 181, 95 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-battery-large rotate: false - xy: 3069, 418 + xy: 929, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-battery-large-large rotate: false - xy: 3111, 418 + xy: 971, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-battery-large-medium rotate: false - xy: 2723, 334 + xy: 2933, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-battery-large-small rotate: false - xy: 3960, 290 + xy: 915, 53 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-battery-large-tiny rotate: false - xy: 1331, 44 + xy: 257, 9 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-battery-large-xlarge rotate: false - xy: 259, 254 + xy: 259, 256 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-battery-medium rotate: false - xy: 2757, 334 + xy: 2967, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-battery-small rotate: false - xy: 3986, 290 + xy: 944, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-battery-tiny rotate: false - xy: 1357, 70 + xy: 1331, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-battery-xlarge rotate: false - xy: 181, 43 + xy: 181, 45 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-blast-drill-large rotate: false - xy: 3153, 418 + xy: 1013, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-blast-drill-medium rotate: false - xy: 2791, 334 + xy: 3001, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-blast-drill-small rotate: false - xy: 4012, 290 + xy: 970, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-blast-drill-tiny rotate: false - xy: 1487, 148 + xy: 1349, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-blast-drill-xlarge rotate: false - xy: 259, 204 + xy: 259, 206 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-blast-mixer-large rotate: false - xy: 3195, 418 + xy: 1055, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-blast-mixer-medium rotate: false - xy: 2825, 334 + xy: 3035, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-blast-mixer-small rotate: false - xy: 4051, 337 + xy: 3874, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-blast-mixer-tiny rotate: false - xy: 1383, 96 + xy: 1349, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-blast-mixer-xlarge rotate: false - xy: 259, 154 + xy: 259, 156 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-block-forge-large rotate: false - xy: 3237, 418 + xy: 1097, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-block-forge-medium rotate: false - xy: 2861, 384 + xy: 3069, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-block-forge-small rotate: false - xy: 4049, 311 + xy: 915, 27 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-block-forge-tiny rotate: false - xy: 1435, 106 + xy: 1367, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-block-forge-xlarge rotate: false - xy: 857, 460 + xy: 857, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-block-loader-large rotate: false - xy: 3279, 418 + xy: 1139, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-block-loader-medium rotate: false - xy: 2895, 384 + xy: 3103, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-block-loader-small rotate: false - xy: 3856, 264 + xy: 970, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-block-loader-tiny rotate: false - xy: 309, 165 + xy: 1367, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-block-loader-xlarge rotate: false - xy: 907, 460 + xy: 907, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-block-unloader-large rotate: false - xy: 3321, 418 + xy: 1181, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-block-unloader-medium rotate: false - xy: 2929, 384 + xy: 3137, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-block-unloader-small rotate: false - xy: 3882, 264 + xy: 996, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-block-unloader-tiny rotate: false - xy: 257, 7 + xy: 1385, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-block-unloader-xlarge rotate: false - xy: 957, 460 + xy: 957, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-bridge-conduit-large rotate: false - xy: 3363, 418 + xy: 1223, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-bridge-conduit-medium rotate: false - xy: 2963, 384 + xy: 3171, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-bridge-conduit-small rotate: false - xy: 3908, 264 + xy: 3900, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-bridge-conduit-tiny rotate: false - xy: 3833, 242 + xy: 1385, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-bridge-conduit-xlarge rotate: false - xy: 1007, 460 + xy: 1007, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-bridge-conveyor-large rotate: false - xy: 3405, 418 + xy: 1265, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-bridge-conveyor-medium rotate: false - xy: 2997, 384 + xy: 3205, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-bridge-conveyor-small rotate: false - xy: 3934, 264 + xy: 996, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-bridge-conveyor-tiny rotate: false - xy: 1487, 130 + xy: 1403, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-bridge-conveyor-xlarge rotate: false - xy: 1057, 460 + xy: 1057, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-char-large rotate: false - xy: 3447, 418 + xy: 1307, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-char-medium rotate: false - xy: 3031, 384 + xy: 3239, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-char-small rotate: false - xy: 3960, 264 + xy: 1022, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-char-tiny rotate: false - xy: 1505, 148 + xy: 1403, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-char-xlarge rotate: false - xy: 1107, 460 + xy: 1107, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-cliff-large rotate: false - xy: 3489, 418 + xy: 1349, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cliff-medium rotate: false - xy: 3065, 384 + xy: 3273, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cliff-small rotate: false - xy: 3986, 264 + xy: 3926, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cliff-tiny rotate: false - xy: 1453, 106 + xy: 1421, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-cliff-xlarge rotate: false - xy: 1157, 460 + xy: 1157, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-cliffs-large rotate: false - xy: 3531, 418 + xy: 1391, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cliffs-medium rotate: false - xy: 3099, 384 + xy: 3307, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cliffs-small rotate: false - xy: 4012, 264 + xy: 1022, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cliffs-tiny rotate: false - xy: 1505, 130 + xy: 1421, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-cliffs-xlarge rotate: false - xy: 1207, 460 + xy: 1207, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-coal-centrifuge-large rotate: false - xy: 3573, 418 + xy: 1433, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-coal-centrifuge-medium rotate: false - xy: 3133, 384 + xy: 3341, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-coal-centrifuge-small rotate: false - xy: 4038, 285 + xy: 1048, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-coal-centrifuge-tiny rotate: false - xy: 1523, 148 + xy: 1439, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-coal-centrifuge-xlarge rotate: false - xy: 1257, 460 + xy: 1257, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-combustion-generator-large rotate: false - xy: 3615, 418 + xy: 1475, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-combustion-generator-medium rotate: false - xy: 3167, 384 + xy: 3375, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-combustion-generator-small rotate: false - xy: 4038, 259 + xy: 3952, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-combustion-generator-tiny rotate: false - xy: 1523, 130 + xy: 1439, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-combustion-generator-xlarge rotate: false - xy: 1307, 460 + xy: 1307, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-conduit-large rotate: false - xy: 3657, 418 + xy: 1517, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-conduit-medium rotate: false - xy: 3201, 384 + xy: 3409, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-conduit-small rotate: false - xy: 4064, 285 + xy: 1048, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-conduit-tiny rotate: false - xy: 1541, 148 + xy: 1457, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-conduit-xlarge rotate: false - xy: 1357, 460 + xy: 1357, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-container-large rotate: false - xy: 3699, 418 + xy: 1559, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-container-medium rotate: false - xy: 3235, 384 + xy: 3443, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-container-small rotate: false - xy: 4064, 259 + xy: 1074, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-container-tiny rotate: false - xy: 1541, 130 + xy: 1457, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-container-xlarge rotate: false - xy: 1407, 460 + xy: 1407, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-conveyor-large rotate: false - xy: 3741, 418 + xy: 1601, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-conveyor-medium rotate: false - xy: 3269, 384 + xy: 3477, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-conveyor-small rotate: false - xy: 2849, 256 + xy: 3978, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-conveyor-tiny rotate: false - xy: 1559, 148 + xy: 1475, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-conveyor-xlarge rotate: false - xy: 1457, 460 + xy: 1457, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-copper-wall-large rotate: false - xy: 3783, 418 + xy: 1643, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-copper-wall-large-large rotate: false - xy: 3825, 418 + xy: 1685, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-copper-wall-large-medium rotate: false - xy: 3303, 384 + xy: 3511, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-copper-wall-large-small rotate: false - xy: 2875, 256 + xy: 1074, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-copper-wall-large-tiny rotate: false - xy: 1559, 130 + xy: 1475, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-copper-wall-large-xlarge rotate: false - xy: 1507, 460 + xy: 1507, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-copper-wall-medium rotate: false - xy: 3337, 384 + xy: 3545, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-copper-wall-small rotate: false - xy: 2901, 256 + xy: 1100, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-copper-wall-tiny rotate: false - xy: 1577, 148 + xy: 1493, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-copper-wall-xlarge rotate: false - xy: 1557, 460 + xy: 1557, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-core-foundation-large rotate: false - xy: 3867, 418 + xy: 1727, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-core-foundation-medium rotate: false - xy: 3371, 384 + xy: 3579, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-core-foundation-small rotate: false - xy: 2927, 256 + xy: 4004, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-core-foundation-tiny rotate: false - xy: 1577, 130 + xy: 1493, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-core-foundation-xlarge rotate: false - xy: 1607, 460 + xy: 1607, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-core-nucleus-large rotate: false - xy: 3909, 418 + xy: 1769, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-core-nucleus-medium rotate: false - xy: 3405, 384 + xy: 3613, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-core-nucleus-small rotate: false - xy: 2953, 256 + xy: 1100, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-core-nucleus-tiny rotate: false - xy: 1595, 148 + xy: 1511, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-core-nucleus-xlarge rotate: false - xy: 1657, 460 + xy: 1657, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-core-shard-large rotate: false - xy: 3951, 418 + xy: 1811, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-core-shard-medium rotate: false - xy: 3439, 384 + xy: 3647, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-core-shard-small rotate: false - xy: 2979, 256 + xy: 1126, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-core-shard-tiny rotate: false - xy: 1595, 130 + xy: 1511, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-core-shard-xlarge rotate: false - xy: 1707, 460 + xy: 1707, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-craters-large rotate: false - xy: 3993, 418 + xy: 1853, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-craters-medium rotate: false - xy: 3473, 384 + xy: 3681, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-craters-small rotate: false - xy: 3005, 256 + xy: 1126, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-craters-tiny rotate: false - xy: 1613, 148 + xy: 1529, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-craters-xlarge rotate: false - xy: 1757, 460 + xy: 1757, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-cryofluidmixer-large rotate: false - xy: 131, 1 + xy: 1895, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cryofluidmixer-medium rotate: false - xy: 3507, 384 + xy: 3715, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cryofluidmixer-small rotate: false - xy: 3031, 256 + xy: 1152, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cryofluidmixer-tiny rotate: false - xy: 1613, 130 + xy: 1529, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-cryofluidmixer-xlarge rotate: false - xy: 1807, 460 + xy: 1807, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-cultivator-large rotate: false - xy: 173, 1 + xy: 1937, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cultivator-medium rotate: false - xy: 3541, 384 + xy: 3749, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cultivator-small rotate: false - xy: 3057, 256 + xy: 1152, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cultivator-tiny rotate: false - xy: 1631, 148 + xy: 1547, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-cultivator-xlarge rotate: false - xy: 1857, 460 + xy: 1857, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-cyclone-large rotate: false - xy: 215, 1 + xy: 1979, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cyclone-medium rotate: false - xy: 3575, 384 + xy: 3783, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cyclone-small rotate: false - xy: 3083, 256 + xy: 1178, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cyclone-tiny rotate: false - xy: 1631, 130 + xy: 1547, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-cyclone-xlarge rotate: false - xy: 1907, 460 + xy: 1907, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-dark-metal-large rotate: false - xy: 845, 368 + xy: 2021, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-metal-medium rotate: false - xy: 3609, 384 + xy: 3817, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-metal-small rotate: false - xy: 3109, 256 + xy: 1178, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-metal-tiny rotate: false - xy: 1649, 148 + xy: 1565, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-dark-metal-xlarge rotate: false - xy: 1957, 460 + xy: 1957, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-dark-panel-1-large rotate: false - xy: 887, 368 + xy: 2063, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-1-medium rotate: false - xy: 3643, 384 + xy: 3851, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-1-small rotate: false - xy: 3135, 256 + xy: 1204, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-1-tiny rotate: false - xy: 1649, 130 + xy: 1565, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-dark-panel-1-xlarge rotate: false - xy: 2007, 460 + xy: 2007, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-dark-panel-2-large rotate: false - xy: 929, 368 + xy: 2105, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-2-medium rotate: false - xy: 3677, 384 + xy: 3885, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-2-small rotate: false - xy: 3161, 256 + xy: 1204, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-2-tiny rotate: false - xy: 1667, 148 + xy: 1583, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-dark-panel-2-xlarge rotate: false - xy: 2057, 460 + xy: 2057, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-dark-panel-3-large rotate: false - xy: 971, 368 + xy: 2147, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-3-medium rotate: false - xy: 3711, 384 + xy: 3919, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-3-small rotate: false - xy: 3187, 256 + xy: 1230, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-3-tiny rotate: false - xy: 1667, 130 + xy: 1583, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-dark-panel-3-xlarge rotate: false - xy: 2107, 460 + xy: 2107, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-dark-panel-4-large rotate: false - xy: 1013, 368 + xy: 2189, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-4-medium rotate: false - xy: 3745, 384 + xy: 3953, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-4-small rotate: false - xy: 3213, 256 + xy: 1230, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-4-tiny rotate: false - xy: 1685, 148 + xy: 1601, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-dark-panel-4-xlarge rotate: false - xy: 2157, 460 + xy: 2157, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-dark-panel-5-large rotate: false - xy: 1055, 368 + xy: 2231, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-5-medium rotate: false - xy: 3779, 384 + xy: 3987, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-5-small rotate: false - xy: 3239, 256 + xy: 1256, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-5-tiny rotate: false - xy: 1685, 130 + xy: 1601, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-dark-panel-5-xlarge rotate: false - xy: 2207, 460 + xy: 2207, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-dark-panel-6-large rotate: false - xy: 1097, 368 + xy: 2273, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-6-medium rotate: false - xy: 3813, 384 + xy: 2455, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-6-small rotate: false - xy: 3265, 256 + xy: 1256, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-6-tiny rotate: false - xy: 1703, 148 + xy: 1619, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-dark-panel-6-xlarge rotate: false - xy: 2257, 460 + xy: 2257, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-darksand-large rotate: false - xy: 1139, 368 + xy: 2315, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-darksand-medium rotate: false - xy: 3847, 384 + xy: 2489, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-small rotate: false - xy: 3291, 256 + xy: 1282, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-darksand-tainted-water-large rotate: false - xy: 1181, 368 + xy: 2357, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-darksand-tainted-water-medium rotate: false - xy: 3881, 384 + xy: 2523, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-tainted-water-small rotate: false - xy: 3317, 256 + xy: 1282, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-darksand-tainted-water-tiny rotate: false - xy: 1703, 130 + xy: 1619, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-darksand-tainted-water-xlarge rotate: false - xy: 2307, 460 + xy: 2307, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-darksand-tiny rotate: false - xy: 1721, 148 + xy: 1637, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-darksand-water-large rotate: false - xy: 1223, 368 + xy: 2399, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-darksand-water-medium rotate: false - xy: 3915, 384 + xy: 2557, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-water-small rotate: false - xy: 3343, 256 + xy: 1308, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-darksand-water-tiny rotate: false - xy: 1721, 130 + xy: 1637, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-darksand-water-xlarge rotate: false - xy: 2357, 460 + xy: 2357, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-darksand-xlarge rotate: false - xy: 2407, 460 + xy: 2407, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-data-processor-large rotate: false - xy: 1265, 368 + xy: 2441, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-data-processor-medium rotate: false - xy: 3949, 384 + xy: 2591, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-data-processor-small rotate: false - xy: 3369, 256 + xy: 1308, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-data-processor-tiny rotate: false - xy: 1739, 148 + xy: 1655, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-data-processor-xlarge rotate: false - xy: 2457, 460 + xy: 2457, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-deepwater-large rotate: false - xy: 1307, 368 + xy: 2483, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-deepwater-medium rotate: false - xy: 3983, 384 + xy: 2625, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-deepwater-small rotate: false - xy: 3395, 256 + xy: 1334, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-deepwater-tiny rotate: false - xy: 1739, 130 + xy: 1655, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-deepwater-xlarge rotate: false - xy: 2507, 460 + xy: 2507, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-differential-generator-large rotate: false - xy: 1349, 368 + xy: 2525, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-differential-generator-medium rotate: false - xy: 938, 166 + xy: 2659, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-differential-generator-small rotate: false - xy: 3421, 256 + xy: 1334, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-differential-generator-tiny rotate: false - xy: 1757, 148 + xy: 1673, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-differential-generator-xlarge rotate: false - xy: 2557, 460 + xy: 2557, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-diode-large rotate: false - xy: 1391, 368 + xy: 2567, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-diode-medium rotate: false - xy: 972, 166 + xy: 2693, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-diode-small rotate: false - xy: 3447, 256 + xy: 1360, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-diode-tiny rotate: false - xy: 1757, 130 + xy: 1673, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-diode-xlarge rotate: false - xy: 2607, 460 + xy: 2607, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-disassembler-large rotate: false - xy: 1433, 368 + xy: 2609, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-disassembler-medium rotate: false - xy: 1006, 166 + xy: 2727, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-disassembler-small rotate: false - xy: 3473, 256 + xy: 1360, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-disassembler-tiny rotate: false - xy: 1775, 148 + xy: 1691, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-disassembler-xlarge rotate: false - xy: 2657, 460 + xy: 2657, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-distributor-large rotate: false - xy: 1475, 368 + xy: 2651, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-distributor-medium rotate: false - xy: 1040, 166 + xy: 2761, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-distributor-small rotate: false - xy: 3499, 256 + xy: 1386, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-distributor-tiny rotate: false - xy: 1775, 130 + xy: 1691, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-distributor-xlarge rotate: false - xy: 2707, 460 + xy: 2707, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-door-large rotate: false - xy: 1517, 368 + xy: 2693, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-door-large-large rotate: false - xy: 1559, 368 + xy: 2735, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-door-large-medium rotate: false - xy: 1074, 166 + xy: 938, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-door-large-small rotate: false - xy: 3525, 256 + xy: 1386, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-door-large-tiny rotate: false - xy: 1793, 148 + xy: 1709, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-door-large-xlarge rotate: false - xy: 2757, 460 + xy: 2757, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-door-medium rotate: false - xy: 1108, 166 + xy: 972, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-door-small rotate: false - xy: 3551, 256 + xy: 1412, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-door-tiny rotate: false - xy: 1793, 130 + xy: 1709, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-door-xlarge rotate: false - xy: 2807, 460 + xy: 2807, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-dunerocks-large rotate: false - xy: 1601, 368 + xy: 2777, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dunerocks-medium rotate: false - xy: 1142, 166 + xy: 1006, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dunerocks-small rotate: false - xy: 3577, 256 + xy: 1412, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dunerocks-tiny rotate: false - xy: 1811, 148 + xy: 1727, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-dunerocks-xlarge rotate: false - xy: 2857, 460 + xy: 2857, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-duo-large rotate: false - xy: 1643, 368 + xy: 2819, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-duo-medium rotate: false - xy: 1176, 166 + xy: 1040, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-duo-small rotate: false - xy: 3603, 256 + xy: 1438, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-duo-tiny rotate: false - xy: 1811, 130 + xy: 1727, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-duo-xlarge rotate: false - xy: 2907, 460 + xy: 2907, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-exponential-reconstructor-large rotate: false - xy: 1685, 368 + xy: 2861, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-exponential-reconstructor-medium rotate: false - xy: 1210, 166 + xy: 1074, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-exponential-reconstructor-small rotate: false - xy: 3629, 256 + xy: 1438, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-exponential-reconstructor-tiny rotate: false - xy: 1829, 148 + xy: 1745, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-exponential-reconstructor-xlarge rotate: false - xy: 2957, 460 + xy: 2957, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-force-projector-large rotate: false - xy: 1727, 368 + xy: 2903, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-force-projector-medium rotate: false - xy: 1244, 166 + xy: 1108, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-force-projector-small rotate: false - xy: 3655, 256 + xy: 1464, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-force-projector-tiny rotate: false - xy: 1829, 130 + xy: 1745, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-force-projector-xlarge rotate: false - xy: 3007, 460 + xy: 3007, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-fuse-large rotate: false - xy: 1769, 368 + xy: 2945, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-fuse-medium rotate: false - xy: 1278, 166 + xy: 1142, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-fuse-small rotate: false - xy: 2845, 230 + xy: 1464, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-fuse-tiny rotate: false - xy: 1847, 148 + xy: 1763, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-fuse-xlarge rotate: false - xy: 3057, 460 + xy: 3057, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-graphite-press-large rotate: false - xy: 1811, 368 + xy: 2987, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-graphite-press-medium rotate: false - xy: 1312, 166 + xy: 1176, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-graphite-press-small rotate: false - xy: 2871, 230 + xy: 1490, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-graphite-press-tiny rotate: false - xy: 1847, 130 + xy: 1763, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-graphite-press-xlarge rotate: false - xy: 3107, 460 + xy: 3107, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-grass-large rotate: false - xy: 1853, 368 + xy: 3029, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-grass-medium rotate: false - xy: 1346, 166 + xy: 1210, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-grass-small rotate: false - xy: 2897, 230 + xy: 1490, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-grass-tiny rotate: false - xy: 1865, 148 + xy: 1781, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-grass-xlarge rotate: false - xy: 3157, 460 + xy: 3157, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ground-factory-large rotate: false - xy: 1895, 368 + xy: 3071, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ground-factory-medium rotate: false - xy: 1380, 166 + xy: 1244, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ground-factory-small rotate: false - xy: 2923, 230 + xy: 1516, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ground-factory-tiny rotate: false - xy: 1865, 130 + xy: 1781, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ground-factory-xlarge rotate: false - xy: 3207, 460 + xy: 3207, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-hail-large rotate: false - xy: 1937, 368 + xy: 3113, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-hail-medium rotate: false - xy: 1414, 166 + xy: 1278, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-hail-small rotate: false - xy: 2949, 230 + xy: 1516, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-hail-tiny rotate: false - xy: 1883, 148 + xy: 1799, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-hail-xlarge rotate: false - xy: 3257, 460 + xy: 3257, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-holostone-large rotate: false - xy: 1979, 368 + xy: 3155, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-holostone-medium rotate: false - xy: 1448, 166 + xy: 1312, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-holostone-small rotate: false - xy: 2975, 230 + xy: 1542, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-holostone-tiny rotate: false - xy: 1883, 130 + xy: 1799, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-holostone-xlarge rotate: false - xy: 3307, 460 + xy: 3307, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-hotrock-large rotate: false - xy: 2021, 368 + xy: 3197, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-hotrock-medium rotate: false - xy: 1482, 166 + xy: 1346, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-hotrock-small rotate: false - xy: 3001, 230 + xy: 1542, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-hotrock-tiny rotate: false - xy: 1901, 148 + xy: 1817, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-hotrock-xlarge rotate: false - xy: 3357, 460 + xy: 3357, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ice-large rotate: false - xy: 2063, 368 + xy: 3239, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ice-medium rotate: false - xy: 1516, 166 + xy: 1380, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ice-small rotate: false - xy: 3027, 230 + xy: 1568, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ice-snow-large rotate: false - xy: 2105, 368 + xy: 3281, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ice-snow-medium rotate: false - xy: 1550, 166 + xy: 1414, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ice-snow-small rotate: false - xy: 3053, 230 + xy: 1568, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ice-snow-tiny rotate: false - xy: 1901, 130 + xy: 1817, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ice-snow-xlarge rotate: false - xy: 3407, 460 + xy: 3407, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ice-tiny rotate: false - xy: 1919, 148 + xy: 1835, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ice-xlarge rotate: false - xy: 3457, 460 + xy: 3457, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-icerocks-large rotate: false - xy: 2147, 368 + xy: 3323, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-icerocks-medium rotate: false - xy: 1584, 166 + xy: 1448, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icerocks-small rotate: false - xy: 3079, 230 + xy: 1594, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icerocks-tiny rotate: false - xy: 1919, 130 + xy: 1835, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icerocks-xlarge rotate: false - xy: 3507, 460 + xy: 3507, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ignarock-large rotate: false - xy: 2189, 368 + xy: 3365, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ignarock-medium rotate: false - xy: 1618, 166 + xy: 1482, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ignarock-small rotate: false - xy: 3105, 230 + xy: 1594, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ignarock-tiny rotate: false - xy: 1937, 148 + xy: 1853, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ignarock-xlarge rotate: false - xy: 3557, 460 + xy: 3557, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-illuminator-large rotate: false - xy: 2231, 368 + xy: 3407, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-illuminator-medium rotate: false - xy: 1652, 166 + xy: 1516, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-illuminator-small rotate: false - xy: 3131, 230 + xy: 1620, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-illuminator-tiny rotate: false - xy: 1937, 130 + xy: 1853, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-illuminator-xlarge rotate: false - xy: 3607, 460 + xy: 3607, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-impact-reactor-large rotate: false - xy: 2273, 368 + xy: 3449, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-impact-reactor-medium rotate: false - xy: 1686, 166 + xy: 1550, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-impact-reactor-small rotate: false - xy: 3157, 230 + xy: 1620, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-impact-reactor-tiny rotate: false - xy: 1955, 148 + xy: 1871, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-impact-reactor-xlarge rotate: false - xy: 3657, 460 + xy: 3657, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-incinerator-large rotate: false - xy: 2315, 368 + xy: 3491, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-incinerator-medium rotate: false - xy: 1720, 166 + xy: 1584, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-incinerator-small rotate: false - xy: 3183, 230 + xy: 1646, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-incinerator-tiny rotate: false - xy: 1955, 130 + xy: 1871, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-incinerator-xlarge rotate: false - xy: 3707, 460 + xy: 3707, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-inverted-sorter-large rotate: false - xy: 2357, 368 + xy: 3533, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-inverted-sorter-medium rotate: false - xy: 1754, 166 + xy: 1618, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-inverted-sorter-small rotate: false - xy: 3209, 230 + xy: 1646, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-inverted-sorter-tiny rotate: false - xy: 1973, 148 + xy: 1889, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-inverted-sorter-xlarge rotate: false - xy: 3757, 460 + xy: 3757, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-item-source-large rotate: false - xy: 2399, 368 + xy: 3575, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-item-source-medium rotate: false - xy: 1788, 166 + xy: 1652, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-item-source-small rotate: false - xy: 3235, 230 + xy: 1672, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-item-source-tiny rotate: false - xy: 1973, 130 + xy: 1889, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-item-source-xlarge rotate: false - xy: 3807, 460 + xy: 3807, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-item-void-large rotate: false - xy: 2441, 368 + xy: 3617, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-item-void-medium rotate: false - xy: 1822, 166 + xy: 1686, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-item-void-small rotate: false - xy: 3261, 230 + xy: 1672, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-item-void-tiny rotate: false - xy: 1991, 148 + xy: 1907, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-item-void-xlarge rotate: false - xy: 3857, 460 + xy: 3857, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-junction-large rotate: false - xy: 2483, 368 + xy: 3659, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-junction-medium rotate: false - xy: 1856, 166 + xy: 1720, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-junction-small rotate: false - xy: 3287, 230 + xy: 1698, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-junction-tiny rotate: false - xy: 1991, 130 + xy: 1907, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-junction-xlarge rotate: false - xy: 3907, 460 + xy: 3907, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-kiln-large rotate: false - xy: 2525, 368 + xy: 3701, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-kiln-medium rotate: false - xy: 1890, 166 + xy: 1754, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-kiln-small rotate: false - xy: 3313, 230 + xy: 1698, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-kiln-tiny rotate: false - xy: 2009, 148 + xy: 1925, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-kiln-xlarge rotate: false - xy: 3957, 460 + xy: 3957, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-lancer-large rotate: false - xy: 2567, 368 + xy: 3743, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-lancer-medium rotate: false - xy: 1924, 166 + xy: 1788, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-lancer-small rotate: false - xy: 3339, 230 + xy: 1724, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-lancer-tiny rotate: false - xy: 2009, 130 + xy: 1925, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-lancer-xlarge rotate: false - xy: 4007, 460 + xy: 4007, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-large-overdrive-projector-large rotate: false - xy: 2609, 368 + xy: 3785, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-large-overdrive-projector-medium rotate: false - xy: 1958, 166 + xy: 1822, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-large-overdrive-projector-small rotate: false - xy: 3365, 230 + xy: 1724, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-large-overdrive-projector-tiny rotate: false - xy: 2027, 148 + xy: 1943, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-large-overdrive-projector-xlarge rotate: false - xy: 345, 351 + xy: 345, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-laser-drill-large rotate: false - xy: 2651, 368 + xy: 3827, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-laser-drill-medium rotate: false - xy: 1992, 166 + xy: 1856, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-laser-drill-small rotate: false - xy: 3391, 230 + xy: 1750, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-laser-drill-tiny rotate: false - xy: 2027, 130 + xy: 1943, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-laser-drill-xlarge rotate: false - xy: 395, 351 + xy: 395, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-launch-pad-large rotate: false - xy: 2693, 368 + xy: 3869, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-launch-pad-large-large rotate: false - xy: 2735, 368 + xy: 3911, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-launch-pad-large-medium rotate: false - xy: 2026, 166 + xy: 1890, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-launch-pad-large-small rotate: false - xy: 3417, 230 + xy: 1750, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-launch-pad-large-tiny rotate: false - xy: 2045, 148 + xy: 1961, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-launch-pad-large-xlarge rotate: false - xy: 445, 351 + xy: 445, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-launch-pad-medium rotate: false - xy: 2060, 166 + xy: 1924, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-launch-pad-small rotate: false - xy: 3443, 230 + xy: 1776, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-launch-pad-tiny rotate: false - xy: 2045, 130 + xy: 1961, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-launch-pad-xlarge rotate: false - xy: 495, 351 + xy: 495, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-liquid-junction-large rotate: false - xy: 2777, 368 + xy: 3953, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-junction-medium rotate: false - xy: 2203, 276 + xy: 1958, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-junction-small rotate: false - xy: 3469, 230 + xy: 1776, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-junction-tiny rotate: false - xy: 2063, 148 + xy: 1979, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-liquid-junction-xlarge rotate: false - xy: 545, 351 + xy: 545, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-liquid-router-large rotate: false - xy: 2819, 368 + xy: 3995, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-router-medium rotate: false - xy: 2237, 276 + xy: 1992, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-router-small rotate: false - xy: 3495, 230 + xy: 1802, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-router-tiny rotate: false - xy: 2063, 130 + xy: 1979, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-liquid-router-xlarge rotate: false - xy: 595, 351 + xy: 595, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-liquid-source-large rotate: false - xy: 859, 326 + xy: 859, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-source-medium rotate: false - xy: 2271, 276 + xy: 2026, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-source-small rotate: false - xy: 3521, 230 + xy: 1802, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-source-tiny rotate: false - xy: 2081, 148 + xy: 1997, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-liquid-source-xlarge rotate: false - xy: 645, 351 + xy: 645, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-liquid-tank-large rotate: false - xy: 859, 284 + xy: 859, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-tank-medium rotate: false - xy: 2305, 276 + xy: 2060, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-tank-small rotate: false - xy: 3547, 230 + xy: 1828, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-tank-tiny rotate: false - xy: 2081, 130 + xy: 1997, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-liquid-tank-xlarge rotate: false - xy: 695, 351 + xy: 695, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-liquid-void-large rotate: false - xy: 901, 326 + xy: 901, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-void-medium rotate: false - xy: 2339, 276 + xy: 2094, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-void-small rotate: false - xy: 3573, 230 + xy: 1828, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-void-tiny rotate: false - xy: 2099, 148 + xy: 2015, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-liquid-void-xlarge rotate: false - xy: 231, 93 + xy: 231, 95 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-magmarock-large rotate: false - xy: 859, 242 + xy: 859, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-magmarock-medium rotate: false - xy: 2373, 276 + xy: 2128, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-magmarock-small rotate: false - xy: 3599, 230 + xy: 1854, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-magmarock-tiny rotate: false - xy: 2099, 130 + xy: 2015, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-magmarock-xlarge rotate: false - xy: 231, 43 + xy: 231, 45 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-mass-conveyor-large rotate: false - xy: 901, 284 + xy: 901, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mass-conveyor-medium rotate: false - xy: 2407, 276 + xy: 2162, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mass-conveyor-small rotate: false - xy: 3625, 230 + xy: 1854, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mass-conveyor-tiny rotate: false - xy: 3833, 224 + xy: 2033, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-mass-conveyor-xlarge rotate: false - xy: 745, 351 + xy: 745, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-mass-driver-large rotate: false - xy: 943, 326 + xy: 943, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mass-driver-medium rotate: false - xy: 2441, 276 + xy: 2196, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mass-driver-small rotate: false - xy: 3651, 230 + xy: 1880, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mass-driver-tiny rotate: false - xy: 1471, 106 + xy: 2033, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-mass-driver-xlarge rotate: false - xy: 281, 104 + xy: 281, 106 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-mechanical-drill-large rotate: false - xy: 859, 200 + xy: 859, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mechanical-drill-medium rotate: false - xy: 2475, 276 + xy: 2230, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mechanical-drill-small rotate: false - xy: 2162, 127 + xy: 1880, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mechanical-drill-tiny rotate: false - xy: 2195, 224 + xy: 2051, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-mechanical-drill-xlarge rotate: false - xy: 281, 54 + xy: 281, 56 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-mechanical-pump-large rotate: false - xy: 901, 242 + xy: 901, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mechanical-pump-medium rotate: false - xy: 2509, 276 + xy: 2264, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mechanical-pump-small rotate: false - xy: 2188, 127 + xy: 1906, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mechanical-pump-tiny rotate: false - xy: 2213, 224 + xy: 2051, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-mechanical-pump-xlarge rotate: false - xy: 795, 363 + xy: 795, 365 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-meltdown-large rotate: false - xy: 943, 284 + xy: 943, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-meltdown-medium rotate: false - xy: 2543, 276 + xy: 2298, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-meltdown-small rotate: false - xy: 4069, 455 + xy: 1906, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-meltdown-tiny rotate: false - xy: 2231, 224 + xy: 2069, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-meltdown-xlarge rotate: false - xy: 309, 301 + xy: 309, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-melter-large rotate: false - xy: 985, 326 + xy: 985, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-melter-medium rotate: false - xy: 2617, 300 + xy: 2332, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-melter-small rotate: false - xy: 4069, 429 + xy: 1932, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-melter-tiny rotate: false - xy: 2249, 224 + xy: 2069, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-melter-xlarge rotate: false - xy: 309, 251 + xy: 309, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-mend-projector-large rotate: false - xy: 901, 200 + xy: 901, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mend-projector-medium rotate: false - xy: 2651, 300 + xy: 2797, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mend-projector-small rotate: false - xy: 3677, 230 + xy: 1932, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mend-projector-tiny rotate: false - xy: 2267, 224 + xy: 2087, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-mend-projector-xlarge rotate: false - xy: 359, 301 + xy: 359, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-mender-large rotate: false - xy: 943, 242 + xy: 943, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mender-medium rotate: false - xy: 2685, 300 + xy: 2831, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mender-small rotate: false - xy: 3703, 250 + xy: 1958, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mender-tiny rotate: false - xy: 2285, 224 + xy: 2087, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-mender-xlarge rotate: false - xy: 309, 201 + xy: 309, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-message-large rotate: false - xy: 985, 284 + xy: 985, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-message-medium rotate: false - xy: 2719, 300 + xy: 2865, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-message-small rotate: false - xy: 3729, 250 + xy: 1958, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-message-tiny rotate: false - xy: 2303, 224 + xy: 2105, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-message-xlarge rotate: false - xy: 359, 251 + xy: 359, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-metal-floor-2-large rotate: false - xy: 1027, 326 + xy: 1027, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-2-medium rotate: false - xy: 2753, 300 + xy: 2899, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-2-small rotate: false - xy: 3755, 250 + xy: 1984, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-2-tiny rotate: false - xy: 2321, 224 + xy: 2105, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-metal-floor-2-xlarge rotate: false - xy: 409, 301 + xy: 409, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-metal-floor-3-large rotate: false - xy: 943, 200 + xy: 943, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-3-medium rotate: false - xy: 2787, 300 + xy: 2933, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-3-small rotate: false - xy: 3703, 224 + xy: 1984, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-3-tiny rotate: false - xy: 2339, 224 + xy: 2123, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-metal-floor-3-xlarge rotate: false - xy: 359, 201 + xy: 359, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-metal-floor-5-large rotate: false - xy: 985, 242 + xy: 985, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-5-medium rotate: false - xy: 2821, 300 + xy: 2967, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-5-small rotate: false - xy: 3729, 224 + xy: 2010, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-5-tiny rotate: false - xy: 2357, 224 + xy: 2123, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-metal-floor-5-xlarge rotate: false - xy: 409, 251 + xy: 409, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-metal-floor-damaged-large rotate: false - xy: 1027, 284 + xy: 1027, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-damaged-medium rotate: false - xy: 2094, 166 + xy: 3001, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-damaged-small rotate: false - xy: 3755, 224 + xy: 2010, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-damaged-tiny rotate: false - xy: 2375, 224 + xy: 2141, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-metal-floor-damaged-xlarge rotate: false - xy: 459, 301 + xy: 459, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-metal-floor-large rotate: false - xy: 1069, 326 + xy: 1069, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-medium rotate: false - xy: 881, 140 + xy: 3035, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-small rotate: false - xy: 3781, 250 + xy: 2036, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-tiny rotate: false - xy: 2393, 224 + xy: 2141, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-metal-floor-xlarge rotate: false - xy: 409, 201 + xy: 409, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-moss-large rotate: false - xy: 985, 200 + xy: 985, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-moss-medium rotate: false - xy: 881, 106 + xy: 3069, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-moss-small rotate: false - xy: 3781, 224 + xy: 2036, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-moss-tiny rotate: false - xy: 2411, 224 + xy: 2159, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-moss-xlarge rotate: false - xy: 459, 251 + xy: 459, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-multi-press-large rotate: false - xy: 1027, 242 + xy: 1027, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-multi-press-medium rotate: false - xy: 881, 72 + xy: 3103, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-multi-press-small rotate: false - xy: 3807, 252 + xy: 2062, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-multi-press-tiny rotate: false - xy: 2429, 224 + xy: 2159, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-multi-press-xlarge rotate: false - xy: 509, 301 + xy: 509, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-multiplicative-reconstructor-large rotate: false - xy: 1069, 284 + xy: 1069, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-multiplicative-reconstructor-medium rotate: false - xy: 881, 38 + xy: 3137, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-multiplicative-reconstructor-small rotate: false - xy: 3807, 226 + xy: 2062, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-multiplicative-reconstructor-tiny rotate: false - xy: 2447, 224 + xy: 2177, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-multiplicative-reconstructor-xlarge rotate: false - xy: 459, 201 + xy: 459, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-naval-factory-large rotate: false - xy: 1111, 326 + xy: 1111, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-naval-factory-medium rotate: false - xy: 881, 4 + xy: 3171, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-naval-factory-small rotate: false - xy: 915, 140 + xy: 2088, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-naval-factory-tiny rotate: false - xy: 2465, 224 + xy: 2177, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-naval-factory-xlarge rotate: false - xy: 509, 251 + xy: 509, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-oil-extractor-large rotate: false - xy: 1027, 200 + xy: 1027, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-oil-extractor-medium rotate: false - xy: 2577, 271 + xy: 3205, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-oil-extractor-small rotate: false - xy: 941, 140 + xy: 2088, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-oil-extractor-tiny rotate: false - xy: 2483, 224 + xy: 2195, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-oil-extractor-xlarge rotate: false - xy: 559, 301 + xy: 559, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-coal-large rotate: false - xy: 1069, 242 + xy: 1069, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-coal-medium rotate: false - xy: 2611, 266 + xy: 3239, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-coal-small rotate: false - xy: 915, 114 + xy: 2114, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-coal-tiny rotate: false - xy: 2501, 224 + xy: 2195, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-coal-xlarge rotate: false - xy: 509, 201 + xy: 509, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-copper-large rotate: false - xy: 1111, 284 + xy: 1111, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-copper-medium rotate: false - xy: 2645, 266 + xy: 3273, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-copper-small rotate: false - xy: 967, 140 + xy: 2114, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-copper-tiny rotate: false - xy: 2519, 224 + xy: 2213, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-copper-xlarge rotate: false - xy: 559, 251 + xy: 559, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-lead-large rotate: false - xy: 1153, 326 + xy: 1153, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-lead-medium rotate: false - xy: 2679, 266 + xy: 3307, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-lead-small rotate: false - xy: 915, 88 + xy: 2140, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-lead-tiny rotate: false - xy: 2537, 224 + xy: 2213, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-lead-xlarge rotate: false - xy: 609, 301 + xy: 609, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-scrap-large rotate: false - xy: 1069, 200 + xy: 1069, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-scrap-medium rotate: false - xy: 2713, 266 + xy: 3341, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-scrap-small rotate: false - xy: 941, 114 + xy: 2140, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-scrap-tiny rotate: false - xy: 2555, 224 + xy: 2231, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-scrap-xlarge rotate: false - xy: 559, 201 + xy: 559, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-thorium-large rotate: false - xy: 1111, 242 + xy: 1111, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-thorium-medium rotate: false - xy: 2747, 266 + xy: 3375, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-thorium-small rotate: false - xy: 993, 140 + xy: 2166, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-thorium-tiny rotate: false - xy: 2196, 206 + xy: 2231, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-thorium-xlarge rotate: false - xy: 609, 251 + xy: 609, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-titanium-large rotate: false - xy: 1153, 284 + xy: 1153, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-titanium-medium rotate: false - xy: 2781, 266 + xy: 3409, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-titanium-small rotate: false - xy: 915, 62 + xy: 2166, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-titanium-tiny rotate: false - xy: 2214, 206 + xy: 2249, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-titanium-xlarge rotate: false - xy: 659, 301 + xy: 659, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-overdrive-projector-large rotate: false - xy: 1195, 326 + xy: 1195, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-overdrive-projector-medium rotate: false - xy: 2815, 266 + xy: 3443, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-overdrive-projector-small rotate: false - xy: 941, 88 + xy: 2192, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-overdrive-projector-tiny rotate: false - xy: 2196, 188 + xy: 2249, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-overdrive-projector-xlarge rotate: false - xy: 609, 201 + xy: 609, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-overflow-gate-large rotate: false - xy: 1111, 200 + xy: 1111, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-overflow-gate-medium rotate: false - xy: 4035, 426 + xy: 3477, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-overflow-gate-small rotate: false - xy: 967, 114 + xy: 2192, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-overflow-gate-tiny rotate: false - xy: 2214, 188 + xy: 2267, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-overflow-gate-xlarge rotate: false - xy: 659, 251 + xy: 659, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-parallax-large rotate: false - xy: 1153, 242 + xy: 1153, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-parallax-medium rotate: false - xy: 4017, 384 + xy: 3511, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-parallax-small rotate: false - xy: 1019, 140 + xy: 2218, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-parallax-tiny rotate: false - xy: 2232, 206 + xy: 2267, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-parallax-xlarge rotate: false - xy: 709, 301 + xy: 709, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-payload-router-large rotate: false - xy: 1195, 284 + xy: 1195, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-payload-router-medium rotate: false - xy: 2199, 242 + xy: 3545, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-payload-router-small rotate: false - xy: 915, 36 + xy: 2218, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-payload-router-tiny rotate: false - xy: 2196, 170 + xy: 2285, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-payload-router-xlarge rotate: false - xy: 659, 201 + xy: 659, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-pebbles-large rotate: false - xy: 1237, 326 + xy: 1237, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pebbles-medium rotate: false - xy: 2233, 242 + xy: 3579, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pebbles-small rotate: false - xy: 941, 62 + xy: 2244, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pebbles-tiny rotate: false - xy: 2214, 170 + xy: 2285, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-pebbles-xlarge rotate: false - xy: 709, 251 + xy: 709, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-phase-conduit-large rotate: false - xy: 1153, 200 + xy: 1153, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-phase-conduit-medium rotate: false - xy: 2267, 242 + xy: 3613, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-conduit-small rotate: false - xy: 967, 88 + xy: 2244, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-phase-conduit-tiny rotate: false - xy: 2232, 188 + xy: 2303, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-phase-conduit-xlarge rotate: false - xy: 709, 201 + xy: 709, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-phase-conveyor-large rotate: false - xy: 1195, 242 + xy: 1195, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-phase-conveyor-medium rotate: false - xy: 2301, 242 + xy: 3647, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-conveyor-small rotate: false - xy: 993, 114 + xy: 2270, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-phase-conveyor-tiny rotate: false - xy: 2250, 206 + xy: 2303, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-phase-conveyor-xlarge rotate: false - xy: 759, 301 + xy: 759, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-phase-wall-large rotate: false - xy: 1237, 284 + xy: 1237, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-phase-wall-large-large rotate: false - xy: 1279, 326 + xy: 1279, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-phase-wall-large-medium rotate: false - xy: 2335, 242 + xy: 3681, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-wall-large-small rotate: false - xy: 1045, 140 + xy: 2270, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-phase-wall-large-tiny rotate: false - xy: 2232, 170 + xy: 2321, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-phase-wall-large-xlarge rotate: false - xy: 759, 251 + xy: 759, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-phase-wall-medium rotate: false - xy: 2369, 242 + xy: 3715, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-wall-small rotate: false - xy: 915, 10 + xy: 2296, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-phase-wall-tiny rotate: false - xy: 2250, 188 + xy: 2321, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-phase-wall-xlarge rotate: false - xy: 759, 201 + xy: 759, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-phase-weaver-large rotate: false - xy: 1195, 200 + xy: 1195, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-phase-weaver-medium rotate: false - xy: 2403, 242 + xy: 3749, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-weaver-small rotate: false - xy: 941, 36 + xy: 2296, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-phase-weaver-tiny rotate: false - xy: 2268, 206 + xy: 2339, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-phase-weaver-xlarge rotate: false - xy: 809, 313 + xy: 809, 315 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-pine-large rotate: false - xy: 1237, 242 + xy: 1237, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pine-medium rotate: false - xy: 2437, 242 + xy: 3783, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pine-small rotate: false - xy: 967, 62 + xy: 2322, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pine-tiny rotate: false - xy: 2250, 170 + xy: 2339, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-pine-xlarge rotate: false - xy: 809, 263 + xy: 809, 265 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-plastanium-compressor-large rotate: false - xy: 1279, 284 + xy: 1279, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-plastanium-compressor-medium rotate: false - xy: 2471, 242 + xy: 3817, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-plastanium-compressor-small rotate: false - xy: 993, 88 + xy: 2322, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-plastanium-compressor-tiny rotate: false - xy: 2268, 188 + xy: 2357, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-plastanium-compressor-xlarge rotate: false - xy: 809, 213 + xy: 809, 215 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-plastanium-conveyor-large rotate: false - xy: 1321, 326 + xy: 1321, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-plastanium-conveyor-medium rotate: false - xy: 2505, 242 + xy: 3851, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-plastanium-conveyor-small rotate: false - xy: 1019, 114 + xy: 4037, 370 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-plastanium-conveyor-tiny rotate: false - xy: 2286, 206 + xy: 2357, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-plastanium-conveyor-xlarge rotate: false - xy: 809, 163 + xy: 809, 165 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-plastanium-wall-large rotate: false - xy: 1237, 200 + xy: 1237, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-plastanium-wall-large-large rotate: false - xy: 1279, 242 + xy: 1279, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-plastanium-wall-large-medium rotate: false - xy: 2539, 242 + xy: 3885, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-plastanium-wall-large-small rotate: false - xy: 1071, 140 + xy: 4063, 370 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-plastanium-wall-large-tiny rotate: false - xy: 2268, 170 + xy: 1331, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-plastanium-wall-large-xlarge rotate: false - xy: 281, 4 + xy: 281, 6 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-plastanium-wall-medium rotate: false - xy: 2573, 237 + xy: 3919, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-plastanium-wall-small rotate: false - xy: 941, 10 + xy: 4055, 344 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-plastanium-wall-tiny rotate: false - xy: 2286, 188 + xy: 1349, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-plastanium-wall-xlarge rotate: false - xy: 331, 151 + xy: 331, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-plated-conduit-large rotate: false - xy: 1321, 284 + xy: 1321, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-plated-conduit-medium rotate: false - xy: 2607, 232 + xy: 3953, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-plated-conduit-small rotate: false - xy: 967, 36 + xy: 4055, 318 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-plated-conduit-tiny rotate: false - xy: 2304, 206 + xy: 1367, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-plated-conduit-xlarge rotate: false - xy: 331, 101 + xy: 331, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-pneumatic-drill-large rotate: false - xy: 1363, 326 + xy: 1363, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pneumatic-drill-medium rotate: false - xy: 2641, 232 + xy: 3987, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pneumatic-drill-small rotate: false - xy: 993, 62 + xy: 915, 1 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pneumatic-drill-tiny rotate: false - xy: 2286, 170 + xy: 1385, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-pneumatic-drill-xlarge rotate: false - xy: 381, 151 + xy: 381, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-power-node-large rotate: false - xy: 1279, 200 + xy: 1279, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-power-node-large-large rotate: false - xy: 1321, 242 + xy: 1321, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-power-node-large-medium rotate: false - xy: 2675, 232 + xy: 881, 142 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-power-node-large-small rotate: false - xy: 1019, 88 + xy: 4030, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-power-node-large-tiny rotate: false - xy: 2304, 188 + xy: 1403, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-power-node-large-xlarge rotate: false - xy: 331, 51 + xy: 331, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-power-node-medium rotate: false - xy: 2709, 232 + xy: 881, 108 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-power-node-small rotate: false - xy: 1045, 114 + xy: 2348, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-power-node-tiny rotate: false - xy: 2322, 206 + xy: 1421, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-power-node-xlarge rotate: false - xy: 381, 101 + xy: 381, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-power-source-large rotate: false - xy: 1363, 284 + xy: 1363, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-power-source-medium rotate: false - xy: 2743, 232 + xy: 881, 74 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-power-source-small rotate: false - xy: 1097, 140 + xy: 2348, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-power-source-tiny rotate: false - xy: 2304, 170 + xy: 1439, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-power-source-xlarge rotate: false - xy: 431, 151 + xy: 431, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-power-void-large rotate: false - xy: 1405, 326 + xy: 1405, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-power-void-medium rotate: false - xy: 2777, 232 + xy: 881, 40 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-power-void-small rotate: false - xy: 967, 10 + xy: 4055, 292 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-power-void-tiny rotate: false - xy: 2322, 188 + xy: 1457, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-power-void-xlarge rotate: false - xy: 381, 51 + xy: 381, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-pulse-conduit-large rotate: false - xy: 1321, 200 + xy: 1321, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pulse-conduit-medium rotate: false - xy: 2811, 232 + xy: 881, 6 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pulse-conduit-small rotate: false - xy: 993, 36 + xy: 4053, 266 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pulse-conduit-tiny rotate: false - xy: 2340, 206 + xy: 1475, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-pulse-conduit-xlarge rotate: false - xy: 431, 101 + xy: 431, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-pulverizer-large rotate: false - xy: 1363, 242 + xy: 1363, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pulverizer-medium rotate: false - xy: 2861, 350 + xy: 2795, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pulverizer-small rotate: false - xy: 1019, 62 + xy: 4049, 240 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pulverizer-tiny rotate: false - xy: 2322, 170 + xy: 1493, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-pulverizer-xlarge rotate: false - xy: 481, 151 + xy: 481, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-pyratite-mixer-large rotate: false - xy: 1405, 284 + xy: 1405, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pyratite-mixer-medium rotate: false - xy: 2895, 350 + xy: 2829, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pyratite-mixer-small rotate: false - xy: 1045, 88 + xy: 2374, 155 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pyratite-mixer-tiny rotate: false - xy: 2340, 188 + xy: 1511, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-pyratite-mixer-xlarge rotate: false - xy: 431, 51 + xy: 431, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-repair-point-large rotate: false - xy: 1447, 326 + xy: 1447, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-repair-point-medium rotate: false - xy: 2929, 350 + xy: 2863, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-repair-point-small rotate: false - xy: 1071, 114 + xy: 2374, 129 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-repair-point-tiny rotate: false - xy: 2358, 206 + xy: 1529, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-repair-point-xlarge rotate: false - xy: 481, 101 + xy: 481, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-resupply-point-large rotate: false - xy: 1363, 200 + xy: 1363, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-resupply-point-medium rotate: false - xy: 2963, 350 + xy: 2897, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-resupply-point-small rotate: false - xy: 1123, 140 + xy: 4056, 214 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-resupply-point-tiny rotate: false - xy: 2340, 170 + xy: 1547, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-resupply-point-xlarge rotate: false - xy: 531, 151 + xy: 531, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ripple-large rotate: false - xy: 1405, 242 + xy: 1405, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ripple-medium rotate: false - xy: 2997, 350 + xy: 2931, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ripple-small rotate: false - xy: 993, 10 + xy: 2374, 103 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ripple-tiny rotate: false - xy: 2358, 188 + xy: 1565, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ripple-xlarge rotate: false - xy: 481, 51 + xy: 481, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-rock-large rotate: false - xy: 1447, 284 + xy: 1447, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-rock-medium rotate: false - xy: 3031, 350 + xy: 2965, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-rock-small rotate: false - xy: 1019, 36 + xy: 3822, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-rock-tiny rotate: false - xy: 2376, 206 + xy: 1583, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-rock-xlarge rotate: false - xy: 531, 101 + xy: 531, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-rocks-large rotate: false - xy: 1489, 326 + xy: 1489, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-rocks-medium rotate: false - xy: 3065, 350 + xy: 2999, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-rocks-small rotate: false - xy: 1045, 62 + xy: 3848, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-rocks-tiny rotate: false - xy: 2358, 170 + xy: 1601, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-rocks-xlarge rotate: false - xy: 581, 151 + xy: 581, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-rotary-pump-large rotate: false - xy: 1405, 200 + xy: 1405, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-rotary-pump-medium rotate: false - xy: 3099, 350 + xy: 3033, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-rotary-pump-small rotate: false - xy: 1071, 88 + xy: 3874, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-rotary-pump-tiny rotate: false - xy: 2376, 188 + xy: 1619, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-rotary-pump-xlarge rotate: false - xy: 531, 51 + xy: 531, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-router-large rotate: false - xy: 1447, 242 + xy: 1447, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-router-medium rotate: false - xy: 3133, 350 + xy: 3067, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-router-small rotate: false - xy: 1097, 114 + xy: 3900, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-router-tiny rotate: false - xy: 2394, 206 + xy: 1637, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-router-xlarge rotate: false - xy: 581, 101 + xy: 581, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-rtg-generator-large rotate: false - xy: 1489, 284 + xy: 1489, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-rtg-generator-medium rotate: false - xy: 3167, 350 + xy: 3101, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-rtg-generator-small rotate: false - xy: 1149, 140 + xy: 3926, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-rtg-generator-tiny rotate: false - xy: 2376, 170 + xy: 1655, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-rtg-generator-xlarge rotate: false - xy: 631, 151 + xy: 631, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-salt-large rotate: false - xy: 1531, 326 + xy: 1531, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-salt-medium rotate: false - xy: 3201, 350 + xy: 3135, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-salt-small rotate: false - xy: 1019, 10 + xy: 3952, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-salt-tiny rotate: false - xy: 2394, 188 + xy: 1673, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-salt-xlarge rotate: false - xy: 581, 51 + xy: 581, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-saltrocks-large rotate: false - xy: 1447, 200 + xy: 1447, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-saltrocks-medium rotate: false - xy: 3235, 350 + xy: 3169, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-saltrocks-small rotate: false - xy: 1045, 36 + xy: 3978, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-saltrocks-tiny rotate: false - xy: 2412, 206 + xy: 1691, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-saltrocks-xlarge rotate: false - xy: 631, 101 + xy: 631, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-salvo-large rotate: false - xy: 1489, 242 + xy: 1489, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-salvo-medium rotate: false - xy: 3269, 350 + xy: 3203, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-salvo-small rotate: false - xy: 1071, 62 + xy: 4004, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-salvo-tiny rotate: false - xy: 2394, 170 + xy: 1709, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-salvo-xlarge rotate: false - xy: 681, 151 + xy: 681, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-sand-boulder-large rotate: false - xy: 1531, 284 + xy: 1531, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sand-boulder-medium rotate: false - xy: 3303, 350 + xy: 3237, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sand-boulder-small rotate: false - xy: 1097, 88 + xy: 4030, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sand-boulder-tiny rotate: false - xy: 2412, 188 + xy: 1727, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-sand-boulder-xlarge rotate: false - xy: 631, 51 + xy: 631, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-sand-large rotate: false - xy: 1573, 326 + xy: 1573, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sand-medium rotate: false - xy: 3337, 350 + xy: 3271, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sand-small rotate: false - xy: 1123, 114 + xy: 4056, 188 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sand-tiny rotate: false - xy: 2430, 206 + xy: 1745, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-sand-water-large rotate: false - xy: 1489, 200 + xy: 1489, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sand-water-medium rotate: false - xy: 3371, 350 + xy: 3305, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sand-water-small rotate: false - xy: 1175, 140 + xy: 944, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sand-water-tiny rotate: false - xy: 2412, 170 + xy: 1763, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-sand-water-xlarge rotate: false - xy: 681, 101 + xy: 681, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-sand-xlarge rotate: false - xy: 731, 151 + xy: 731, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-sandrocks-large rotate: false - xy: 1531, 242 + xy: 1531, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sandrocks-medium rotate: false - xy: 3405, 350 + xy: 3339, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sandrocks-small rotate: false - xy: 1045, 10 + xy: 970, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sandrocks-tiny rotate: false - xy: 2430, 188 + xy: 1781, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-sandrocks-xlarge rotate: false - xy: 681, 51 + xy: 681, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-scatter-large rotate: false - xy: 1573, 284 + xy: 1573, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scatter-medium rotate: false - xy: 3439, 350 + xy: 3373, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scatter-small rotate: false - xy: 1071, 36 + xy: 996, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scatter-tiny rotate: false - xy: 2448, 206 + xy: 1799, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-scatter-xlarge rotate: false - xy: 731, 101 + xy: 731, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-scorch-large rotate: false - xy: 1615, 326 + xy: 1615, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scorch-medium rotate: false - xy: 3473, 350 + xy: 3407, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scorch-small rotate: false - xy: 1097, 62 + xy: 1022, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scorch-tiny rotate: false - xy: 2430, 170 + xy: 1817, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-scorch-xlarge rotate: false - xy: 731, 51 + xy: 731, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-scrap-wall-gigantic-large rotate: false - xy: 1531, 200 + xy: 1531, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scrap-wall-gigantic-medium rotate: false - xy: 3507, 350 + xy: 3441, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-gigantic-small rotate: false - xy: 1123, 88 + xy: 1048, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scrap-wall-gigantic-tiny rotate: false - xy: 2448, 188 + xy: 1835, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-scrap-wall-gigantic-xlarge rotate: false - xy: 331, 1 + xy: 331, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-scrap-wall-huge-large rotate: false - xy: 1573, 242 + xy: 1573, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scrap-wall-huge-medium rotate: false - xy: 3541, 350 + xy: 3475, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-huge-small rotate: false - xy: 1149, 114 + xy: 1074, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scrap-wall-huge-tiny rotate: false - xy: 2466, 206 + xy: 1853, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-scrap-wall-huge-xlarge rotate: false - xy: 381, 1 + xy: 381, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-scrap-wall-large rotate: false - xy: 1615, 284 + xy: 1615, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scrap-wall-large-large rotate: false - xy: 1657, 326 + xy: 1657, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scrap-wall-large-medium rotate: false - xy: 3575, 350 + xy: 3509, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-large-small rotate: false - xy: 1201, 140 + xy: 1100, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scrap-wall-large-tiny rotate: false - xy: 2448, 170 + xy: 1871, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-scrap-wall-large-xlarge rotate: false - xy: 431, 1 + xy: 431, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-scrap-wall-medium rotate: false - xy: 3609, 350 + xy: 3543, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-small rotate: false - xy: 1071, 10 + xy: 1126, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scrap-wall-tiny rotate: false - xy: 2466, 188 + xy: 1889, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-scrap-wall-xlarge rotate: false - xy: 481, 1 + xy: 481, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-segment-large rotate: false - xy: 1573, 200 + xy: 1573, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-segment-medium rotate: false - xy: 3643, 350 + xy: 3577, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-segment-small rotate: false - xy: 1097, 36 + xy: 1152, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-segment-tiny rotate: false - xy: 2484, 206 + xy: 1907, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-segment-xlarge rotate: false - xy: 531, 1 + xy: 531, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-separator-large rotate: false - xy: 1615, 242 + xy: 1615, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-separator-medium rotate: false - xy: 3677, 350 + xy: 3611, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-separator-small rotate: false - xy: 1123, 62 + xy: 1178, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-separator-tiny rotate: false - xy: 2466, 170 + xy: 1925, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-separator-xlarge rotate: false - xy: 581, 1 + xy: 581, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-shale-boulder-large rotate: false - xy: 1657, 284 + xy: 1657, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-shale-boulder-medium rotate: false - xy: 3711, 350 + xy: 3645, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shale-boulder-small rotate: false - xy: 1149, 88 + xy: 1204, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-shale-boulder-tiny rotate: false - xy: 2484, 188 + xy: 1943, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-shale-boulder-xlarge rotate: false - xy: 631, 1 + xy: 631, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-shale-large rotate: false - xy: 1699, 326 + xy: 1699, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-shale-medium rotate: false - xy: 3745, 350 + xy: 3679, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shale-small rotate: false - xy: 1175, 114 + xy: 1230, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-shale-tiny rotate: false - xy: 2502, 206 + xy: 1961, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-shale-xlarge rotate: false - xy: 681, 1 + xy: 681, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-shalerocks-large rotate: false - xy: 1615, 200 + xy: 1615, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-shalerocks-medium rotate: false - xy: 3779, 350 + xy: 3713, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shalerocks-small rotate: false - xy: 1227, 140 + xy: 1256, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-shalerocks-tiny rotate: false - xy: 2484, 170 + xy: 1979, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-shalerocks-xlarge rotate: false - xy: 731, 1 + xy: 731, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-shock-mine-large rotate: false - xy: 1657, 242 + xy: 1657, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-shock-mine-medium rotate: false - xy: 3813, 350 + xy: 3747, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shock-mine-small rotate: false - xy: 1097, 10 + xy: 1282, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-shock-mine-tiny rotate: false - xy: 2502, 188 + xy: 1997, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-shock-mine-xlarge rotate: false - xy: 781, 113 + xy: 781, 115 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-shrubs-large rotate: false - xy: 1699, 284 + xy: 1699, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-shrubs-medium rotate: false - xy: 3847, 350 + xy: 3781, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shrubs-small rotate: false - xy: 1123, 36 + xy: 1308, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-shrubs-tiny rotate: false - xy: 2520, 206 + xy: 2015, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-shrubs-xlarge rotate: false - xy: 781, 63 + xy: 781, 65 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-silicon-crucible-large rotate: false - xy: 1741, 326 + xy: 1741, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-silicon-crucible-medium rotate: false - xy: 3881, 350 + xy: 3815, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-silicon-crucible-small rotate: false - xy: 1149, 62 + xy: 1334, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-silicon-crucible-tiny rotate: false - xy: 2502, 170 + xy: 2033, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-silicon-crucible-xlarge rotate: false - xy: 781, 13 + xy: 781, 15 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-silicon-smelter-large rotate: false - xy: 1657, 200 + xy: 1657, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-silicon-smelter-medium rotate: false - xy: 3915, 350 + xy: 3849, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-silicon-smelter-small rotate: false - xy: 1175, 88 + xy: 1360, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-silicon-smelter-tiny rotate: false - xy: 2520, 188 + xy: 2051, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-silicon-smelter-xlarge rotate: false - xy: 831, 113 + xy: 831, 115 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-slag-large rotate: false - xy: 1699, 242 + xy: 1699, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-slag-medium rotate: false - xy: 3949, 350 + xy: 3883, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-slag-small rotate: false - xy: 1201, 114 + xy: 1386, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-slag-tiny rotate: false - xy: 2538, 206 + xy: 2069, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-slag-xlarge rotate: false - xy: 831, 63 + xy: 831, 65 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-snow-large rotate: false - xy: 1741, 284 + xy: 1741, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-snow-medium rotate: false - xy: 3983, 350 + xy: 3917, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snow-pine-large rotate: false - xy: 1783, 326 + xy: 1783, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-snow-pine-medium rotate: false - xy: 4017, 350 + xy: 3951, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snow-pine-small rotate: false - xy: 1253, 140 + xy: 1412, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-snow-pine-tiny rotate: false - xy: 2520, 170 + xy: 2087, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-snow-pine-xlarge rotate: false - xy: 831, 13 + xy: 831, 15 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-snow-small rotate: false - xy: 1123, 10 + xy: 1438, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-snow-tiny rotate: false - xy: 2538, 188 + xy: 2105, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-snow-xlarge rotate: false - xy: 859, 410 + xy: 859, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-snowrock-large rotate: false - xy: 1699, 200 + xy: 1699, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-snowrock-medium rotate: false - xy: 2128, 179 + xy: 3985, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snowrock-small rotate: false - xy: 1149, 36 + xy: 1464, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-snowrock-tiny rotate: false - xy: 2538, 170 + xy: 2123, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-snowrock-xlarge rotate: false - xy: 909, 410 + xy: 909, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-snowrocks-large rotate: false - xy: 1741, 242 + xy: 1741, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-snowrocks-medium rotate: false - xy: 2859, 316 + xy: 2451, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snowrocks-small rotate: false - xy: 1175, 62 + xy: 1490, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-snowrocks-tiny rotate: false - xy: 2556, 206 + xy: 2141, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-snowrocks-xlarge rotate: false - xy: 959, 410 + xy: 959, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-solar-panel-large rotate: false - xy: 1783, 284 + xy: 1783, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-solar-panel-large-large rotate: false - xy: 1825, 326 + xy: 1825, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-solar-panel-large-medium rotate: false - xy: 2893, 316 + xy: 2485, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-solar-panel-large-small rotate: false - xy: 1201, 88 + xy: 1516, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-solar-panel-large-tiny rotate: false - xy: 2556, 188 + xy: 2159, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-solar-panel-large-xlarge rotate: false - xy: 1009, 410 + xy: 1009, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-solar-panel-medium rotate: false - xy: 2927, 316 + xy: 2519, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-solar-panel-small rotate: false - xy: 1227, 114 + xy: 1542, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-solar-panel-tiny rotate: false - xy: 2556, 170 + xy: 2177, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-solar-panel-xlarge rotate: false - xy: 1059, 410 + xy: 1059, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-sorter-large rotate: false - xy: 1741, 200 + xy: 1741, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sorter-medium rotate: false - xy: 2961, 316 + xy: 2553, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sorter-small rotate: false - xy: 1279, 140 + xy: 1568, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sorter-tiny rotate: false - xy: 3851, 246 + xy: 2195, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-sorter-xlarge rotate: false - xy: 1109, 410 + xy: 1109, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-spawn-large rotate: false - xy: 1783, 242 + xy: 1783, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spawn-medium rotate: false - xy: 2995, 316 + xy: 2587, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spawn-small rotate: false - xy: 1149, 10 + xy: 1594, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spawn-tiny rotate: false - xy: 3869, 246 + xy: 2213, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-spawn-xlarge rotate: false - xy: 1159, 410 + xy: 1159, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-spectre-large rotate: false - xy: 1825, 284 + xy: 1825, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spectre-medium rotate: false - xy: 3029, 316 + xy: 2621, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spectre-small rotate: false - xy: 1175, 36 + xy: 1620, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spectre-tiny rotate: false - xy: 3851, 228 + xy: 2231, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-spectre-xlarge rotate: false - xy: 1209, 410 + xy: 1209, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-spore-cluster-large rotate: false - xy: 1867, 326 + xy: 1867, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spore-cluster-medium rotate: false - xy: 3063, 316 + xy: 2655, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spore-cluster-small rotate: false - xy: 1201, 62 + xy: 1646, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spore-cluster-tiny rotate: false - xy: 3887, 246 + xy: 2249, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-spore-cluster-xlarge rotate: false - xy: 1259, 410 + xy: 1259, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-spore-moss-large rotate: false - xy: 1783, 200 + xy: 1783, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spore-moss-medium rotate: false - xy: 3097, 316 + xy: 2689, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spore-moss-small rotate: false - xy: 1227, 88 + xy: 1672, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spore-moss-tiny rotate: false - xy: 3869, 228 + xy: 2267, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-spore-moss-xlarge rotate: false - xy: 1309, 410 + xy: 1309, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-spore-pine-large rotate: false - xy: 1825, 242 + xy: 1825, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spore-pine-medium rotate: false - xy: 3131, 316 + xy: 2723, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spore-pine-small rotate: false - xy: 1253, 114 + xy: 1698, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spore-pine-tiny rotate: false - xy: 3905, 246 + xy: 2285, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-spore-pine-xlarge rotate: false - xy: 1359, 410 + xy: 1359, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-spore-press-large rotate: false - xy: 1867, 284 + xy: 1867, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spore-press-medium rotate: false - xy: 3165, 316 + xy: 2757, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spore-press-small rotate: false - xy: 1305, 140 + xy: 1724, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spore-press-tiny rotate: false - xy: 3887, 228 + xy: 2303, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-spore-press-xlarge rotate: false - xy: 1409, 410 + xy: 1409, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-sporerocks-large rotate: false - xy: 1909, 326 + xy: 1909, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sporerocks-medium rotate: false - xy: 3199, 316 + xy: 2791, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sporerocks-small rotate: false - xy: 1175, 10 + xy: 1750, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sporerocks-tiny rotate: false - xy: 3923, 246 + xy: 2321, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-sporerocks-xlarge rotate: false - xy: 1459, 410 + xy: 1459, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-stone-large rotate: false - xy: 1825, 200 + xy: 1825, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-stone-medium rotate: false - xy: 3233, 316 + xy: 2825, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-stone-small rotate: false - xy: 1201, 36 + xy: 1776, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-stone-tiny rotate: false - xy: 3905, 228 + xy: 2339, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-stone-xlarge rotate: false - xy: 1509, 410 + xy: 1509, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-surge-tower-large rotate: false - xy: 1867, 242 + xy: 1867, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-surge-tower-medium rotate: false - xy: 3267, 316 + xy: 2859, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-surge-tower-small rotate: false - xy: 1227, 62 + xy: 1802, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-surge-tower-tiny rotate: false - xy: 3941, 246 + xy: 2357, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-surge-tower-xlarge rotate: false - xy: 1559, 410 + xy: 1559, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-surge-wall-large rotate: false - xy: 1909, 284 + xy: 1909, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-surge-wall-large-large rotate: false - xy: 1951, 326 + xy: 1951, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-surge-wall-large-medium rotate: false - xy: 3301, 316 + xy: 2893, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-surge-wall-large-small rotate: false - xy: 1253, 88 + xy: 1828, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-surge-wall-large-tiny rotate: false - xy: 3923, 228 + xy: 1071, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-surge-wall-large-xlarge rotate: false - xy: 1609, 410 + xy: 1609, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-surge-wall-medium rotate: false - xy: 3335, 316 + xy: 2927, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-surge-wall-small rotate: false - xy: 1279, 114 + xy: 1854, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-surge-wall-tiny rotate: false - xy: 3959, 246 + xy: 1089, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-surge-wall-xlarge rotate: false - xy: 1659, 410 + xy: 1659, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-swarmer-large rotate: false - xy: 1867, 200 + xy: 1867, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-swarmer-medium rotate: false - xy: 3369, 316 + xy: 2961, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-swarmer-small rotate: false - xy: 1331, 140 + xy: 1880, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-swarmer-tiny rotate: false - xy: 3941, 228 + xy: 1107, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-swarmer-xlarge rotate: false - xy: 1709, 410 + xy: 1709, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-tainted-water-large rotate: false - xy: 1909, 242 + xy: 1909, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-tainted-water-medium rotate: false - xy: 3403, 316 + xy: 2995, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-tainted-water-small rotate: false - xy: 1201, 10 + xy: 1906, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-tainted-water-tiny rotate: false - xy: 3977, 246 + xy: 1125, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-tainted-water-xlarge rotate: false - xy: 1759, 410 + xy: 1759, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-tar-large rotate: false - xy: 1951, 284 + xy: 1951, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-tar-medium rotate: false - xy: 3437, 316 + xy: 3029, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-tar-small rotate: false - xy: 1227, 36 + xy: 1932, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-tar-tiny rotate: false - xy: 3959, 228 + xy: 1143, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-tar-xlarge rotate: false - xy: 1809, 410 + xy: 1809, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-tendrils-large rotate: false - xy: 1993, 326 + xy: 1993, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-tendrils-medium rotate: false - xy: 3471, 316 + xy: 3063, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-tendrils-small rotate: false - xy: 1253, 62 + xy: 1958, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-tendrils-tiny rotate: false - xy: 3995, 246 + xy: 1161, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-tendrils-xlarge rotate: false - xy: 1859, 410 + xy: 1859, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-tetrative-reconstructor-large rotate: false - xy: 1909, 200 + xy: 1909, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-tetrative-reconstructor-medium rotate: false - xy: 3505, 316 + xy: 3097, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-tetrative-reconstructor-small rotate: false - xy: 1279, 88 + xy: 1984, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-tetrative-reconstructor-tiny rotate: false - xy: 3977, 228 + xy: 1179, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-tetrative-reconstructor-xlarge rotate: false - xy: 1909, 410 + xy: 1909, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-thermal-generator-large rotate: false - xy: 1951, 242 + xy: 1951, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thermal-generator-medium rotate: false - xy: 3539, 316 + xy: 3131, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thermal-generator-small rotate: false - xy: 1305, 114 + xy: 2010, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thermal-generator-tiny rotate: false - xy: 4013, 246 + xy: 1197, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-thermal-generator-xlarge rotate: false - xy: 1959, 410 + xy: 1959, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-thermal-pump-large rotate: false - xy: 1993, 284 + xy: 1993, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thermal-pump-medium rotate: false - xy: 3573, 316 + xy: 3165, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thermal-pump-small rotate: false - xy: 1357, 140 + xy: 2036, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thermal-pump-tiny rotate: false - xy: 3995, 228 + xy: 1215, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-thermal-pump-xlarge rotate: false - xy: 2009, 410 + xy: 2009, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-thorium-reactor-large rotate: false - xy: 2035, 326 + xy: 2035, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thorium-reactor-medium rotate: false - xy: 3607, 316 + xy: 3199, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thorium-reactor-small rotate: false - xy: 1227, 10 + xy: 2062, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thorium-reactor-tiny rotate: false - xy: 4013, 228 + xy: 1233, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-thorium-reactor-xlarge rotate: false - xy: 2059, 410 + xy: 2059, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-thorium-wall-large rotate: false - xy: 1951, 200 + xy: 1951, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thorium-wall-large-large rotate: false - xy: 1993, 242 + xy: 1993, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thorium-wall-large-medium rotate: false - xy: 3641, 316 + xy: 3233, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thorium-wall-large-small rotate: false - xy: 1253, 36 + xy: 2088, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thorium-wall-large-tiny rotate: false - xy: 1489, 112 + xy: 1251, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-thorium-wall-large-xlarge rotate: false - xy: 2109, 410 + xy: 2109, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-thorium-wall-medium rotate: false - xy: 3675, 316 + xy: 3267, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thorium-wall-small rotate: false - xy: 1279, 62 + xy: 2114, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thorium-wall-tiny rotate: false - xy: 1507, 112 + xy: 1269, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-thorium-wall-xlarge rotate: false - xy: 2159, 410 + xy: 2159, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-thruster-large rotate: false - xy: 2035, 284 + xy: 2035, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thruster-medium rotate: false - xy: 3709, 316 + xy: 3301, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thruster-small rotate: false - xy: 1305, 88 + xy: 2140, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thruster-tiny rotate: false - xy: 1525, 112 + xy: 1287, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-thruster-xlarge rotate: false - xy: 2209, 410 + xy: 2209, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-titanium-conveyor-large rotate: false - xy: 2077, 326 + xy: 2077, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-titanium-conveyor-medium rotate: false - xy: 3743, 316 + xy: 3335, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-titanium-conveyor-small rotate: false - xy: 1331, 114 + xy: 2166, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-titanium-conveyor-tiny rotate: false - xy: 1543, 112 + xy: 1305, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-titanium-conveyor-xlarge rotate: false - xy: 2259, 410 + xy: 2259, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-titanium-wall-large rotate: false - xy: 1993, 200 + xy: 1993, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-titanium-wall-large-large rotate: false - xy: 2035, 242 + xy: 2035, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-titanium-wall-large-medium rotate: false - xy: 3777, 316 + xy: 3369, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-titanium-wall-large-small rotate: false - xy: 1383, 140 + xy: 2192, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-titanium-wall-large-tiny rotate: false - xy: 1561, 112 + xy: 993, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-titanium-wall-large-xlarge rotate: false - xy: 2309, 410 + xy: 2309, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-titanium-wall-medium rotate: false - xy: 3811, 316 + xy: 3403, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-titanium-wall-small rotate: false - xy: 1253, 10 + xy: 2218, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-titanium-wall-tiny rotate: false - xy: 1579, 112 + xy: 1011, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-titanium-wall-xlarge rotate: false - xy: 2359, 410 + xy: 2359, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-turbine-generator-large rotate: false - xy: 2077, 284 + xy: 2077, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-turbine-generator-medium rotate: false - xy: 3845, 316 + xy: 3437, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-turbine-generator-small rotate: false - xy: 1279, 36 + xy: 2244, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-turbine-generator-tiny rotate: false - xy: 1597, 112 + xy: 1029, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-turbine-generator-xlarge rotate: false - xy: 2409, 410 + xy: 2409, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-underflow-gate-large rotate: false - xy: 2119, 326 + xy: 2119, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-underflow-gate-medium rotate: false - xy: 3879, 316 + xy: 3471, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-underflow-gate-small rotate: false - xy: 1305, 62 + xy: 2270, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-underflow-gate-tiny rotate: false - xy: 1615, 112 + xy: 1047, 9 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-underflow-gate-xlarge rotate: false - xy: 2459, 410 + xy: 2459, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-unloader-large rotate: false - xy: 2035, 200 + xy: 2035, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-unloader-medium rotate: false - xy: 3913, 316 + xy: 3505, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-unloader-small rotate: false - xy: 1331, 88 + xy: 2296, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-unloader-tiny rotate: false - xy: 1633, 112 + xy: 1323, 18 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-unloader-xlarge rotate: false - xy: 2509, 410 + xy: 2509, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-vault-large rotate: false - xy: 2077, 242 + xy: 2077, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-vault-medium rotate: false - xy: 3947, 316 + xy: 3539, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-vault-small rotate: false - xy: 1357, 114 + xy: 2322, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-vault-tiny rotate: false - xy: 1651, 112 + xy: 1341, 18 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-vault-xlarge rotate: false - xy: 2559, 410 + xy: 2559, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-water-extractor-large rotate: false - xy: 2119, 284 + xy: 2119, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-water-extractor-medium rotate: false - xy: 3981, 316 + xy: 3573, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-water-extractor-small rotate: false - xy: 1409, 140 + xy: 2348, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-water-extractor-tiny rotate: false - xy: 1669, 112 + xy: 1359, 18 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-water-extractor-xlarge rotate: false - xy: 2609, 410 + xy: 2609, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-water-large rotate: false - xy: 2161, 326 + xy: 2161, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-water-medium rotate: false - xy: 4015, 316 + xy: 3607, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-water-small rotate: false - xy: 1279, 10 + xy: 941, 64 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-water-tiny rotate: false - xy: 1687, 112 + xy: 1377, 18 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-water-xlarge rotate: false - xy: 2659, 410 + xy: 2659, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-wave-large rotate: false - xy: 2077, 200 + xy: 2077, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-wave-medium rotate: false - xy: 2128, 145 + xy: 3641, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-wave-small rotate: false - xy: 1305, 36 + xy: 941, 38 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-wave-tiny rotate: false - xy: 1705, 112 + xy: 1395, 18 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-wave-xlarge rotate: false - xy: 2709, 410 + xy: 2709, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-white-tree-dead-large rotate: false - xy: 2119, 242 + xy: 2119, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-white-tree-dead-medium rotate: false - xy: 2161, 221 + xy: 3675, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-white-tree-dead-small rotate: false - xy: 1331, 62 + xy: 967, 64 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-white-tree-dead-tiny rotate: false - xy: 1723, 112 + xy: 1413, 18 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-white-tree-dead-xlarge rotate: false - xy: 2759, 410 + xy: 2759, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-white-tree-large rotate: false - xy: 2161, 284 + xy: 2161, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-white-tree-medium rotate: false - xy: 2162, 187 + xy: 3709, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-white-tree-small rotate: false - xy: 1357, 88 + xy: 941, 12 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-white-tree-tiny rotate: false - xy: 1741, 112 + xy: 1431, 18 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-white-tree-xlarge rotate: false - xy: 2809, 410 + xy: 2809, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 button rotate: false - xy: 2431, 310 + xy: 2645, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17372,7 +17372,7 @@ button index: -1 button-disabled rotate: false - xy: 4057, 481 + xy: 4057, 483 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17380,7 +17380,7 @@ button-disabled index: -1 button-down rotate: false - xy: 2203, 339 + xy: 4059, 454 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17388,7 +17388,7 @@ button-down index: -1 button-edge-1 rotate: false - xy: 2119, 213 + xy: 4059, 425 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17396,7 +17396,7 @@ button-edge-1 index: -1 button-edge-2 rotate: false - xy: 2161, 255 + xy: 4059, 396 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17404,7 +17404,7 @@ button-edge-2 index: -1 button-edge-3 rotate: false - xy: 2203, 310 + xy: 2455, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17412,7 +17412,7 @@ button-edge-3 index: -1 button-edge-4 rotate: false - xy: 2241, 339 + xy: 2371, 215 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17420,7 +17420,7 @@ button-edge-4 index: -1 button-edge-over-4 rotate: false - xy: 2241, 310 + xy: 2413, 257 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17428,7 +17428,7 @@ button-edge-over-4 index: -1 button-over rotate: false - xy: 2279, 339 + xy: 2455, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17436,7 +17436,7 @@ button-over index: -1 button-red rotate: false - xy: 2279, 310 + xy: 2493, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17444,7 +17444,7 @@ button-red index: -1 button-right rotate: false - xy: 2355, 339 + xy: 2531, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17452,7 +17452,7 @@ button-right index: -1 button-right-down rotate: false - xy: 2317, 339 + xy: 2493, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17460,7 +17460,7 @@ button-right-down index: -1 button-right-over rotate: false - xy: 2317, 310 + xy: 2531, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17468,7 +17468,7 @@ button-right-over index: -1 button-select rotate: false - xy: 1383, 114 + xy: 967, 38 size: 24, 24 split: 4, 4, 4, 4 orig: 24, 24 @@ -17476,7 +17476,7 @@ button-select index: -1 button-square rotate: false - xy: 2393, 310 + xy: 2607, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17484,7 +17484,7 @@ button-square index: -1 button-square-down rotate: false - xy: 2355, 310 + xy: 2569, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17492,7 +17492,7 @@ button-square-down index: -1 button-square-over rotate: false - xy: 2393, 339 + xy: 2569, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17500,7 +17500,7 @@ button-square-over index: -1 button-trans rotate: false - xy: 2431, 339 + xy: 2607, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17508,77 +17508,77 @@ button-trans index: -1 check-disabled rotate: false - xy: 2162, 153 + xy: 3743, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-off rotate: false - xy: 2855, 282 + xy: 3777, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on rotate: false - xy: 2889, 282 + xy: 3811, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on-disabled rotate: false - xy: 2923, 282 + xy: 3845, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on-over rotate: false - xy: 2957, 282 + xy: 3879, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-over rotate: false - xy: 2991, 282 + xy: 3913, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 clear rotate: false - xy: 771, 401 + xy: 771, 403 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 crater rotate: false - xy: 4077, 343 + xy: 309, 183 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 cursor rotate: false - xy: 3699, 276 + xy: 4049, 234 size: 4, 4 orig: 4, 4 offset: 0, 0 index: -1 discord-banner rotate: false - xy: 771, 463 + xy: 771, 465 size: 84, 45 orig: 84, 45 offset: 0, 0 index: -1 flat-down-base rotate: false - xy: 2469, 339 + xy: 2645, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17586,14 +17586,14 @@ flat-down-base index: -1 info-banner rotate: false - xy: 259, 354 + xy: 259, 356 size: 84, 45 orig: 84, 45 offset: 0, 0 index: -1 inventory rotate: false - xy: 1435, 124 + xy: 993, 48 size: 24, 40 split: 10, 10, 10, 14 orig: 24, 40 @@ -17601,161 +17601,161 @@ inventory index: -1 item-blast-compound-icon rotate: false - xy: 3025, 282 + xy: 3947, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-coal-icon rotate: false - xy: 3059, 282 + xy: 3981, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-copper-icon rotate: false - xy: 3093, 282 + xy: 4021, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-graphite-icon rotate: false - xy: 3127, 282 + xy: 4021, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-lead-icon rotate: false - xy: 3161, 282 + xy: 4019, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-metaglass-icon rotate: false - xy: 3195, 282 + xy: 4015, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-phase-fabric-icon rotate: false - xy: 3229, 282 + xy: 2371, 181 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-plastanium-icon rotate: false - xy: 3263, 282 + xy: 2413, 223 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-pyratite-icon rotate: false - xy: 3297, 282 + xy: 2447, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-sand-icon rotate: false - xy: 3331, 282 + xy: 2481, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-scrap-icon rotate: false - xy: 3365, 282 + xy: 2515, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-silicon-icon rotate: false - xy: 3399, 282 + xy: 2549, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-spore-pod-icon rotate: false - xy: 3433, 282 + xy: 2583, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-surge-alloy-icon rotate: false - xy: 3467, 282 + xy: 2617, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-thorium-icon rotate: false - xy: 3501, 282 + xy: 2651, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-titanium-icon rotate: false - xy: 3535, 282 + xy: 2685, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-cryofluid-icon rotate: false - xy: 3569, 282 + xy: 2719, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-oil-icon rotate: false - xy: 3603, 282 + xy: 2753, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-slag-icon rotate: false - xy: 3637, 282 + xy: 2787, 200 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-water-icon rotate: false - xy: 3671, 282 + xy: 2821, 200 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 logo rotate: false - xy: 1, 401 + xy: 1, 403 size: 768, 107 orig: 768, 107 offset: 0, 0 index: -1 nomap rotate: false - xy: 1, 143 + xy: 1, 145 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 pane rotate: false - xy: 2507, 339 + xy: 2683, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17763,7 +17763,7 @@ pane index: -1 pane-2 rotate: false - xy: 2469, 310 + xy: 2683, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17771,7 +17771,7 @@ pane-2 index: -1 scroll rotate: false - xy: 1409, 103 + xy: 1045, 53 size: 24, 35 split: 10, 10, 6, 5 orig: 24, 35 @@ -17779,7 +17779,7 @@ scroll index: -1 scroll-horizontal rotate: false - xy: 901, 174 + xy: 901, 176 size: 35, 24 split: 6, 5, 10, 10 orig: 35, 24 @@ -17787,70 +17787,70 @@ scroll-horizontal index: -1 scroll-knob-horizontal-black rotate: false - xy: 859, 174 + xy: 859, 176 size: 40, 24 orig: 40, 24 offset: 0, 0 index: -1 scroll-knob-vertical-black rotate: false - xy: 1461, 124 + xy: 1019, 48 size: 24, 40 orig: 24, 40 offset: 0, 0 index: -1 scroll-knob-vertical-thin rotate: false - xy: 4080, 387 + xy: 4081, 328 size: 12, 40 orig: 12, 40 offset: 0, 0 index: -1 selection rotate: false - xy: 4069, 426 + xy: 941, 102 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 slider rotate: false - xy: 4094, 419 + xy: 941, 92 size: 1, 8 orig: 1, 8 offset: 0, 0 index: -1 slider-knob rotate: false - xy: 3705, 276 + xy: 3671, 194 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-knob-down rotate: false - xy: 3736, 276 + xy: 3702, 194 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-knob-over rotate: false - xy: 3767, 276 + xy: 3733, 194 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-vertical rotate: false - xy: 309, 351 + xy: 309, 353 size: 8, 1 orig: 8, 1 offset: 0, 0 index: -1 underline rotate: false - xy: 2583, 339 + xy: 2759, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17858,7 +17858,7 @@ underline index: -1 underline-2 rotate: false - xy: 2507, 310 + xy: 2721, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17866,7 +17866,7 @@ underline-2 index: -1 underline-disabled rotate: false - xy: 2545, 339 + xy: 2721, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17874,22 +17874,862 @@ underline-disabled index: -1 underline-red rotate: false - xy: 2545, 310 + xy: 2759, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 offset: 0, 0 index: -1 +unit-alpha-large + rotate: false + xy: 2203, 328 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-alpha-medium + rotate: false + xy: 2855, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-alpha-small + rotate: false + xy: 967, 12 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-alpha-tiny + rotate: false + xy: 1449, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-alpha-xlarge + rotate: false + xy: 2859, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-antumbra-large + rotate: false + xy: 2119, 202 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-antumbra-medium + rotate: false + xy: 2889, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-antumbra-small + rotate: false + xy: 993, 22 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-antumbra-tiny + rotate: false + xy: 1467, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-antumbra-xlarge + rotate: false + xy: 2909, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-arkyid-large + rotate: false + xy: 2161, 244 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-arkyid-medium + rotate: false + xy: 2923, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-arkyid-small + rotate: false + xy: 1071, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-arkyid-tiny + rotate: false + xy: 1485, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-arkyid-xlarge + rotate: false + xy: 2959, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-atrax-large + rotate: false + xy: 2203, 286 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-atrax-medium + rotate: false + xy: 2957, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-atrax-small + rotate: false + xy: 1019, 22 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-atrax-tiny + rotate: false + xy: 1503, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-atrax-xlarge + rotate: false + xy: 3009, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-beta-large + rotate: false + xy: 2245, 328 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-beta-medium + rotate: false + xy: 2991, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-beta-small + rotate: false + xy: 1045, 27 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-beta-tiny + rotate: false + xy: 1521, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-beta-xlarge + rotate: false + xy: 3059, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-bryde-large + rotate: false + xy: 2161, 202 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-bryde-medium + rotate: false + xy: 3025, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-bryde-small + rotate: false + xy: 1071, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-bryde-tiny + rotate: false + xy: 1539, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-bryde-xlarge + rotate: false + xy: 3109, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-crawler-large + rotate: false + xy: 2203, 244 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-crawler-medium + rotate: false + xy: 3059, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-crawler-small + rotate: false + xy: 1097, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-crawler-tiny + rotate: false + xy: 1557, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-crawler-xlarge + rotate: false + xy: 3159, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-dagger-large + rotate: false + xy: 2245, 286 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-dagger-medium + rotate: false + xy: 3093, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-dagger-small + rotate: false + xy: 1097, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-dagger-tiny + rotate: false + xy: 1575, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-dagger-xlarge + rotate: false + xy: 3209, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-eclipse-large + rotate: false + xy: 2287, 328 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-eclipse-medium + rotate: false + xy: 3127, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-eclipse-small + rotate: false + xy: 1123, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-eclipse-tiny + rotate: false + xy: 1593, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-eclipse-xlarge + rotate: false + xy: 3259, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-flare-large + rotate: false + xy: 2203, 202 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-flare-medium + rotate: false + xy: 3161, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-flare-small + rotate: false + xy: 1123, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-flare-tiny + rotate: false + xy: 1611, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-flare-xlarge + rotate: false + xy: 3309, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-fortress-large + rotate: false + xy: 2245, 244 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-fortress-medium + rotate: false + xy: 3195, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-fortress-small + rotate: false + xy: 1149, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-fortress-tiny + rotate: false + xy: 1629, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-fortress-xlarge + rotate: false + xy: 3359, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-gamma-large + rotate: false + xy: 2287, 286 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-gamma-medium + rotate: false + xy: 3229, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-gamma-small + rotate: false + xy: 1149, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-gamma-tiny + rotate: false + xy: 1647, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-gamma-xlarge + rotate: false + xy: 3409, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-horizon-large + rotate: false + xy: 2329, 328 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-horizon-medium + rotate: false + xy: 3263, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-horizon-small + rotate: false + xy: 1175, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-horizon-tiny + rotate: false + xy: 1665, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-horizon-xlarge + rotate: false + xy: 3459, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-mace-large + rotate: false + xy: 2245, 202 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-mace-medium + rotate: false + xy: 3297, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-mace-small + rotate: false + xy: 1175, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-mace-tiny + rotate: false + xy: 1683, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-mace-xlarge + rotate: false + xy: 3509, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-mega-large + rotate: false + xy: 2287, 244 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-mega-medium + rotate: false + xy: 3331, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-mega-small + rotate: false + xy: 1201, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-mega-tiny + rotate: false + xy: 1701, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-mega-xlarge + rotate: false + xy: 3559, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-minke-large + rotate: false + xy: 2329, 286 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-minke-medium + rotate: false + xy: 3365, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-minke-small + rotate: false + xy: 1201, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-minke-tiny + rotate: false + xy: 1719, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-minke-xlarge + rotate: false + xy: 3609, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-mono-large + rotate: false + xy: 2371, 328 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-mono-medium + rotate: false + xy: 3399, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-mono-small + rotate: false + xy: 1227, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-mono-tiny + rotate: false + xy: 1737, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-mono-xlarge + rotate: false + xy: 3659, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-nova-large + rotate: false + xy: 2287, 202 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-nova-medium + rotate: false + xy: 3433, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-nova-small + rotate: false + xy: 1227, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-nova-tiny + rotate: false + xy: 1755, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-nova-xlarge + rotate: false + xy: 3709, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-poly-large + rotate: false + xy: 2329, 244 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-poly-medium + rotate: false + xy: 3467, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-poly-small + rotate: false + xy: 1253, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-poly-tiny + rotate: false + xy: 1773, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-poly-xlarge + rotate: false + xy: 3759, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-pulsar-large + rotate: false + xy: 2371, 286 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-pulsar-medium + rotate: false + xy: 3501, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-pulsar-small + rotate: false + xy: 1253, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-pulsar-tiny + rotate: false + xy: 1791, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-pulsar-xlarge + rotate: false + xy: 3809, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-quasar-large + rotate: false + xy: 2413, 328 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-quasar-medium + rotate: false + xy: 3535, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-quasar-small + rotate: false + xy: 1279, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-quasar-tiny + rotate: false + xy: 1809, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-quasar-xlarge + rotate: false + xy: 3859, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-risse-large + rotate: false + xy: 2329, 202 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-risse-medium + rotate: false + xy: 3569, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-risse-small + rotate: false + xy: 1279, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-risse-tiny + rotate: false + xy: 1827, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-risse-xlarge + rotate: false + xy: 3909, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-spiroct-large + rotate: false + xy: 2371, 244 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-spiroct-medium + rotate: false + xy: 3603, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-spiroct-small + rotate: false + xy: 1305, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-spiroct-tiny + rotate: false + xy: 1845, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-spiroct-xlarge + rotate: false + xy: 3959, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-zenith-large + rotate: false + xy: 2413, 286 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-zenith-medium + rotate: false + xy: 3637, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-zenith-small + rotate: false + xy: 1305, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-zenith-tiny + rotate: false + xy: 1863, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-zenith-xlarge + rotate: false + xy: 4009, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 whiteui rotate: false - xy: 845, 363 + xy: 845, 365 size: 3, 3 orig: 3, 3 offset: 0, 0 index: -1 window-empty rotate: false - xy: 4051, 363 + xy: 915, 105 size: 27, 61 split: 4, 4, 2, 2 orig: 27, 61 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 7169f2d113..82523b7c54 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/assets/sprites/sprites2.png b/core/assets/sprites/sprites2.png index d8d2495861..54a7288fc8 100644 Binary files a/core/assets/sprites/sprites2.png and b/core/assets/sprites/sprites2.png differ diff --git a/core/assets/sprites/sprites3.png b/core/assets/sprites/sprites3.png index 64ad51443a..39ce589d42 100644 Binary files a/core/assets/sprites/sprites3.png and b/core/assets/sprites/sprites3.png differ diff --git a/core/assets/sprites/sprites4.png b/core/assets/sprites/sprites4.png index 46a9c3cbf8..0b9c292c05 100644 Binary files a/core/assets/sprites/sprites4.png and b/core/assets/sprites/sprites4.png differ diff --git a/core/assets/sprites/sprites5.png b/core/assets/sprites/sprites5.png index 470ab4fd3b..7995912815 100644 Binary files a/core/assets/sprites/sprites5.png and b/core/assets/sprites/sprites5.png differ diff --git a/core/src/mindustry/ai/BaseAI.java b/core/src/mindustry/ai/BaseAI.java index 88e224db76..df2fc26302 100644 --- a/core/src/mindustry/ai/BaseAI.java +++ b/core/src/mindustry/ai/BaseAI.java @@ -25,7 +25,7 @@ public class BaseAI{ private static final float step = 5; private static final int attempts = 5; private static final float emptyChance = 0.01f; - private final static int timerStep = 0, timerSpawn = 1; + private static final int timerStep = 0, timerSpawn = 1; private static int correct = 0, incorrect = 0; diff --git a/core/src/mindustry/ai/BaseRegistry.java b/core/src/mindustry/ai/BaseRegistry.java index da6a11a562..98e4744da0 100644 --- a/core/src/mindustry/ai/BaseRegistry.java +++ b/core/src/mindustry/ai/BaseRegistry.java @@ -62,7 +62,7 @@ public class BaseRegistry{ //calculate averages if(tile.block instanceof Drill || tile.block instanceof Pump){ - Tmp.v1.add(tile.x*tilesize + tile.block.offset(), tile.y*tilesize + tile.block.offset()); + Tmp.v1.add(tile.x*tilesize + tile.block.offset, tile.y*tilesize + tile.block.offset); drills ++; } } diff --git a/core/src/mindustry/ai/BlockIndexer.java b/core/src/mindustry/ai/BlockIndexer.java index 46261c1c5f..5931068c48 100644 --- a/core/src/mindustry/ai/BlockIndexer.java +++ b/core/src/mindustry/ai/BlockIndexer.java @@ -22,7 +22,7 @@ import static mindustry.Vars.*; /** Class used for indexing special target blocks for AI. */ public class BlockIndexer{ /** Size of one quadrant. */ - private final static int quadrantSize = 16; + private static final int quadrantSize = 16; /** Set of all ores that are being scanned. */ private final ObjectSet scanOres = new ObjectSet<>(); @@ -181,7 +181,7 @@ public class BlockIndexer{ for(int y = -tileRange + ty; y <= tileRange + ty; y++){ if(!Mathf.within(x * tilesize, y * tilesize, wx, wy, range)) continue; - Building other = world.ent(x, y); + Building other = world.build(x, y); if(other == null) continue; @@ -247,7 +247,7 @@ public class BlockIndexer{ for(int tx = rx * quadrantSize; tx < (rx + 1) * quadrantSize && tx < world.width(); tx++){ for(int ty = ry * quadrantSize; ty < (ry + 1) * quadrantSize && ty < world.height(); ty++){ - Building e = world.ent(tx, ty); + Building e = world.build(tx, ty); if(e == null) continue; @@ -388,7 +388,7 @@ public class BlockIndexer{ outer: for(int x = quadrantX * quadrantSize; x < world.width() && x < (quadrantX + 1) * quadrantSize; x++){ for(int y = quadrantY * quadrantSize; y < world.height() && y < (quadrantY + 1) * quadrantSize; y++){ - Building result = world.ent(x, y); + Building result = world.build(x, y); //when a targetable block is found, mark this quadrant as occupied and stop searching if(result != null && result.team() == team){ bits.set(quadrantX, quadrantY); diff --git a/core/src/mindustry/ai/Pathfinder.java b/core/src/mindustry/ai/Pathfinder.java index fed6acd16f..222cc7df74 100644 --- a/core/src/mindustry/ai/Pathfinder.java +++ b/core/src/mindustry/ai/Pathfinder.java @@ -167,12 +167,12 @@ public class Pathfinder implements Runnable{ } } - public Tile getTargetTile(Tile tile, Team team, Position target){ + public @Nullable Tile getTargetTile(Tile tile, Team team, Position target){ return getTargetTile(tile, team, getTarget(target)); } /** Gets next tile to travel to. Main thread only. */ - public Tile getTargetTile(Tile tile, Team team, PathTarget target){ + public @Nullable Tile getTargetTile(Tile tile, Team team, PathTarget target){ if(tile == null) return null; if(fieldMap[team.id] == null){ diff --git a/core/src/mindustry/ai/types/BuilderAI.java b/core/src/mindustry/ai/types/BuilderAI.java index 68953a8d7b..a606592b26 100644 --- a/core/src/mindustry/ai/types/BuilderAI.java +++ b/core/src/mindustry/ai/types/BuilderAI.java @@ -69,7 +69,7 @@ public class BuilderAI extends AIController{ float length = circleLength <= 0.001f ? 1f : Mathf.clamp((unit.dst(target) - circleLength) / 100f, -1f, 1f); - vec.setLength(unit.type().speed * Time.delta() * length); + vec.setLength(unit.type().speed * Time.delta * length); if(length < -0.5f){ vec.rotate(180f); }else if(length < 0){ diff --git a/core/src/mindustry/ai/types/FlyingAI.java b/core/src/mindustry/ai/types/FlyingAI.java index a85a657fa3..e71de21f7e 100644 --- a/core/src/mindustry/ai/types/FlyingAI.java +++ b/core/src/mindustry/ai/types/FlyingAI.java @@ -61,7 +61,7 @@ public class FlyingAI extends AIController{ vec.rotate((circleLength - vec.len()) / circleLength * 180f); } - vec.setLength(speed * Time.delta()); + vec.setLength(speed * Time.delta); unit.moveAt(vec); } @@ -73,7 +73,7 @@ public class FlyingAI extends AIController{ float length = circleLength <= 0.001f ? 1f : Mathf.clamp((unit.dst(target) - circleLength) / 100f, -1f, 1f); - vec.setLength(unit.type().speed * Time.delta() * length); + vec.setLength(unit.type().speed * Time.delta * length); if(length < -0.5f){ vec.rotate(180f); }else if(length < 0){ @@ -95,7 +95,7 @@ public class FlyingAI extends AIController{ vec.setAngle(Mathf.slerpDelta(unit.vel().angle(), vec.angle(), 0.6f)); } - vec.setLength(unit.type().speed * Time.delta()); + vec.setLength(unit.type().speed * Time.delta); unit.moveAt(vec); } diff --git a/core/src/mindustry/ai/types/FormationAI.java b/core/src/mindustry/ai/types/FormationAI.java index 66ca6a9d21..884dc2150c 100644 --- a/core/src/mindustry/ai/types/FormationAI.java +++ b/core/src/mindustry/ai/types/FormationAI.java @@ -35,8 +35,10 @@ public class FormationAI extends AIController implements FormationMember{ if(leader.isShooting){ unit.aimLook(leader.aimX(), leader.aimY()); }else{ - if(!unit.moving()){ - unit.lookAt(unit.vel.angle()); + if(!leader.moving() || !unit.type().rotateShooting){ + if(unit.moving()){ + unit.lookAt(unit.vel.angle()); + } }else{ unit.lookAt(leader.rotation); } diff --git a/core/src/mindustry/async/TeamIndexProcess.java b/core/src/mindustry/async/TeamIndexProcess.java index f1d9a6324b..c4dbede3a7 100644 --- a/core/src/mindustry/async/TeamIndexProcess.java +++ b/core/src/mindustry/async/TeamIndexProcess.java @@ -4,6 +4,7 @@ import arc.math.geom.*; import mindustry.*; import mindustry.game.*; import mindustry.gen.*; +import mindustry.type.*; import java.util.*; @@ -11,6 +12,8 @@ import java.util.*; public class TeamIndexProcess implements AsyncProcess{ private QuadTree[] trees = new QuadTree[Team.all.length]; private int[] counts = new int[Team.all.length]; + private int[][] typeCounts = new int[Team.all.length][0]; + private int[][] activeCounts = new int[Team.all.length][0]; public QuadTree tree(Team team){ if(trees[team.id] == null) trees[team.id] = new QuadTree<>(Vars.world.getQuadBounds(new Rect())); @@ -22,8 +25,27 @@ public class TeamIndexProcess implements AsyncProcess{ return counts[team.id]; } - public void updateCount(Team team, int amount){ + public int countType(Team team, UnitType type){ + return typeCounts[team.id].length <= type.id ? 0 : typeCounts[team.id][type.id]; + } + + public int countActive(Team team, UnitType type){ + return activeCounts[team.id].length <= type.id ? 0 : activeCounts[team.id][type.id]; + } + + public void updateCount(Team team, UnitType type, int amount){ counts[team.id] += amount; + if(typeCounts[team.id].length <= type.id){ + typeCounts[team.id] = new int[Vars.content.units().size]; + } + typeCounts[team.id][type.id] += amount; + } + + public void updateActiveCount(Team team, UnitType type, int amount){ + if(activeCounts[team.id].length <= type.id){ + activeCounts[team.id] = new int[Vars.content.units().size]; + } + activeCounts[team.id][type.id] += amount; } @Override @@ -39,13 +61,18 @@ public class TeamIndexProcess implements AsyncProcess{ if(trees[team.id] != null){ trees[team.id].clear(); } + + Arrays.fill(typeCounts[team.id], 0); + Arrays.fill(activeCounts[team.id], 0); } Arrays.fill(counts, 0); for(Unit unit : Groups.unit){ tree(unit.team).insert(unit); - counts[unit.team.id] ++; + + updateCount(unit.team, unit.type(), 1); + if(!unit.deactivated) updateActiveCount(unit.team, unit.type(), 1); } } diff --git a/core/src/mindustry/audio/MusicControl.java b/core/src/mindustry/audio/MusicControl.java index c1bd7d0866..afb48a8d59 100644 --- a/core/src/mindustry/audio/MusicControl.java +++ b/core/src/mindustry/audio/MusicControl.java @@ -136,10 +136,10 @@ public class MusicControl{ silenced = false; }else if(current == music && music != null){ //fade in the playing track - fade = Mathf.clamp(fade + Time.delta()/finTime); + fade = Mathf.clamp(fade + Time.delta /finTime); }else if(current != null){ //fade out the current track - fade = Mathf.clamp(fade - Time.delta()/foutTime); + fade = Mathf.clamp(fade - Time.delta /foutTime); if(fade <= 0.01f){ //stop current track when it hits 0 volume diff --git a/core/src/mindustry/audio/SoundLoop.java b/core/src/mindustry/audio/SoundLoop.java index cfdf380753..99d6837251 100644 --- a/core/src/mindustry/audio/SoundLoop.java +++ b/core/src/mindustry/audio/SoundLoop.java @@ -27,9 +27,9 @@ public class SoundLoop{ }else{ //fade the sound in or out if(play){ - volume = Mathf.clamp(volume + fadeSpeed * Time.delta()); + volume = Mathf.clamp(volume + fadeSpeed * Time.delta); }else{ - volume = Mathf.clamp(volume - fadeSpeed * Time.delta()); + volume = Mathf.clamp(volume - fadeSpeed * Time.delta); if(volume <= 0.001f){ sound.stop(id); id = -1; diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index d18511a006..33a53969be 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1004,17 +1004,17 @@ public class Blocks implements ContentList{ rotaryPump = new Pump("rotary-pump"){{ requirements(Category.liquid, with(Items.copper, 70, Items.metaglass, 50, Items.silicon, 20, Items.titanium, 35)); - pumpAmount = 0.8f; - consumes.power(0.15f); + pumpAmount = 0.2f; + consumes.power(0.3f); liquidCapacity = 30f; hasPower = true; size = 2; }}; thermalPump = new Pump("thermal-pump"){{ - requirements(Category.liquid, with(Items.copper, 80, Items.metaglass, 70, Items.silicon, 30, Items.titanium, 40, Items.thorium, 35)); - pumpAmount = 1.5f; - consumes.power(0.30f); + requirements(Category.liquid, with(Items.copper, 80, Items.metaglass, 90, Items.silicon, 30, Items.titanium, 40, Items.thorium, 35)); + pumpAmount = 0.22f; + consumes.power(1.3f); liquidCapacity = 40f; hasPower = true; size = 3; @@ -1228,6 +1228,9 @@ public class Blocks implements ContentList{ rotateSpeed = 6f; warmupSpeed = 0.01f; + //more than the laser drill + liquidBoostIntensity = 1.8f; + consumes.power(3f); consumes.liquid(Liquids.water, 0.1f).boost(); }}; @@ -1284,6 +1287,8 @@ public class Blocks implements ContentList{ health = 1100; itemCapacity = 4000; size = 3; + + unitCapModifier = 8; }}; coreFoundation = new CoreBlock("core-foundation"){{ @@ -1293,6 +1298,8 @@ public class Blocks implements ContentList{ health = 2000; itemCapacity = 9000; size = 4; + + unitCapModifier = 16; }}; coreNucleus = new CoreBlock("core-nucleus"){{ @@ -1302,6 +1309,8 @@ public class Blocks implements ContentList{ health = 4000; itemCapacity = 13000; size = 5; + + unitCapModifier = 24; }}; vault = new StorageBlock("vault"){{ @@ -1411,7 +1420,6 @@ public class Blocks implements ContentList{ Liquids.cryofluid, Bullets.cryoShot, Liquids.oil, Bullets.oilShot ); - targetAir = false; size = 2; recoilAmount = 0f; reloadTime = 2f; @@ -1679,11 +1687,11 @@ public class Blocks implements ContentList{ //region units groundFactory = new UnitFactory("ground-factory"){{ - requirements(Category.units, with(Items.copper, 30, Items.lead, 70)); + requirements(Category.units, with(Items.copper, 50, Items.lead, 120, Items.silicon, 80)); plans = new UnitPlan[]{ - new UnitPlan(UnitTypes.dagger, 200f, with(Items.silicon, 10, Items.lead, 10)), - new UnitPlan(UnitTypes.crawler, 200f, with(Items.silicon, 10, Items.blastCompound, 10)), - new UnitPlan(UnitTypes.nova, 200f, with(Items.silicon, 20, Items.lead, 20, Items.titanium, 20)), + new UnitPlan(UnitTypes.dagger, 60f * 20, with(Items.silicon, 10, Items.lead, 10)), + new UnitPlan(UnitTypes.crawler, 60f * 15, with(Items.silicon, 10, Items.blastCompound, 10)), + new UnitPlan(UnitTypes.nova, 60f * 40, with(Items.silicon, 30, Items.lead, 20, Items.titanium, 20)), }; size = 3; consumes.power(1.2f); @@ -1692,8 +1700,8 @@ public class Blocks implements ContentList{ airFactory = new UnitFactory("air-factory"){{ requirements(Category.units, with(Items.copper, 30, Items.lead, 70)); plans = new UnitPlan[]{ - new UnitPlan(UnitTypes.flare, 200f, with(Items.silicon, 10)), - new UnitPlan(UnitTypes.mono, 200f, with(Items.silicon, 15, Items.lead, 15)), + new UnitPlan(UnitTypes.flare, 60f * 15, with(Items.silicon, 10)), + new UnitPlan(UnitTypes.mono, 60f * 35, with(Items.silicon, 30, Items.lead, 15)), }; size = 3; consumes.power(1.2f); @@ -1702,7 +1710,7 @@ public class Blocks implements ContentList{ navalFactory = new UnitFactory("naval-factory"){{ requirements(Category.units, with(Items.copper, 30, Items.lead, 70)); plans = new UnitPlan[]{ - new UnitPlan(UnitTypes.risse, 200f, with(Items.silicon, 20, Items.metaglass, 25)), + new UnitPlan(UnitTypes.risse, 60f * 30f, with(Items.silicon, 20, Items.metaglass, 25)), }; size = 3; requiresWater = true; @@ -1716,7 +1724,7 @@ public class Blocks implements ContentList{ consumes.power(3f); consumes.items(with(Items.silicon, 40, Items.graphite, 40)); - constructTime = 60f * 5f; + constructTime = 60f * 10f; upgrades = new UnitType[][]{ {UnitTypes.nova, UnitTypes.quasar}, @@ -1735,7 +1743,7 @@ public class Blocks implements ContentList{ consumes.power(6f); consumes.items(with(Items.silicon, 130, Items.titanium, 80, Items.metaglass, 30)); - constructTime = 60f * 15f; + constructTime = 60f * 30f; upgrades = new UnitType[][]{ {UnitTypes.horizon, UnitTypes.zenith}, @@ -1755,7 +1763,8 @@ public class Blocks implements ContentList{ consumes.items(with(Items.silicon, 200, Items.titanium, 200, Items.surgealloy, 240)); consumes.liquid(Liquids.cryofluid, 1f); - constructTime = 60f * 60f; + constructTime = 60f * 60f * 1.5f; + liquidCapacity = 30f; upgrades = new UnitType[][]{ {UnitTypes.zenith, UnitTypes.antumbra}, @@ -1770,7 +1779,8 @@ public class Blocks implements ContentList{ consumes.items(with(Items.silicon, 300, Items.plastanium, 300, Items.surgealloy, 300, Items.phasefabric, 250)); consumes.liquid(Liquids.cryofluid, 3f); - constructTime = 60f * 60f * 3; + constructTime = 60f * 60f * 4; + liquidCapacity = 60f; upgrades = new UnitType[][]{ {UnitTypes.antumbra, UnitTypes.eclipse}, diff --git a/core/src/mindustry/content/Bullets.java b/core/src/mindustry/content/Bullets.java index e41674b754..6a002dd42a 100644 --- a/core/src/mindustry/content/Bullets.java +++ b/core/src/mindustry/content/Bullets.java @@ -416,18 +416,18 @@ public class Bullets implements ContentList{ @Override public void update(Bullet b){ - if(Mathf.chance(0.04 * Time.delta())){ + if(Mathf.chance(0.04 * Time.delta)){ Tile tile = world.tileWorld(b.x, b.y); if(tile != null){ Fires.create(tile); } } - if(Mathf.chance(0.1 * Time.delta())){ + if(Mathf.chance(0.1 * Time.delta)){ Fx.fireballsmoke.at(b.x, b.y); } - if(Mathf.chance(0.1 * Time.delta())){ + if(Mathf.chance(0.1 * Time.delta)){ Fx.ballfire.at(b.x, b.y); } } diff --git a/core/src/mindustry/content/Fx.java b/core/src/mindustry/content/Fx.java index 0f2a2a69b5..6cbcc79268 100644 --- a/core/src/mindustry/content/Fx.java +++ b/core/src/mindustry/content/Fx.java @@ -38,6 +38,14 @@ public class Fx{ }), + unitCapKill = new Effect(80f, e -> { + color(Color.scarlet); + alpha(e.fout(Interp.pow4Out)); + + float size = 10f + e.fout(Interp.pow10In) * 25f; + Draw.rect(Icon.warning.getRegion(), e.x, e.y, size, size); + }), + unitControl = new Effect(30f, e -> { if(!(e.data instanceof Unit)) return; diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 7fb7bfe67f..aa80b61182 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -349,7 +349,7 @@ public class UnitTypes implements ContentList{ despawnEffect = Fx.none; width = 0.54f; lifetime = 35f; - knockback = -1f; + knockback = -1.2f; }}; }}); @@ -368,7 +368,7 @@ public class UnitTypes implements ContentList{ despawnEffect = Fx.none; width = 0.4f; lifetime = 25f; - knockback = -0.5f; + knockback = -0.6f; }}; }}); }}; @@ -569,6 +569,8 @@ public class UnitTypes implements ContentList{ mineTier = 1; mineSpeed = 2.5f; + //no weapon, mining only + /* weapons.add(new Weapon(){{ y = 1.5f; x = 0f; @@ -582,7 +584,7 @@ public class UnitTypes implements ContentList{ bullet = new HealBulletType(5.2f, 10){{ healPercent = 4f; }}; - }}); + }});*/ }}; poly = new UnitType("poly"){{ @@ -678,6 +680,8 @@ public class UnitTypes implements ContentList{ immunities = ObjectSet.with(StatusEffects.wet); trailLength = 20; + armor = 2f; + weapons.add(new Weapon("mount-weapon"){{ reload = 12f; x = 4f; @@ -796,7 +800,7 @@ public class UnitTypes implements ContentList{ hitEffect = Fx.massiveExplosion; knockback = 1.5f; lifetime = 140f; - height = 17f; + height = 15.5f; width = 15f; collidesTiles = false; ammoMultiplier = 4f; diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index 1fd8a248da..2520c18b70 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -416,19 +416,12 @@ public class Control implements ApplicationListener, Loadable{ //just a regular reminder if(!OS.prop("user.name").equals("anuke") && !OS.hasEnv("iknowwhatimdoing")){ - if(mobile){ - Runnable[] run = {null}; - run[0] = () -> { - ui.showInfo("[scarlet]6.0 doesn't work on mobile.[] Don't play it.", run[0]); - }; - }else{ - ui.showInfo("[scarlet]6.0 is not supposed to be played.[] Go do something else."); - } + ui.showInfo("[scarlet]6.0 is not supposed to be played.[] Go do something else."); } //play tutorial on stop if(!settings.getBool("playedtutorial", false)){ - Core.app.post(() -> Core.app.post(this::playTutorial)); + //Core.app.post(() -> Core.app.post(this::playTutorial)); } //display UI scale changed dialog @@ -449,7 +442,7 @@ public class Control implements ApplicationListener, Loadable{ if(countdown[0] <= 0){ exit.run(); } - return Core.bundle.format("uiscale.reset", (int)((countdown[0] -= Time.delta()) / 60f)); + return Core.bundle.format("uiscale.reset", (int)((countdown[0] -= Time.delta) / 60f)); }).pad(10f).expand().center(); dialog.buttons.defaults().size(200f, 60f); @@ -486,7 +479,6 @@ public class Control implements ApplicationListener, Loadable{ music.update(); loops.update(); - Time.updateGlobal(); if(Core.input.keyTap(Binding.fullscreen)){ boolean full = settings.getBool("fullscreen"); @@ -528,6 +520,7 @@ public class Control implements ApplicationListener, Loadable{ } }else{ + //this runs in the menu if(!state.isPaused()){ Time.update(); } diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index 82afbd483f..1371ec72a0 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -244,7 +244,7 @@ public class Logic implements ApplicationListener{ for(WeatherEntry entry : state.rules.weather){ //update cooldown - entry.cooldown -= Time.delta(); + entry.cooldown -= Time.delta; //create new event when not active if(entry.cooldown < 0 && !entry.weather.isActive()){ @@ -356,7 +356,7 @@ public class Logic implements ApplicationListener{ if(state.rules.waves && state.rules.waveTimer && !state.gameOver){ if(!isWaitingWave()){ - state.wavetime = Math.max(state.wavetime - Time.delta(), 0); + state.wavetime = Math.max(state.wavetime - Time.delta, 0); } } diff --git a/core/src/mindustry/core/NetClient.java b/core/src/mindustry/core/NetClient.java index 1cbfb8bfb7..01f663f8ab 100644 --- a/core/src/mindustry/core/NetClient.java +++ b/core/src/mindustry/core/NetClient.java @@ -28,8 +28,8 @@ import java.util.zip.*; import static mindustry.Vars.*; public class NetClient implements ApplicationListener{ - private final static float dataTimeout = 60 * 18; - private final static float playerSyncTime = 2; + private static final float dataTimeout = 60 * 18; + private static final float playerSyncTime = 2; public final static float viewScale = 2f; private long ping; @@ -476,7 +476,7 @@ public class NetClient implements ApplicationListener{ }else if(!connecting){ net.disconnect(); }else{ //...must be connecting - timeoutTime += Time.delta(); + timeoutTime += Time.delta; if(timeoutTime > dataTimeout){ Log.err("Failed to load data!"); ui.loadfrag.hide(); diff --git a/core/src/mindustry/core/NetServer.java b/core/src/mindustry/core/NetServer.java index 5c6b403773..42dfb92edb 100644 --- a/core/src/mindustry/core/NetServer.java +++ b/core/src/mindustry/core/NetServer.java @@ -34,13 +34,13 @@ import static arc.util.Log.*; import static mindustry.Vars.*; public class NetServer implements ApplicationListener{ - private final static int maxSnapshotSize = 430, timerBlockSync = 0; - private final static float serverSyncTime = 12, blockSyncTime = 60 * 8; - private final static FloatBuffer fbuffer = FloatBuffer.allocate(20); - private final static Vec2 vector = new Vec2(); - private final static Rect viewport = new Rect(); + private static final int maxSnapshotSize = 430, timerBlockSync = 0; + private static final float serverSyncTime = 12, blockSyncTime = 60 * 8; + private static final FloatBuffer fbuffer = FloatBuffer.allocate(20); + private static final Vec2 vector = new Vec2(); + private static final Rect viewport = new Rect(); /** If a player goes away of their server-side coordinates by this distance, they get teleported back. */ - private final static float correctDist = 16f; + private static final float correctDist = 16f; public final Administration admins = new Administration(); public final CommandHandler clientCommands = new CommandHandler("/"); diff --git a/core/src/mindustry/core/Renderer.java b/core/src/mindustry/core/Renderer.java index a60dbbefc6..5b0b0a00ef 100644 --- a/core/src/mindustry/core/Renderer.java +++ b/core/src/mindustry/core/Renderer.java @@ -63,7 +63,7 @@ public class Renderer implements ApplicationListener{ camerascale = Mathf.lerpDelta(camerascale, targetscale, 0.1f); if(landTime > 0){ - landTime -= Time.delta(); + landTime -= Time.delta; landscale = Interp.pow5In.apply(minZoomScl, Scl.scl(4f), 1f - landTime / Fx.coreLand.lifetime); camerascale = landscale; weatherAlpha = 0f; @@ -172,8 +172,8 @@ public class Renderer implements ApplicationListener{ if(shaketime > 0){ float intensity = shakeIntensity * (settings.getInt("screenshake", 4) / 4f) * scale; camera.position.add(Mathf.range(intensity), Mathf.range(intensity)); - shakeIntensity -= 0.25f * Time.delta(); - shaketime -= Time.delta(); + shakeIntensity -= 0.25f * Time.delta; + shaketime -= Time.delta; shakeIntensity = Mathf.clamp(shakeIntensity, 0f, 100f); }else{ shakeIntensity = 0f; diff --git a/core/src/mindustry/core/World.java b/core/src/mindustry/core/World.java index fb9d5585eb..09d70ed31a 100644 --- a/core/src/mindustry/core/World.java +++ b/core/src/mindustry/core/World.java @@ -110,14 +110,14 @@ public class World{ } @Nullable - public Building ent(int x, int y){ + public Building build(int x, int y){ Tile tile = tile(x, y); if(tile == null) return null; return tile.build; } @Nullable - public Building ent(int pos){ + public Building build(int pos){ Tile tile = tile(pos); if(tile == null) return null; return tile.build; @@ -134,8 +134,8 @@ public class World{ } @Nullable - public Building entWorld(float x, float y){ - return ent(Math.round(x / tilesize), Math.round(y / tilesize)); + public Building buildWorld(float x, float y){ + return build(Math.round(x / tilesize), Math.round(y / tilesize)); } public int toTile(float coord){ diff --git a/core/src/mindustry/editor/MapRenderer.java b/core/src/mindustry/editor/MapRenderer.java index 91345b37ea..63c27ade24 100644 --- a/core/src/mindustry/editor/MapRenderer.java +++ b/core/src/mindustry/editor/MapRenderer.java @@ -112,14 +112,14 @@ public class MapRenderer implements Disposable{ if(wall.rotate){ mesh.draw(idxWall, region, - wx * tilesize + wall.offset(), wy * tilesize + wall.offset(), + wx * tilesize + wall.offset, wy * tilesize + wall.offset, region.getWidth() * Draw.scl, region.getHeight() * Draw.scl, tile.rotdeg() - 90); }else{ float width = region.getWidth() * Draw.scl, height = region.getHeight() * Draw.scl; mesh.draw(idxWall, region, - wx * tilesize + wall.offset() + (tilesize - width) / 2f, - wy * tilesize + wall.offset() + (tilesize - height) / 2f, + wx * tilesize + wall.offset + (tilesize - width) / 2f, + wy * tilesize + wall.offset + (tilesize - height) / 2f, width, height); } }else{ diff --git a/core/src/mindustry/editor/OperationStack.java b/core/src/mindustry/editor/OperationStack.java index 623bd1a3cd..0558de14bc 100755 --- a/core/src/mindustry/editor/OperationStack.java +++ b/core/src/mindustry/editor/OperationStack.java @@ -3,7 +3,7 @@ package mindustry.editor; import arc.struct.Seq; public class OperationStack{ - private final static int maxSize = 10; + private static final int maxSize = 10; private Seq stack = new Seq<>(); private int index = 0; diff --git a/core/src/mindustry/editor/WaveInfoDialog.java b/core/src/mindustry/editor/WaveInfoDialog.java index 56ecfa9de3..7f1867f92a 100644 --- a/core/src/mindustry/editor/WaveInfoDialog.java +++ b/core/src/mindustry/editor/WaveInfoDialog.java @@ -25,7 +25,7 @@ import static mindustry.Vars.*; import static mindustry.game.SpawnGroup.never; public class WaveInfoDialog extends BaseDialog{ - private final static int displayed = 20; + private static final int displayed = 20; private Seq groups = new Seq<>(); private Table table, preview; @@ -104,7 +104,7 @@ public class WaveInfoDialog extends BaseDialog{ m.button("-", () -> { }).update(t -> { if(t.getClickListener().isPressed()){ - updateTimer += Time.delta(); + updateTimer += Time.delta; if(updateTimer >= updatePeriod){ start = Math.max(start - 1, 0); updateTimer = 0f; @@ -118,7 +118,7 @@ public class WaveInfoDialog extends BaseDialog{ m.button("+", () -> { }).update(t -> { if(t.getClickListener().isPressed()){ - updateTimer += Time.delta(); + updateTimer += Time.delta; if(updateTimer >= updatePeriod){ start++; updateTimer = 0f; diff --git a/core/src/mindustry/entities/Damage.java b/core/src/mindustry/entities/Damage.java index 7e2f977871..a8d743a320 100644 --- a/core/src/mindustry/entities/Damage.java +++ b/core/src/mindustry/entities/Damage.java @@ -86,7 +86,7 @@ public class Damage{ collidedBlocks.clear(); tr.trns(angle, length); Intc2 collider = (cx, cy) -> { - Building tile = world.ent(cx, cy); + Building tile = world.build(cx, cy); if(tile != null && !collidedBlocks.contains(tile.pos()) && tile.team() != team && tile.collide(hitter)){ tile.collision(hitter); collidedBlocks.add(tile.pos()); @@ -159,7 +159,7 @@ public class Damage{ tmpBuilding = null; world.raycastEachWorld(x, y, x + tr.x, y + tr.y, (cx, cy) -> { - Building tile = world.ent(cx, cy); + Building tile = world.build(cx, cy); if(tile != null && tile.team != hitter.team){ tmpBuilding = tile; //TODO return tile diff --git a/core/src/mindustry/entities/Effects.java b/core/src/mindustry/entities/Effects.java index c66aaabcf0..ed4cca412f 100644 --- a/core/src/mindustry/entities/Effects.java +++ b/core/src/mindustry/entities/Effects.java @@ -62,6 +62,9 @@ public class Effects{ public static void decal(TextureRegion region, float x, float y, float rotation, float lifetime, Color color){ if(headless || region == null || !Core.atlas.isFound(region)) return; + Tile tile = world.tileWorld(x, y); + if(tile == null || tile.floor().isLiquid) return; + Decal decal = Decal.create(); decal.set(x, y); decal.rotation(rotation); @@ -74,22 +77,15 @@ public class Effects{ public static void scorch(float x, float y, int size){ if(headless) return; - Tile tile = world.tileWorld(x, y); - if(tile == null || tile.floor().isLiquid) return; - size = Mathf.clamp(size, 0, 9); TextureRegion region = Core.atlas.find("scorch-" + size + "-" + Mathf.random(2)); decal(region, x, y, Mathf.random(4) * 90, 3600, Pal.rubble); - } public static void rubble(float x, float y, int blockSize){ if(headless) return; - Tile tile = world.tileWorld(x, y); - if(tile == null || tile.floor().isLiquid) return; - TextureRegion region = Core.atlas.find("rubble-" + blockSize + "-" + (Core.atlas.has("rubble-" + blockSize + "-1") ? Mathf.random(0, 1) : "0")); decal(region, x, y, Mathf.random(4) * 90, 3600, Pal.rubble); } diff --git a/core/src/mindustry/entities/Fires.java b/core/src/mindustry/entities/Fires.java index 6d329e8f50..e24d34dac4 100644 --- a/core/src/mindustry/entities/Fires.java +++ b/core/src/mindustry/entities/Fires.java @@ -52,9 +52,9 @@ public class Fires{ public static void extinguish(Tile tile, float intensity){ if(tile != null && map.containsKey(tile.pos())){ Fire fire = map.get(tile.pos()); - fire.time(fire.time() + intensity * Time.delta()); + fire.time(fire.time + intensity * Time.delta); Fx.steam.at(fire); - if(fire.time() >= fire.lifetime()){ + if(fire.time >= fire.lifetime){ Events.fire(Trigger.fireExtinguish); } } diff --git a/core/src/mindustry/entities/Predict.java b/core/src/mindustry/entities/Predict.java index ef2cd43ad0..03c41e5778 100644 --- a/core/src/mindustry/entities/Predict.java +++ b/core/src/mindustry/entities/Predict.java @@ -24,8 +24,8 @@ public class Predict{ * @return the intercept location */ public static Vec2 intercept(float srcx, float srcy, float dstx, float dsty, float dstvx, float dstvy, float v){ - dstvx /= Time.delta(); - dstvy /= Time.delta(); + dstvx /= Time.delta; + dstvy /= Time.delta; float tx = dstx - srcx, ty = dsty - srcy; @@ -58,8 +58,8 @@ public class Predict{ ddy += ((Hitboxc)dst).deltaY(); } if(src instanceof Hitboxc){ - ddx -= ((Hitboxc)src).deltaX()/(Time.delta()); - ddy -= ((Hitboxc)src).deltaY()/(Time.delta()); + ddx -= ((Hitboxc)src).deltaX()/(Time.delta); + ddy -= ((Hitboxc)src).deltaY()/(Time.delta); } return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), ddx, ddy, v); } @@ -68,7 +68,7 @@ public class Predict{ * See {@link #intercept(float, float, float, float, float, float, float)}. */ public static Vec2 intercept(Hitboxc src, Hitboxc dst, float v){ - return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), dst.deltaX() - src.deltaX()/(2f*Time.delta()), dst.deltaY() - src.deltaX()/(2f*Time.delta()), v); + return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), dst.deltaX() - src.deltaX()/(2f* Time.delta), dst.deltaY() - src.deltaX()/(2f* Time.delta), v); } private static Vec2 quad(float a, float b, float c){ diff --git a/core/src/mindustry/entities/Units.java b/core/src/mindustry/entities/Units.java index 3948c608c5..d32030775f 100644 --- a/core/src/mindustry/entities/Units.java +++ b/core/src/mindustry/entities/Units.java @@ -6,6 +6,7 @@ import mindustry.annotations.Annotations.*; import mindustry.content.*; import mindustry.game.*; import mindustry.gen.*; +import mindustry.type.*; import mindustry.world.*; import static mindustry.Vars.*; @@ -29,11 +30,15 @@ public class Units{ } /** @return whether a new instance of a unit of this team can be created. */ - public static boolean canCreate(Team team){ - return teamIndex.count(team) < getCap(team); + public static boolean canCreate(Team team, UnitType type){ + return teamIndex.countType(team, type) < getCap(team); } public static int getCap(Team team){ + //wave team has no cap + if((team == state.rules.waveTeam && state.rules.waves) || (state.isCampaign() && team == state.rules.waveTeam)){ + return Integer.MAX_VALUE; + } return state.rules.unitCap + indexer.getExtraUnits(team); } diff --git a/core/src/mindustry/entities/abilities/ForceFieldAbility.java b/core/src/mindustry/entities/abilities/ForceFieldAbility.java index 57841d6886..bdfa3a9cb5 100644 --- a/core/src/mindustry/entities/abilities/ForceFieldAbility.java +++ b/core/src/mindustry/entities/abilities/ForceFieldAbility.java @@ -50,7 +50,7 @@ public class ForceFieldAbility implements Ability{ @Override public void update(Unit unit){ if(unit.shield < max){ - unit.shield += Time.delta() * regen; + unit.shield += Time.delta * regen; } if(unit.shield > 0){ diff --git a/core/src/mindustry/entities/abilities/HealFieldAbility.java b/core/src/mindustry/entities/abilities/HealFieldAbility.java index df3903ffa5..3e12e96963 100644 --- a/core/src/mindustry/entities/abilities/HealFieldAbility.java +++ b/core/src/mindustry/entities/abilities/HealFieldAbility.java @@ -22,7 +22,7 @@ public class HealFieldAbility implements Ability{ @Override public void update(Unit unit){ - unit.timer1 += Time.delta(); + unit.timer1 += Time.delta; if(unit.timer1 >= reload){ wasHealed = false; diff --git a/core/src/mindustry/entities/abilities/ShieldFieldAbility.java b/core/src/mindustry/entities/abilities/ShieldFieldAbility.java index 15f9fc9147..f7726e8e92 100644 --- a/core/src/mindustry/entities/abilities/ShieldFieldAbility.java +++ b/core/src/mindustry/entities/abilities/ShieldFieldAbility.java @@ -23,7 +23,7 @@ public class ShieldFieldAbility implements Ability{ @Override public void update(Unit unit){ - unit.timer1 += Time.delta(); + unit.timer1 += Time.delta; if(unit.timer1 >= reload){ applied = false; diff --git a/core/src/mindustry/entities/abilities/StatusFieldAbility.java b/core/src/mindustry/entities/abilities/StatusFieldAbility.java index ad7bef4b12..641e068a0f 100644 --- a/core/src/mindustry/entities/abilities/StatusFieldAbility.java +++ b/core/src/mindustry/entities/abilities/StatusFieldAbility.java @@ -24,7 +24,7 @@ public class StatusFieldAbility implements Ability{ @Override public void update(Unit unit){ - unit.timer2 += Time.delta(); + unit.timer2 += Time.delta; if(unit.timer2 >= reload){ diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index 460aa9608c..5977a9ed22 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -196,7 +196,7 @@ public abstract class BulletType extends Content{ } if(weaveMag > 0){ - b.vel.rotate(Mathf.sin(Mathf.randomSeed(b.id, 10f) + b.time, weaveScale, weaveMag) * Time.delta()); + b.vel.rotate(Mathf.sin(Mathf.randomSeed(b.id, 10f) + b.time, weaveScale, weaveMag) * Time.delta); } if(trailChance > 0){ @@ -241,7 +241,7 @@ public abstract class BulletType extends Content{ bullet.owner = owner; bullet.team = team; bullet.vel.trns(angle, speed * velocityScl); - bullet.set(x - bullet.vel.x * Time.delta(), y - bullet.vel.y * Time.delta()); + bullet.set(x - bullet.vel.x * Time.delta, y - bullet.vel.y * Time.delta); bullet.lifetime = lifetime * lifetimeScl; bullet.data = data; bullet.drag = drag; diff --git a/core/src/mindustry/entities/comp/BuilderComp.java b/core/src/mindustry/entities/comp/BuilderComp.java index b518906f67..2ea4da78fe 100644 --- a/core/src/mindustry/entities/comp/BuilderComp.java +++ b/core/src/mindustry/entities/comp/BuilderComp.java @@ -114,9 +114,9 @@ abstract class BuilderComp implements Unitc{ BuildEntity entity = tile.bc(); if(current.breaking){ - entity.deconstruct(base(), core, 1f / entity.buildCost * Time.delta() * type().buildSpeed * state.rules.buildSpeedMultiplier); + entity.deconstruct(base(), core, 1f / entity.buildCost * Time.delta * type().buildSpeed * state.rules.buildSpeedMultiplier); }else{ - if(entity.construct(base(), core, 1f / entity.buildCost * Time.delta() * type().buildSpeed * state.rules.buildSpeedMultiplier, current.hasConfig)){ + if(entity.construct(base(), core, 1f / entity.buildCost * Time.delta * type().buildSpeed * state.rules.buildSpeedMultiplier, current.hasConfig)){ if(current.hasConfig){ Call.tileConfig(null, tile.build, current.config); } diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index df71b5b800..62e14c2b37 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -201,14 +201,14 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, } public Building nearby(int dx, int dy){ - return world.ent(tile.x + dx, tile.y + dy); + return world.build(tile.x + dx, tile.y + dy); } public Building nearby(int rotation){ - if(rotation == 0) return world.ent(tile.x + 1, tile.y); - if(rotation == 1) return world.ent(tile.x, tile.y + 1); - if(rotation == 2) return world.ent(tile.x - 1, tile.y); - if(rotation == 3) return world.ent(tile.x, tile.y - 1); + if(rotation == 0) return world.build(tile.x + 1, tile.y); + if(rotation == 1) return world.build(tile.x, tile.y + 1); + if(rotation == 2) return world.build(tile.x - 1, tile.y); + if(rotation == 3) return world.build(tile.x, tile.y - 1); return null; } @@ -290,7 +290,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, /** Scaled delta. */ public float delta(){ - return Time.delta() * timeScale; + return Time.delta * timeScale; } /** Efficiency * delta. */ @@ -305,7 +305,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, /** Call when nothing is happening to the entity. This increments the internal sleep timer. */ public void sleep(){ - sleepTime += Time.delta(); + sleepTime += Time.delta; if(!sleeping && sleepTime >= timeToSleep){ remove(); sleeping = true; @@ -518,14 +518,14 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, Liquid other = next.liquids().current(); if((other.flammability > 0.3f && liquid.temperature > 0.7f) || (liquid.flammability > 0.3f && other.temperature > 0.7f)){ - damage(1 * Time.delta()); - next.damage(1 * Time.delta()); - if(Mathf.chance(0.1 * Time.delta())){ + damage(1 * Time.delta); + next.damage(1 * Time.delta); + if(Mathf.chance(0.1 * Time.delta)){ Fx.fire.at(fx, fy); } }else if((liquid.temperature > 0.7f && other.temperature < 0.55f) || (other.temperature > 0.7f && liquid.temperature < 0.55f)){ - liquids.remove(liquid, Math.min(liquids.get(liquid), 0.7f * Time.delta())); - if(Mathf.chance(0.2f * Time.delta())){ + liquids.remove(liquid, Math.min(liquids.get(liquid), 0.7f * Time.delta)); + if(Mathf.chance(0.2f * Time.delta)){ Fx.steam.at(fx, fy); } } @@ -539,6 +539,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, return base(); } + public @Nullable Payload getPayload(){ + return null; + } + /** Tries to take the payload. Returns null if no payload is present. */ public @Nullable Payload takePayload(){ return null; @@ -793,7 +797,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, int range = 10; tempTiles.clear(); Geometry.circle(tileX(), tileY(), range, (x, y) -> { - Building other = world.ent(x, y); + Building other = world.build(x, y); if(other != null && other.block instanceof PowerNode && ((PowerNode)other.block).linkValid(other, base()) && !PowerNode.insulated(other, base()) && !other.proximity().contains(this.base()) && !(block.outputsPower && proximity.contains(p -> p.power() != null && p.power().graph == other.power().graph))){ @@ -922,60 +926,63 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, table.row(); - table.table(bars -> { - bars.defaults().growX().height(18f).pad(4); + //only display everything else if the team is the same + if(team == player.team()){ + table.table(bars -> { + bars.defaults().growX().height(18f).pad(4); - displayBars(bars); - }).growX(); - table.row(); - table.table(this::displayConsumption).growX(); + displayBars(bars); + }).growX(); + table.row(); + table.table(this::displayConsumption).growX(); - boolean displayFlow = (block.category == Category.distribution || block.category == Category.liquid) && Core.settings.getBool("flow"); + boolean displayFlow = (block.category == Category.distribution || block.category == Category.liquid) && Core.settings.getBool("flow"); - if(displayFlow){ - String ps = " " + StatUnit.perSecond.localized(); + if(displayFlow){ + String ps = " " + StatUnit.perSecond.localized(); - if(items != null){ - table.row(); - table.left(); - table.table(l -> { - Bits current = new Bits(); + if(items != null){ + table.row(); + table.left(); + table.table(l -> { + Bits current = new Bits(); - Runnable rebuild = () -> { - l.clearChildren(); + Runnable rebuild = () -> { + l.clearChildren(); + l.left(); + for(Item item : content.items()){ + if(items.hasFlowItem(item)){ + l.image(item.icon(Cicon.small)).padRight(3f); + l.label(() -> items.getFlowRate(item) < 0 ? "..." : Strings.fixed(items.getFlowRate(item), 1) + ps).color(Color.lightGray); + l.row(); + } + } + }; + + rebuild.run(); + l.update(() -> { + for(Item item : content.items()){ + if(items.hasFlowItem(item) && !current.get(item.id)){ + current.set(item.id); + rebuild.run(); + } + } + }); + }).left(); + } + + if(liquids != null){ + table.row(); + table.table(l -> { l.left(); - for(Item item : content.items()){ - if(items.hasFlowItem(item)){ - l.image(item.icon(Cicon.small)).padRight(3f); - l.label(() -> items.getFlowRate(item) < 0 ? "..." : Strings.fixed(items.getFlowRate(item), 1) + ps).color(Color.lightGray); - l.row(); - } - } - }; - - rebuild.run(); - l.update(() -> { - for(Item item : content.items()){ - if(items.hasFlowItem(item) && !current.get(item.id)){ - current.set(item.id); - rebuild.run(); - } - } - }); - }).left(); + l.image(() -> liquids.current().icon(Cicon.small)).padRight(3f); + l.label(() -> liquids.getFlowRate() < 0 ? "..." : Strings.fixed(liquids.getFlowRate(), 2) + ps).color(Color.lightGray); + }).left(); + } } - if(liquids != null){ - table.row(); - table.table(l -> { - l.left(); - l.image(() -> liquids.current().icon(Cicon.small)).padRight(3f); - l.label(() -> liquids.getFlowRate() < 0 ? "..." : Strings.fixed(liquids.getFlowRate(), 2) + ps).color(Color.lightGray); - }); - } + table.marginBottom(-5); } - - table.marginBottom(-5); } public void displayConsumption(Table table){ @@ -1061,7 +1068,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, Point2[] nearby = Edges.getEdges(block.size); for(Point2 point : nearby){ - Building other = world.ent(tile.x + point.x, tile.y + point.y); + Building other = world.build(tile.x + point.x, tile.y + point.y); //remove this tile from all nearby tile's proximities if(other != null){ tmpTiles.add(other); @@ -1080,7 +1087,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, Point2[] nearby = Edges.getEdges(block.size); for(Point2 point : nearby){ - Building other = world.ent(tile.x + point.x, tile.y + point.y); + Building other = world.build(tile.x + point.x, tile.y + point.y); if(other == null || !(other.tile.interactable(team))) continue; @@ -1171,7 +1178,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, @Final @Override public void update(){ - timeScaleDuration -= Time.delta(); + timeScaleDuration -= Time.delta; if(timeScaleDuration <= 0f || !block.canOverdrive){ timeScale = 1f; } diff --git a/core/src/mindustry/entities/comp/BulletComp.java b/core/src/mindustry/entities/comp/BulletComp.java index 3b0be13cd7..c94216c923 100644 --- a/core/src/mindustry/entities/comp/BulletComp.java +++ b/core/src/mindustry/entities/comp/BulletComp.java @@ -111,7 +111,7 @@ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Draw if(type.collidesTiles && type.collides && type.collidesGround){ world.raycastEach(world.toTile(lastX()), world.toTile(lastY()), tileX(), tileY(), (x, y) -> { - Building tile = world.ent(x, y); + Building tile = world.build(x, y); if(tile == null) return false; if(tile.collide(base()) && type.collides(base(), tile) && !tile.dead() && (type.collidesTeam || tile.team != team)){ diff --git a/core/src/mindustry/entities/comp/FireComp.java b/core/src/mindustry/entities/comp/FireComp.java index 74f5199ab6..075a96416b 100644 --- a/core/src/mindustry/entities/comp/FireComp.java +++ b/core/src/mindustry/entities/comp/FireComp.java @@ -26,19 +26,19 @@ abstract class FireComp implements Timedc, Posc, Firec{ @Override public void update(){ - if(Mathf.chance(0.1 * Time.delta())){ + if(Mathf.chance(0.1 * Time.delta)){ Fx.fire.at(x + Mathf.range(4f), y + Mathf.range(4f)); } - if(Mathf.chance(0.05 * Time.delta())){ + if(Mathf.chance(0.05 * Time.delta)){ Fx.fireSmoke.at(x + Mathf.range(4f), y + Mathf.range(4f)); } - if(Mathf.chance(0.001 * Time.delta())){ + if(Mathf.chance(0.001 * Time.delta)){ Sounds.fire.at(this); } - time = Mathf.clamp(time + Time.delta(), 0, lifetime()); + time = Mathf.clamp(time + Time.delta, 0, lifetime()); if(Vars.net.client()){ return; @@ -55,7 +55,7 @@ abstract class FireComp implements Timedc, Posc, Firec{ float flammability = baseFlammability + puddleFlammability; if(!damage && flammability <= 0){ - time += Time.delta() * 8; + time += Time.delta * 8; } if(baseFlammability < 0 || block != tile.block()){ @@ -64,20 +64,20 @@ abstract class FireComp implements Timedc, Posc, Firec{ } if(damage){ - lifetime += Mathf.clamp(flammability / 8f, 0f, 0.6f) * Time.delta(); + lifetime += Mathf.clamp(flammability / 8f, 0f, 0.6f) * Time.delta; } - if(flammability > 1f && Mathf.chance(spreadChance * Time.delta() * Mathf.clamp(flammability / 5f, 0.3f, 2f))){ + if(flammability > 1f && Mathf.chance(spreadChance * Time.delta * Mathf.clamp(flammability / 5f, 0.3f, 2f))){ Point2 p = Geometry.d4[Mathf.random(3)]; Tile other = world.tile(tile.x + p.x, tile.y + p.y); Fires.create(other); - if(Mathf.chance(fireballChance * Time.delta() * Mathf.clamp(flammability / 10f))){ + if(Mathf.chance(fireballChance * Time.delta * Mathf.clamp(flammability / 10f))){ Bullets.fireball.createNet(Team.derelict, x, y, Mathf.random(360f), -1f, 1, 1); } } - if(Mathf.chance(0.1 * Time.delta())){ + if(Mathf.chance(0.1 * Time.delta)){ Puddlec p = Puddles.get(tile); puddleFlammability = p != null ? p.getFlammability() / 3f : 0; diff --git a/core/src/mindustry/entities/comp/FlyingComp.java b/core/src/mindustry/entities/comp/FlyingComp.java index e0727661a0..ef53b1fece 100644 --- a/core/src/mindustry/entities/comp/FlyingComp.java +++ b/core/src/mindustry/entities/comp/FlyingComp.java @@ -44,8 +44,8 @@ abstract class FlyingComp implements Posc, Velc, Healthc, Hitboxc{ } void wobble(){ - x += Mathf.sin(Time.time() + id() * 99, 25f, 0.05f) * Time.delta() * elevation; - y += Mathf.cos(Time.time() + id() * 99, 25f, 0.05f) * Time.delta() * elevation; + x += Mathf.sin(Time.time() + id() * 99, 25f, 0.05f) * Time.delta * elevation; + y += Mathf.cos(Time.time() + id() * 99, 25f, 0.05f) * Time.delta * elevation; } void moveAt(Vec2 vector, float acceleration){ @@ -81,7 +81,7 @@ abstract class FlyingComp implements Posc, Velc, Healthc, Hitboxc{ } if(canDrown() && floor.isLiquid && floor.drownTime > 0){ - drownTime += Time.delta() * 1f / floor.drownTime; + drownTime += Time.delta * 1f / floor.drownTime; drownTime = Mathf.clamp(drownTime); if(Mathf.chanceDelta(0.05f)){ floor.drownUpdateEffect.at(x, y, 1f, floor.mapColor); diff --git a/core/src/mindustry/entities/comp/HealthComp.java b/core/src/mindustry/entities/comp/HealthComp.java index 7d95d22964..609f3da46f 100644 --- a/core/src/mindustry/entities/comp/HealthComp.java +++ b/core/src/mindustry/entities/comp/HealthComp.java @@ -24,7 +24,7 @@ abstract class HealthComp implements Entityc{ @Override public void update(){ - hitTime -= Time.delta() / hitDuration; + hitTime -= Time.delta / hitDuration; } void killed(){ @@ -82,11 +82,11 @@ abstract class HealthComp implements Entityc{ } void damageContinuous(float amount){ - damage(amount * Time.delta(), hitTime <= -10 + hitDuration); + damage(amount * Time.delta, hitTime <= -10 + hitDuration); } void damageContinuousPierce(float amount){ - damagePierce(amount * Time.delta(), hitTime <= -20 + hitDuration); + damagePierce(amount * Time.delta, hitTime <= -20 + hitDuration); } void clampHealth(){ diff --git a/core/src/mindustry/entities/comp/MechComp.java b/core/src/mindustry/entities/comp/MechComp.java index 0c0a6f4962..60e9a7dbde 100644 --- a/core/src/mindustry/entities/comp/MechComp.java +++ b/core/src/mindustry/entities/comp/MechComp.java @@ -14,6 +14,6 @@ abstract class MechComp implements Posc, Flyingc, Hitboxc, Unitc, Mechc, Elevati public void update(){ float len = deltaLen(); baseRotation = Angles.moveToward(baseRotation, deltaAngle(), type().baseRotateSpeed * Mathf.clamp(len / type().speed)); - walkTime += Time.delta()*len; + walkTime += Time.delta *len; } } diff --git a/core/src/mindustry/entities/comp/MinerComp.java b/core/src/mindustry/entities/comp/MinerComp.java index 781d9ebb83..23b566c534 100644 --- a/core/src/mindustry/entities/comp/MinerComp.java +++ b/core/src/mindustry/entities/comp/MinerComp.java @@ -58,7 +58,7 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc, Unitc{ }else{ Item item = mineTile.drop(); rotation(Mathf.slerpDelta(rotation(), angleTo(mineTile.worldx(), mineTile.worldy()), 0.4f)); - mineTimer += Time.delta()*type.mineSpeed; + mineTimer += Time.delta *type.mineSpeed; if(mineTimer >= 50f + item.hardness*10f){ mineTimer = 0; @@ -76,7 +76,7 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc, Unitc{ } } - if(Mathf.chance(0.06 * Time.delta())){ + if(Mathf.chance(0.06 * Time.delta)){ Fx.pulverizeSmall.at(mineTile.worldx() + Mathf.range(tilesize / 2f), mineTile.worldy() + Mathf.range(tilesize / 2f), 0f, item.color); } } diff --git a/core/src/mindustry/entities/comp/PayloadComp.java b/core/src/mindustry/entities/comp/PayloadComp.java index 09e978cedd..87d9e7509a 100644 --- a/core/src/mindustry/entities/comp/PayloadComp.java +++ b/core/src/mindustry/entities/comp/PayloadComp.java @@ -12,7 +12,7 @@ import mindustry.world.blocks.payloads.*; /** An entity that holds a payload. */ @Component -abstract class PayloadComp implements Posc, Rotc{ +abstract class PayloadComp implements Posc, Rotc, Hitboxc{ @Import float x, y, rotation; Seq payloads = new Seq<>(); @@ -87,7 +87,7 @@ abstract class PayloadComp implements Posc, Rotc{ /** @return whether the tile has been successfully placed. */ boolean dropBlock(BlockPayload payload){ Building tile = payload.entity; - int tx = Vars.world.toTile(x - tile.block().offset()), ty = Vars.world.toTile(y - tile.block().offset()); + int tx = Vars.world.toTile(x - tile.block().offset), ty = Vars.world.toTile(y - tile.block().offset); Tile on = Vars.world.tile(tx, ty); if(on != null && Build.validPlace(tile.block(), tile.team(), tx, ty, tile.rotation())){ int rot = (int)((rotation + 45f) / 90f) % 4; diff --git a/core/src/mindustry/entities/comp/PlayerComp.java b/core/src/mindustry/entities/comp/PlayerComp.java index 8caf31c46c..4f4800daa7 100644 --- a/core/src/mindustry/entities/comp/PlayerComp.java +++ b/core/src/mindustry/entities/comp/PlayerComp.java @@ -119,7 +119,7 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra }else if(core != null){ //have a small delay before death to prevent the camera from jumping around too quickly //(this is not for balance) - deathTimer += Time.delta(); + deathTimer += Time.delta; if(deathTimer >= deathDelay){ //request spawn - this happens serverside only core.requestSpawn(base()); @@ -127,7 +127,7 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra } } - textFadeTime -= Time.delta() / (60 * 5); + textFadeTime -= Time.delta / (60 * 5); } diff --git a/core/src/mindustry/entities/comp/PuddleComp.java b/core/src/mindustry/entities/comp/PuddleComp.java index 572ebe43e6..35ab03416c 100644 --- a/core/src/mindustry/entities/comp/PuddleComp.java +++ b/core/src/mindustry/entities/comp/PuddleComp.java @@ -43,13 +43,13 @@ abstract class PuddleComp implements Posc, Puddlec, Drawc{ //update code float addSpeed = accepting > 0 ? 3f : 0f; - amount -= Time.delta() * (1f - liquid.viscosity) / (5f + addSpeed); + amount -= Time.delta * (1f - liquid.viscosity) / (5f + addSpeed); amount += accepting; accepting = 0f; if(amount >= maxLiquid / 1.5f && generation < maxGeneration){ - float deposited = Math.min((amount - maxLiquid / 1.5f) / 4f, 0.3f) * Time.delta(); + float deposited = Math.min((amount - maxLiquid / 1.5f) / 4f, 0.3f) * Time.delta; for(Point2 point : Geometry.d4){ Tile other = world.tile(tile.x + point.x, tile.y + point.y); if(other != null && other.block() == Blocks.air){ @@ -87,7 +87,7 @@ abstract class PuddleComp implements Posc, Puddlec, Drawc{ updateTime = 40f; } - updateTime -= Time.delta(); + updateTime -= Time.delta; } @Override diff --git a/core/src/mindustry/entities/comp/ShieldComp.java b/core/src/mindustry/entities/comp/ShieldComp.java index 421bf1295f..5125faa96e 100644 --- a/core/src/mindustry/entities/comp/ShieldComp.java +++ b/core/src/mindustry/entities/comp/ShieldComp.java @@ -52,7 +52,7 @@ abstract class ShieldComp implements Healthc, Posc{ @Override public void update(){ - shieldAlpha -= Time.delta() / 15f; + shieldAlpha -= Time.delta / 15f; if(shieldAlpha < 0) shieldAlpha = 0f; } } diff --git a/core/src/mindustry/entities/comp/StatusComp.java b/core/src/mindustry/entities/comp/StatusComp.java index 668aa4ddf1..bf61535026 100644 --- a/core/src/mindustry/entities/comp/StatusComp.java +++ b/core/src/mindustry/entities/comp/StatusComp.java @@ -117,7 +117,7 @@ abstract class StatusComp implements Posc, Flyingc{ while(index < statuses.size){ StatusEntry entry = statuses.get(index++); - entry.time = Math.max(entry.time - Time.delta(), 0); + entry.time = Math.max(entry.time - Time.delta, 0); applied.set(entry.effect.id); if(entry.time <= 0 && !entry.effect.permanent){ diff --git a/core/src/mindustry/entities/comp/TimedComp.java b/core/src/mindustry/entities/comp/TimedComp.java index 15dbb737d6..f6a0225bd5 100644 --- a/core/src/mindustry/entities/comp/TimedComp.java +++ b/core/src/mindustry/entities/comp/TimedComp.java @@ -13,7 +13,7 @@ abstract class TimedComp implements Entityc, Scaled{ @MethodPriority(100) @Override public void update(){ - time = Math.min(time + Time.delta(), lifetime); + time = Math.min(time + Time.delta, lifetime); if(time >= lifetime){ remove(); diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 1a8fcf6861..e4aac95a3a 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -32,7 +32,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I private UnitController controller; private UnitType type; - boolean spawnedByCore; + boolean spawnedByCore, deactivated; transient float timer1, timer2; @@ -103,7 +103,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I } public void lookAt(float angle){ - rotation = Angles.moveToward(rotation, angle, type.rotateSpeed * Time.delta()); + rotation = Angles.moveToward(rotation, angle, type.rotateSpeed * Time.delta); } public void lookAt(Position pos){ @@ -118,6 +118,14 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I return controller instanceof AIController; } + public int count(){ + return teamIndex.countType(team, type); + } + + public int cap(){ + return Units.getCap(team); + } + private void setStats(UnitType type){ this.type = type; this.maxHealth = type.health; @@ -147,12 +155,19 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I @Override public void add(){ - teamIndex.updateCount(team, 1); + teamIndex.updateCount(team, type, 1); + + //check if over unit cap + if(count() > cap() && !spawnedByCore){ + deactivated = true; + }else{ + teamIndex.updateActiveCount(team, type, 1); + } } @Override public void remove(){ - teamIndex.updateCount(team, -1); + teamIndex.updateCount(team, type, -1); controller.removed(base()); } @@ -167,7 +182,13 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I @Override public void update(){ - type.update(base()); + //activate the unit when possible + if(!net.client() && deactivated && teamIndex.countActive(team, type) < Units.getCap(team)){ + teamIndex.updateActiveCount(team, type, 1); + deactivated = false; + } + + if(!deactivated) type.update(base()); drag = type.drag * (isGrounded() ? (floorOn().dragMultiplier) : 1f); @@ -176,7 +197,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I float relativeSize = state.rules.dropZoneRadius + bounds()/2f + 1f; for(Tile spawn : spawner.getSpawns()){ if(within(spawn.worldx(), spawn.worldy(), relativeSize)){ - vel().add(Tmp.v1.set(this).sub(spawn.worldx(), spawn.worldy()).setLength(0.1f + 1f - dst(spawn) / relativeSize).scl(0.45f * Time.delta())); + vel().add(Tmp.v1.set(this).sub(spawn.worldx(), spawn.worldy()).setLength(0.1f + 1f - dst(spawn) / relativeSize).scl(0.45f * Time.delta)); } } } @@ -204,7 +225,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I } //move down - elevation -= type.fallSpeed * Time.delta(); + elevation -= type.fallSpeed * Time.delta; if(isGrounded()){ destroy(); @@ -227,10 +248,15 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I } //AI only updates on the server - if(!net.client() && !dead){ + if(!net.client() && !dead && !deactivated){ controller.updateUnit(); } + //do not control anything when deactivated + if(deactivated){ + controlWeapons(false, false); + } + //remove units spawned by the core if(spawnedByCore && !isPlayer()){ Call.unitDespawn(base()); diff --git a/core/src/mindustry/entities/comp/VelComp.java b/core/src/mindustry/entities/comp/VelComp.java index 6e3a31c76b..b01e6322ce 100644 --- a/core/src/mindustry/entities/comp/VelComp.java +++ b/core/src/mindustry/entities/comp/VelComp.java @@ -17,8 +17,8 @@ abstract class VelComp implements Posc{ @MethodPriority(-1) @Override public void update(){ - move(vel.x * Time.delta(), vel.y * Time.delta()); - vel.scl(1f - drag * Time.delta()); + move(vel.x * Time.delta, vel.y * Time.delta); + vel.scl(1f - drag * Time.delta); } boolean moving(){ diff --git a/core/src/mindustry/entities/comp/WaterMoveComp.java b/core/src/mindustry/entities/comp/WaterMoveComp.java index 43f12491d1..3cc371eade 100644 --- a/core/src/mindustry/entities/comp/WaterMoveComp.java +++ b/core/src/mindustry/entities/comp/WaterMoveComp.java @@ -42,7 +42,7 @@ abstract class WaterMoveComp implements Posc, Velc, Hitboxc, Flyingc, Unitc{ Floor floor = floorOn(); Color color = Tmp.c1.set(floor.mapColor).mul(1.5f); - trailColor.lerp(color, Mathf.clamp(Time.delta() * 0.04f)); + trailColor.lerp(color, Mathf.clamp(Time.delta * 0.04f)); tleft.draw(trailColor, type.trailScl); tright.draw(trailColor, type.trailScl); diff --git a/core/src/mindustry/entities/comp/WeaponsComp.java b/core/src/mindustry/entities/comp/WeaponsComp.java index 533799ee59..b05800d702 100644 --- a/core/src/mindustry/entities/comp/WeaponsComp.java +++ b/core/src/mindustry/entities/comp/WeaponsComp.java @@ -26,7 +26,7 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc{ @ReadOnly transient float range, aimX, aimY; @ReadOnly transient boolean isRotate; boolean isShooting; - int ammo; + float ammo; void setWeaponRotation(float rotation){ for(WeaponMount mount : mounts){ @@ -47,6 +47,10 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc{ } } + void controlWeapons(boolean rotateShoot){ + controlWeapons(rotateShoot, rotateShoot); + } + void controlWeapons(boolean rotate, boolean shoot){ for(WeaponMount mount : mounts){ mount.rotate = rotate; @@ -82,11 +86,11 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc{ public void update(){ for(WeaponMount mount : mounts){ Weapon weapon = mount.weapon; - mount.reload = Math.max(mount.reload - Time.delta() * reloadMultiplier, 0); + mount.reload = Math.max(mount.reload - Time.delta * reloadMultiplier, 0); //flip weapon shoot side for alternating weapons at half reload if(weapon.otherSide != -1 && weapon.alternate && mount.side == weapon.flipSprite && - mount.reload + Time.delta() > weapon.reload/2f && mount.reload <= weapon.reload/2f){ + mount.reload + Time.delta > weapon.reload/2f && mount.reload <= weapon.reload/2f){ mounts[weapon.otherSide].side = !mounts[weapon.otherSide].side; mount.side = !mount.side; } @@ -97,7 +101,7 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc{ axisY = this.y + Angles.trnsy(rotation - 90, weapon.x, weapon.y); mount.targetRotation = Angles.angle(axisX, axisY, mount.aimX, mount.aimY) - rotation; - mount.rotation = Angles.moveToward(mount.rotation, mount.targetRotation, weapon.rotateSpeed * Time.delta()); + mount.rotation = Angles.moveToward(mount.rotation, mount.targetRotation, weapon.rotateSpeed * Time.delta); }else{ mount.rotation = 0; mount.targetRotation = angleTo(mount.aimX, mount.aimY); diff --git a/core/src/mindustry/entities/units/BuildPlan.java b/core/src/mindustry/entities/units/BuildPlan.java index af7d760219..3e265cba92 100644 --- a/core/src/mindustry/entities/units/BuildPlan.java +++ b/core/src/mindustry/entities/units/BuildPlan.java @@ -117,11 +117,11 @@ public class BuildPlan{ } public float drawx(){ - return x*tilesize + block.offset(); + return x*tilesize + block.offset; } public float drawy(){ - return y*tilesize + block.offset(); + return y*tilesize + block.offset; } public BuildPlan configure(Object config){ diff --git a/core/src/mindustry/game/Saves.java b/core/src/mindustry/game/Saves.java index c54107b646..681887e685 100644 --- a/core/src/mindustry/game/Saves.java +++ b/core/src/mindustry/game/Saves.java @@ -86,7 +86,7 @@ public class Saves{ } if(state.isGame() && !state.gameOver && current != null && current.isAutosave() && !state.rules.tutorial){ - time += Time.delta(); + time += Time.delta; if(time > Core.settings.getInt("saveinterval") * 60){ saving = true; diff --git a/core/src/mindustry/game/Schematics.java b/core/src/mindustry/game/Schematics.java index 5ddc9bb9da..29b44a6efd 100644 --- a/core/src/mindustry/game/Schematics.java +++ b/core/src/mindustry/game/Schematics.java @@ -345,7 +345,7 @@ public class Schematics implements Loadable{ boolean found = false; for(int cx = x; cx <= x2; cx++){ for(int cy = y; cy <= y2; cy++){ - Building linked = world.ent(cx, cy); + Building linked = world.build(cx, cy); if(linked != null &&linked.block().isVisible() && !(linked.block() instanceof BuildBlock)){ int top = linked.block().size/2; @@ -373,7 +373,7 @@ public class Schematics implements Loadable{ IntSet counted = new IntSet(); for(int cx = ox; cx <= ox2; cx++){ for(int cy = oy; cy <= oy2; cy++){ - Building tile = world.ent(cx, cy); + Building tile = world.build(cx, cy); if(tile != null && !counted.contains(tile.pos()) && !(tile.block() instanceof BuildBlock) && (tile.block().isVisible() || (tile.block() instanceof CoreBlock))){ @@ -601,7 +601,7 @@ public class Schematics implements Loadable{ }); //rotate actual request, centered on its multiblock position - float wx = (req.x - ox) * tilesize + req.block.offset(), wy = (req.y - oy) * tilesize + req.block.offset(); + float wx = (req.x - ox) * tilesize + req.block.offset, wy = (req.y - oy) * tilesize + req.block.offset; float x = wx; if(direction >= 0){ wx = -wy; @@ -610,8 +610,8 @@ public class Schematics implements Loadable{ wx = wy; wy = -x; } - req.x = (short)(world.toTile(wx - req.block.offset()) + ox); - req.y = (short)(world.toTile(wy - req.block.offset()) + oy); + req.x = (short)(world.toTile(wx - req.block.offset) + ox); + req.y = (short)(world.toTile(wy - req.block.offset) + oy); req.rotation = (byte)Mathf.mod(req.rotation + direction, 4); }); diff --git a/core/src/mindustry/game/SectorInfo.java b/core/src/mindustry/game/SectorInfo.java index 9101bfc4b4..4192831910 100644 --- a/core/src/mindustry/game/SectorInfo.java +++ b/core/src/mindustry/game/SectorInfo.java @@ -84,10 +84,10 @@ public class SectorInfo{ /** Update averages of various stats. * Called every frame. */ public void update(){ - internalTimeSpent += Time.delta(); + internalTimeSpent += Time.delta; //time spent exceeds turn duration! - if(internalTimeSpent >= turnDuration && internalTimeSpent - Time.delta() < turnDuration){ + if(internalTimeSpent >= turnDuration && internalTimeSpent - Time.delta < turnDuration){ universe.displayTimeEnd(); } diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 105e2e4da8..33f14eb1e7 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -63,7 +63,7 @@ public class Universe{ /** Update planet rotations, global time and relevant state. */ public void update(){ - secondCounter += Time.delta() / 60f; + secondCounter += Time.delta / 60f; if(secondCounter >= 1){ seconds += (int)secondCounter; diff --git a/core/src/mindustry/graphics/BlockRenderer.java b/core/src/mindustry/graphics/BlockRenderer.java index dd66dd86e9..97382dd6d7 100644 --- a/core/src/mindustry/graphics/BlockRenderer.java +++ b/core/src/mindustry/graphics/BlockRenderer.java @@ -20,9 +20,9 @@ import static arc.Core.camera; import static mindustry.Vars.*; public class BlockRenderer implements Disposable{ - private final static int initialRequests = 32 * 32; - private final static int expandr = 9; - private final static Color shadowColor = new Color(0, 0, 0, 0.71f); + private static final int initialRequests = 32 * 32; + private static final int expandr = 9; + private static final Color shadowColor = new Color(0, 0, 0, 0.71f); public final FloorRenderer floor = new FloorRenderer(); @@ -114,11 +114,11 @@ public class BlockRenderer implements Disposable{ if(brokenFade > 0.001f){ for(BlockPlan block : state.teams.get(player.team()).blocks){ Block b = content.block(block.block); - if(!camera.bounds(Tmp.r1).grow(tilesize * 2f).overlaps(Tmp.r2.setSize(b.size * tilesize).setCenter(block.x * tilesize + b.offset(), block.y * tilesize + b.offset()))) continue; + if(!camera.bounds(Tmp.r1).grow(tilesize * 2f).overlaps(Tmp.r2.setSize(b.size * tilesize).setCenter(block.x * tilesize + b.offset, block.y * tilesize + b.offset))) continue; Draw.alpha(0.33f * brokenFade); Draw.mixcol(Color.white, 0.2f + Mathf.absin(Time.globalTime(), 6f, 0.2f)); - Draw.rect(b.icon(Cicon.full), block.x * tilesize + b.offset(), block.y * tilesize + b.offset(), b.rotate ? block.rotation * 90 : 0f); + Draw.rect(b.icon(Cicon.full), block.x * tilesize + b.offset, block.y * tilesize + b.offset, b.rotate ? block.rotation * 90 : 0f); } Draw.reset(); } diff --git a/core/src/mindustry/graphics/Drawf.java b/core/src/mindustry/graphics/Drawf.java index 05de2877d8..0a5bbb39c0 100644 --- a/core/src/mindustry/graphics/Drawf.java +++ b/core/src/mindustry/graphics/Drawf.java @@ -68,8 +68,8 @@ public class Drawf{ Point2 p = Geometry.d8edge[i]; float offset = -Math.max(block.size - 1, 0) / 2f * tilesize; Draw.rect("block-select", - x*tilesize + block.offset() + offset * p.x, - y*tilesize + block.offset() + offset * p.y, i * 90); + x*tilesize + block.offset + offset * p.x, + y*tilesize + block.offset + offset * p.y, i * 90); } Draw.reset(); } diff --git a/core/src/mindustry/graphics/FloorRenderer.java b/core/src/mindustry/graphics/FloorRenderer.java index fe83e9bbcb..7a7f502473 100644 --- a/core/src/mindustry/graphics/FloorRenderer.java +++ b/core/src/mindustry/graphics/FloorRenderer.java @@ -18,7 +18,7 @@ import static mindustry.Vars.*; public class FloorRenderer implements Disposable{ //TODO find out number with best performance - private final static int chunksize = mobile ? 16 : 32; + private static final int chunksize = mobile ? 16 : 32; private Chunk[][] cache; private MultiCacheBatch cbatch; diff --git a/core/src/mindustry/graphics/IndexedRenderer.java b/core/src/mindustry/graphics/IndexedRenderer.java index 60eeace8ed..83067c1f96 100644 --- a/core/src/mindustry/graphics/IndexedRenderer.java +++ b/core/src/mindustry/graphics/IndexedRenderer.java @@ -9,7 +9,7 @@ import arc.util.*; //TODO this class is a trainwreck, remove it public class IndexedRenderer implements Disposable{ - private final static int vsize = 5; + private static final int vsize = 5; private Shader program = new Shader( "attribute vec4 a_position;\n" + diff --git a/core/src/mindustry/graphics/InverseKinematics.java b/core/src/mindustry/graphics/InverseKinematics.java index 196a0bffaa..a920dc6527 100644 --- a/core/src/mindustry/graphics/InverseKinematics.java +++ b/core/src/mindustry/graphics/InverseKinematics.java @@ -7,12 +7,12 @@ public class InverseKinematics{ private static final Vec2[] mat1 = {new Vec2(), new Vec2()}, mat2 = {new Vec2(), new Vec2()}; private static final Vec2 temp = new Vec2(), temp2 = new Vec2(), at1 = new Vec2(); - static public boolean solve(float lengthA, float lengthB, Vec2 end, boolean side, Vec2 result){ + public static boolean solve(float lengthA, float lengthB, Vec2 end, boolean side, Vec2 result){ at1.set(end).rotate(side ? 1 : -1).setLength(lengthA + lengthB).add(end.x / 2f, end.y / 2f); return solve(lengthA, lengthB, end, at1, result); } - static public boolean solve(float lengthA, float lengthB, Vec2 end, Vec2 attractor, Vec2 result){ + public static boolean solve(float lengthA, float lengthB, Vec2 end, Vec2 attractor, Vec2 result){ Vec2 axis = mat2[0].set(end).nor(); mat2[1].set(attractor).sub(temp2.set(axis).scl(attractor.dot(axis))).nor(); mat1[0].set(mat2[0].x, mat2[1].x); diff --git a/core/src/mindustry/graphics/LoadRenderer.java b/core/src/mindustry/graphics/LoadRenderer.java index afbab1b6e2..12ffe9af40 100644 --- a/core/src/mindustry/graphics/LoadRenderer.java +++ b/core/src/mindustry/graphics/LoadRenderer.java @@ -116,7 +116,7 @@ public class LoadRenderer implements Disposable{ //preview : no frametime if(preview){ - testprogress += Time.delta() / (60f * 3); + testprogress += Time.delta / (60f * 3); progress = testprogress; if(input.keyTap(KeyCode.space)){ testprogress = 0; diff --git a/core/src/mindustry/graphics/MenuRenderer.java b/core/src/mindustry/graphics/MenuRenderer.java index f45e93daf1..bc72220c77 100644 --- a/core/src/mindustry/graphics/MenuRenderer.java +++ b/core/src/mindustry/graphics/MenuRenderer.java @@ -206,7 +206,7 @@ public class MenuRenderer implements Disposable{ } public void render(){ - time += Time.delta(); + time += Time.delta; float scaling = Math.max(Scl.scl(4f), Math.max(Core.graphics.getWidth() / ((width - 1f) * tilesize), Core.graphics.getHeight() / ((height - 1f) * tilesize))); camera.position.set(width * tilesize / 2f, height * tilesize / 2f); camera.resize(Core.graphics.getWidth() / scaling, diff --git a/core/src/mindustry/graphics/OverlayRenderer.java b/core/src/mindustry/graphics/OverlayRenderer.java index d191574f1b..8b7f940197 100644 --- a/core/src/mindustry/graphics/OverlayRenderer.java +++ b/core/src/mindustry/graphics/OverlayRenderer.java @@ -129,7 +129,7 @@ public class OverlayRenderer{ //draw selected block if(input.block == null && !Core.scene.hasMouse()){ Vec2 vec = Core.input.mouseWorld(input.getMouseX(), input.getMouseY()); - Building tile = world.entWorld(vec.x, vec.y); + Building tile = world.buildWorld(vec.x, vec.y); if(tile != null && tile.team() == player.team()){ tile.drawSelect(); @@ -152,7 +152,7 @@ public class OverlayRenderer{ Lines.circle(v.x, v.y, 6 + Mathf.absin(Time.time(), 5f, 1f)); Draw.reset(); - Building tile = world.entWorld(v.x, v.y); + Building tile = world.buildWorld(v.x, v.y); if(tile != null && tile.interactable(player.team()) && tile.acceptStack(player.unit().item(), player.unit().stack.amount, player.unit()) > 0){ Lines.stroke(3f, Pal.gray); Lines.square(tile.x, tile.y, tile.block().size * tilesize / 2f + 3 + Mathf.absin(Time.time(), 5f, 1f)); diff --git a/core/src/mindustry/input/Binding.java b/core/src/mindustry/input/Binding.java index 7389c18d87..517e50ca69 100644 --- a/core/src/mindustry/input/Binding.java +++ b/core/src/mindustry/input/Binding.java @@ -8,7 +8,7 @@ import arc.input.*; public enum Binding implements KeyBind{ move_x(new Axis(KeyCode.a, KeyCode.d), "general"), move_y(new Axis(KeyCode.s, KeyCode.w)), - mouse_move(KeyCode.mouseBack), + mouse_move(KeyCode.mouseForward), boost(KeyCode.shiftLeft), control(KeyCode.controlLeft), diff --git a/core/src/mindustry/input/DesktopInput.java b/core/src/mindustry/input/DesktopInput.java index ec9d48b9b6..bb3970a71e 100644 --- a/core/src/mindustry/input/DesktopInput.java +++ b/core/src/mindustry/input/DesktopInput.java @@ -186,7 +186,7 @@ public class DesktopInput extends InputHandler{ if(!(scene.getKeyboardFocus() instanceof TextField) && !scene.hasDialog()){ //move camera around float camSpeed = !Core.input.keyDown(Binding.boost) ? 3f : 8f; - Core.camera.position.add(Tmp.v1.setZero().add(Core.input.axis(Binding.move_x), Core.input.axis(Binding.move_y)).nor().scl(Time.delta() * camSpeed)); + Core.camera.position.add(Tmp.v1.setZero().add(Core.input.axis(Binding.move_x), Core.input.axis(Binding.move_y)).nor().scl(Time.delta * camSpeed)); if(Core.input.keyDown(Binding.mouse_move)){ Core.camera.position.x += Mathf.clamp((Core.input.mouseX() - Core.graphics.getWidth() / 2f) * 0.005f, -1, 1) * camSpeed; @@ -576,6 +576,10 @@ public class DesktopInput extends InputHandler{ boolean boosted = (unit instanceof Mechc && unit.isFlying()); movement.set(xa, ya).nor().scl(speed); + if(Core.input.keyDown(Binding.mouse_move)){ + movement.add(input.mouseWorld().sub(player).scl(1f / 25f * speed)).limit(speed); + } + float mouseAngle = Angles.mouseAngle(unit.x, unit.y); boolean aimCursor = omni && player.shooting && unit.type().hasWeapons() && unit.type().faceTarget && !boosted && unit.type().rotateShooting; @@ -592,26 +596,27 @@ public class DesktopInput extends InputHandler{ }else{ unit.moveAt(Tmp.v2.trns(unit.rotation, movement.len())); if(!movement.isZero() && legs){ - unit.vel().rotateTo(movement.angle(), unit.type().rotateSpeed * Time.delta()); + unit.vel.rotateTo(movement.angle(), unit.type().rotateSpeed * Time.delta); } } - unit.aim(unit.type().faceTarget ? Core.input.mouseWorld() : Tmp.v1.trns(unit.rotation(), Core.input.mouseWorld().dst(unit)).add(unit.x(), unit.y())); + unit.aim(unit.type().faceTarget ? Core.input.mouseWorld() : Tmp.v1.trns(unit.rotation, Core.input.mouseWorld().dst(unit)).add(unit.x, unit.y)); unit.controlWeapons(true, player.shooting && !boosted); player.boosting = Core.input.keyDown(Binding.boost) && !movement.isZero(); player.mouseX = unit.aimX(); player.mouseY = unit.aimY(); + //update payload input if(unit instanceof Payloadc){ Payloadc pay = (Payloadc)unit; if(Core.input.keyTap(Binding.pickupCargo) && pay.payloads().size < unit.type().payloadCapacity){ - Unit target = Units.closest(player.team(), pay.x(), pay.y(), unit.type().hitsize * 1.1f, u -> u.isAI() && u.isGrounded() && u.mass() < unit.mass()); + Unit target = Units.closest(player.team(), pay.x(), pay.y(), unit.type().hitsize * 2.5f, u -> u.isAI() && u.isGrounded() && u.mass() < unit.mass() && u.within(unit, u.hitSize + unit.hitSize * 1.2f)); if(target != null){ Call.pickupUnitPayload(player, target); }else if(!pay.hasPayload()){ - Building tile = world.entWorld(pay.x(), pay.y()); + Building tile = world.buildWorld(pay.x(), pay.y()); if(tile != null && tile.team() == unit.team){ Call.pickupBlockPayload(player, tile); @@ -625,6 +630,7 @@ public class DesktopInput extends InputHandler{ } } + //update commander inut if(unit instanceof Commanderc){ if(Core.input.keyTap(Binding.command)){ Call.unitCommand(player); diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index a21aa3d1dd..e92b3d1961 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -113,7 +113,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ if(target.isAI() && target.isGrounded() && pay.payloads().size < unit.type().payloadCapacity && target.mass() < unit.mass() - && target.within(unit, unit.type().hitsize * 1.5f)){ + && target.within(unit, unit.type().hitsize * 1.5f + target.type().hitsize)){ pay.pickup(target); } } @@ -129,10 +129,13 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ if(tile.block().buildVisibility != BuildVisibility.hidden && tile.block().size <= 2){ pay.pickup(tile); }else{ //pick up block payload - Payload taken = tile.takePayload(); - if(taken != null){ - pay.addPayload(taken); - Fx.unitPickup.at(tile); + Payload current = tile.getPayload(); + if(current != null && current.canBeTaken(pay)){ + Payload taken = tile.takePayload(); + if(taken != null){ + pay.addPayload(taken); + Fx.unitPickup.at(tile); + } } } } @@ -230,7 +233,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ }else if(unit == null){ //just clear the unit (is this used?) player.clearUnit(); //make sure it's AI controlled, so players can't overwrite each other - }else if(unit.isAI() && unit.team == player.team()){ + }else if(unit.isAI() && unit.team == player.team() && !unit.deactivated){ player.unit(unit); Time.run(Fx.unitSpirit.lifetime, () -> Fx.unitControl.at(unit.x, unit.y, 0f, unit)); if(!player.dead()){ @@ -307,7 +310,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } if(controlledType != null && player.dead()){ - Unit unit = Units.closest(player.team(), player.x, player.y, u -> !u.isPlayer() && u.type() == controlledType); + Unit unit = Units.closest(player.team(), player.x, player.y, u -> !u.isPlayer() && u.type() == controlledType && !u.deactivated); if(unit != null){ Call.unitControl(player, unit); @@ -317,9 +320,9 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ public void checkUnit(){ if(controlledType != null){ - Unit unit = Units.closest(player.team(), player.x, player.y, u -> !u.isPlayer() && u.type() == controlledType); + Unit unit = Units.closest(player.team(), player.x, player.y, u -> !u.isPlayer() && u.type() == controlledType && !u.deactivated); if(unit == null && controlledType == UnitTypes.block){ - unit = world.entWorld(player.x, player.y) instanceof ControlBlock ? ((ControlBlock)world.entWorld(player.x, player.y)).unit() : null; + unit = world.buildWorld(player.x, player.y) instanceof ControlBlock ? ((ControlBlock)world.buildWorld(player.x, player.y)).unit() : null; } if(unit != null){ @@ -428,7 +431,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ }); //rotate actual request, centered on its multiblock position - float wx = (req.x - ox) * tilesize + req.block.offset(), wy = (req.y - oy) * tilesize + req.block.offset(); + float wx = (req.x - ox) * tilesize + req.block.offset, wy = (req.y - oy) * tilesize + req.block.offset; float x = wx; if(direction >= 0){ wx = -wy; @@ -437,8 +440,8 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ wx = wy; wy = -x; } - req.x = world.toTile(wx - req.block.offset()) + ox; - req.y = world.toTile(wy - req.block.offset()) + oy; + req.x = world.toTile(wx - req.block.offset) + ox; + req.y = world.toTile(wy - req.block.offset) + oy; req.rotation = Mathf.mod(req.rotation + direction, 4); }); } @@ -447,12 +450,12 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ int origin = (x ? schemOriginX() : schemOriginY()) * tilesize; requests.each(req -> { - float value = -((x ? req.x : req.y) * tilesize - origin + req.block.offset()) + origin; + float value = -((x ? req.x : req.y) * tilesize - origin + req.block.offset) + origin; if(x){ - req.x = (int)((value - req.block.offset()) / tilesize); + req.x = (int)((value - req.block.offset) / tilesize); }else{ - req.y = (int)((value - req.block.offset()) / tilesize); + req.y = (int)((value - req.block.offset) / tilesize); } req.pointConfig(p -> { @@ -502,10 +505,10 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ if(!req.breaking){ r1.setSize(req.block.size * tilesize); - r1.setCenter(other.worldx() + req.block.offset(), other.worldy() + req.block.offset()); + r1.setCenter(other.worldx() + req.block.offset, other.worldy() + req.block.offset); }else{ r1.setSize(other.block().size * tilesize); - r1.setCenter(other.worldx() + other.block().offset(), other.worldy() + other.block().offset()); + r1.setCenter(other.worldx() + other.block().offset, other.worldy() + other.block().offset); } return r2.overlaps(r1); @@ -794,10 +797,6 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ && tile.block() == Blocks.air && player.dst(tile.worldx(), tile.worldy()) <= miningRange; } - Building entAt(float x, float y){ - return world.ent(tileX(x), tileY(y)); - } - /** Returns the tile at the specified MOUSE coordinates. */ Tile tileAt(float x, float y){ return world.tile(tileX(x), tileY(y)); @@ -814,7 +813,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ int tileX(float cursorX){ Vec2 vec = Core.input.mouseWorld(cursorX, 0); if(selectedBlock()){ - vec.sub(block.offset(), block.offset()); + vec.sub(block.offset, block.offset); } return world.toTile(vec.x); } @@ -822,7 +821,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ int tileY(float cursorY){ Vec2 vec = Core.input.mouseWorld(0, cursorY); if(selectedBlock()){ - vec.sub(block.offset(), block.offset()); + vec.sub(block.offset, block.offset); } return world.toTile(vec.y); } @@ -844,7 +843,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } public @Nullable Unit selectedUnit(){ - Unit unit = Units.closest(player.team(), Core.input.mouseWorld().x, Core.input.mouseWorld().y, 40f, Unit::isAI); + Unit unit = Units.closest(player.team(), Core.input.mouseWorld().x, Core.input.mouseWorld().y, 40f, u -> u.isAI() && !u.deactivated); if(unit != null){ unit.hitbox(Tmp.r1); Tmp.r1.grow(6f); @@ -853,7 +852,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } } - Building tile = world.entWorld(Core.input.mouseWorld().x, Core.input.mouseWorld().y); + Building tile = world.buildWorld(Core.input.mouseWorld().x, Core.input.mouseWorld().y); if(tile instanceof ControlBlock && tile.team() == player.team()){ return ((ControlBlock)tile).unit(); } @@ -986,15 +985,15 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ Draw.color(!valid ? Pal.removeBack : Pal.accentBack); Draw.rect(Core.atlas.find("place-arrow"), - x * tilesize + block.offset() + dx*trns, - y * tilesize + block.offset() - 1 + dy*trns, + x * tilesize + block.offset + dx*trns, + y * tilesize + block.offset - 1 + dy*trns, Core.atlas.find("place-arrow").getWidth() * Draw.scl, Core.atlas.find("place-arrow").getHeight() * Draw.scl, rotation * 90 - 90); Draw.color(!valid ? Pal.remove : Pal.accent); Draw.rect(Core.atlas.find("place-arrow"), - x * tilesize + block.offset() + dx*trns, - y * tilesize + block.offset() + dy*trns, + x * tilesize + block.offset + dx*trns, + y * tilesize + block.offset + dy*trns, Core.atlas.find("place-arrow").getWidth() * Draw.scl, Core.atlas.find("place-arrow").getHeight() * Draw.scl, rotation * 90 - 90); } @@ -1051,7 +1050,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ for(int i = 0; i < points.size; i++){ Point2 point = points.get(i); - if(block != null && Tmp.r2.setSize(block.size * tilesize).setCenter(point.x * tilesize + block.offset(), point.y * tilesize + block.offset()).overlaps(Tmp.r3)){ + if(block != null && Tmp.r2.setSize(block.size * tilesize).setCenter(point.x * tilesize + block.offset, point.y * tilesize + block.offset).overlaps(Tmp.r3)){ continue; } @@ -1066,7 +1065,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ line.last = next == null; cons.get(line); - Tmp.r3.setSize(block.size * tilesize).setCenter(point.x * tilesize + block.offset(), point.y * tilesize + block.offset()); + Tmp.r3.setSize(block.size * tilesize).setCenter(point.x * tilesize + block.offset, point.y * tilesize + block.offset); } } diff --git a/core/src/mindustry/input/MobileInput.java b/core/src/mindustry/input/MobileInput.java index 75c468f1fd..709da87626 100644 --- a/core/src/mindustry/input/MobileInput.java +++ b/core/src/mindustry/input/MobileInput.java @@ -1,7 +1,6 @@ package mindustry.input; import arc.*; -import arc.struct.*; import arc.func.*; import arc.graphics.g2d.*; import arc.input.GestureDetector.*; @@ -11,15 +10,17 @@ import arc.math.geom.*; import arc.scene.*; import arc.scene.ui.ImageButton.*; import arc.scene.ui.layout.*; +import arc.struct.*; import arc.util.*; import mindustry.*; import mindustry.content.*; import mindustry.entities.*; -import mindustry.gen.*; import mindustry.entities.units.*; import mindustry.game.EventType.*; import mindustry.game.*; +import mindustry.gen.*; import mindustry.graphics.*; +import mindustry.type.*; import mindustry.ui.*; import mindustry.world.*; @@ -33,7 +34,7 @@ public class MobileInput extends InputHandler implements GestureListener{ private final float edgePan = Scl.scl(60f); //gesture data - private Vec2 vector = new Vec2(); + private Vec2 vector = new Vec2(), movement = new Vec2(), targetPos = new Vec2(); private float lastZoom = -1; /** Position where the player started dragging a line. */ @@ -62,7 +63,7 @@ public class MobileInput extends InputHandler implements GestureListener{ /** Down tracking for panning.*/ private boolean down = false; - private Teamc target; + private Teamc target, moveTarget; //region utility methods @@ -74,16 +75,15 @@ public class MobileInput extends InputHandler implements GestureListener{ player.miner().mineTile(null); target = unit; }else{ - Building tile = world.entWorld(x, y); + Building tile = world.buildWorld(x, y); if(tile != null && player.team().isEnemy(tile.team())){ player.miner().mineTile(null); target = tile; - //TODO implement healing - }//else if(tile != null && player.unit().canHeal && tile.entity != null && tile.team() == player.team() && tile.entity.damaged()){ - /// player.miner().mineTile(null); - // target = tile.entity; - // } + }else if(tile != null && player.unit().type().canHeal && tile.team == player.team() && tile.damaged()){ + player.miner().mineTile(null); + target = tile; + } } } @@ -95,7 +95,7 @@ public class MobileInput extends InputHandler implements GestureListener{ /** Returns whether this block overlaps any selection requests. */ boolean checkOverlapPlacement(int x, int y, Block block){ r2.setSize(block.size * tilesize); - r2.setCenter(x * tilesize + block.offset(), y * tilesize + block.offset()); + r2.setCenter(x * tilesize + block.offset, y * tilesize + block.offset); for(BuildPlan req : selectRequests){ Tile other = req.tile(); @@ -103,7 +103,7 @@ public class MobileInput extends InputHandler implements GestureListener{ if(other == null || req.breaking) continue; r1.setSize(req.block.size * tilesize); - r1.setCenter(other.worldx() + req.block.offset(), other.worldy() + req.block.offset()); + r1.setCenter(other.worldx() + req.block.offset, other.worldy() + req.block.offset); if(r2.overlaps(r1)){ return true; @@ -116,7 +116,7 @@ public class MobileInput extends InputHandler implements GestureListener{ if(other == null || req.breaking) continue; r1.setSize(req.block.size * tilesize); - r1.setCenter(other.worldx() + req.block.offset(), other.worldy() + req.block.offset()); + r1.setCenter(other.worldx() + req.block.offset, other.worldy() + req.block.offset); if(r2.overlaps(r1)){ return true; @@ -137,11 +137,11 @@ public class MobileInput extends InputHandler implements GestureListener{ if(!req.breaking){ r1.setSize(req.block.size * tilesize); - r1.setCenter(other.worldx() + req.block.offset(), other.worldy() + req.block.offset()); + r1.setCenter(other.worldx() + req.block.offset, other.worldy() + req.block.offset); }else{ r1.setSize(other.block().size * tilesize); - r1.setCenter(other.worldx() + other.block().offset(), other.worldy() + other.block().offset()); + r1.setCenter(other.worldx() + other.block().offset, other.worldy() + other.block().offset); } if(r2.overlaps(r1)) return req; @@ -422,6 +422,7 @@ public class MobileInput extends InputHandler implements GestureListener{ lastSchematic = schem; } + @Override public boolean touchDown(int screenX, int screenY, int pointer, KeyCode button){ if(state.isMenu()) return false; @@ -505,27 +506,40 @@ public class MobileInput extends InputHandler implements GestureListener{ @Override public boolean longPress(float x, float y){ - if(state.isMenu() || mode == none || player.dead()) return false; + if(state.isMenu()|| player.dead()) return false; //get tile on cursor Tile cursor = tileAt(x, y); - //ignore off-screen taps - if(cursor == null || Core.scene.hasMouse(x, y) || schematicMode) return false; + if(Core.scene.hasMouse(x, y) || schematicMode) return false; - //remove request if it's there - //long pressing enables line mode otherwise - lineStartX = cursor.x; - lineStartY = cursor.y; - lastLineX = cursor.x; - lastLineY = cursor.y; - lineMode = true; + //handle long tap when player isn't building + if(mode == none){ - if(mode == breaking){ - Fx.tapBlock.at(cursor.worldx(), cursor.worldy(), 1f); - }else if(block != null){ - updateLine(lineStartX, lineStartY, cursor.x, cursor.y); - Fx.tapBlock.at(cursor.worldx() + block.offset(), cursor.worldy() + block.offset(), block.size); + //control a unit/block + Unit on = selectedUnit(); + if(on != null){ + Call.unitControl(player, on); + } + }else{ + + //ignore off-screen taps + if(cursor == null) return false; + + //remove request if it's there + //long pressing enables line mode otherwise + lineStartX = cursor.x; + lineStartY = cursor.y; + lastLineX = cursor.x; + lastLineY = cursor.y; + lineMode = true; + + if(mode == breaking){ + Fx.tapBlock.at(cursor.worldx(), cursor.worldy(), 1f); + }else if(block != null){ + updateLine(lineStartX, lineStartY, cursor.x, cursor.y); + Fx.tapBlock.at(cursor.worldx() + block.offset, cursor.worldy() + block.offset, block.size); + } } return false; @@ -555,8 +569,16 @@ public class MobileInput extends InputHandler implements GestureListener{ }else if(mode == breaking && validBreak(linked.x,linked.y) && !hasRequest(linked)){ //add to selection queue if it's a valid BREAK position selectRequests.add(new BuildPlan(linked.x, linked.y)); - }else if(!canTapPlayer(worldx, worldy) && !tileTapped(linked.build)){ - tryBeginMine(cursor); + }else{ + if(!canTapPlayer(worldx, worldy) && !tileTapped(linked.build)){ + tryBeginMine(cursor); + } + + //apply command on double tap + if(count == 2 && Mathf.within(worldx, worldy, player.unit().x, player.unit().y, player.unit().hitSize * 2f) && + player.unit() instanceof Commanderc){ + Call.unitCommand(player); + } } return false; @@ -566,7 +588,7 @@ public class MobileInput extends InputHandler implements GestureListener{ public void update(){ super.update(); - if(state.isMenu() ){ + if(state.isMenu()){ selectRequests.clear(); removals.clear(); mode = none; @@ -584,7 +606,7 @@ public class MobileInput extends InputHandler implements GestureListener{ if(!Core.settings.getBool("keyboard")){ //move camera around float camSpeed = 6f; - Core.camera.position.add(Tmp.v1.setZero().add(Core.input.axis(Binding.move_x), Core.input.axis(Binding.move_y)).nor().scl(Time.delta() * camSpeed)); + Core.camera.position.add(Tmp.v1.setZero().add(Core.input.axis(Binding.move_x), Core.input.axis(Binding.move_y)).nor().scl(Time.delta * camSpeed)); } if(Core.settings.getBool("keyboard")){ @@ -597,6 +619,10 @@ public class MobileInput extends InputHandler implements GestureListener{ } } + if(!player.dead() && !state.isPaused()){ + updateMovement(player.unit()); + } + //reset state when not placing if(mode == none){ lineMode = false; @@ -755,5 +781,137 @@ public class MobileInput extends InputHandler implements GestureListener{ return true; } + //endregion + //region movement + + protected void updateMovement(Unit unit){ + Rect rect = Tmp.r3; + + UnitType type = unit.type(); + boolean flying = type.flying; + boolean omni = !(unit instanceof WaterMovec); + boolean legs = unit.isGrounded(); + boolean allowHealing = type.canHeal; + boolean validHealTarget = allowHealing && target instanceof Building && ((Building)target).isValid() && target.team() == unit.team && + ((Building)target).damaged() && target.within(unit, type.range); + boolean boosted = (unit instanceof Mechc && unit.isFlying()); + + //reset target if: + // - in the editor, or... + // - it's both an invalid standard target and an invalid heal target + if((Units.invalidateTarget(target, unit, type.range) && !validHealTarget) || state.isEditor()){ + target = null; + } + + targetPos.set(Core.camera.position); + float attractDst = 15f; + float strafePenalty = legs ? 1f : Mathf.lerp(1f, type.strafePenalty, Angles.angleDist(unit.vel.angle(), unit.rotation) / 180f); + float speed = type.speed * Mathf.lerp(1f, type.canBoost ? type.boostMultiplier : 1f, unit.elevation()) * strafePenalty; + float range = unit.hasWeapons() ? unit.range() : 0f; + float bulletSpeed = unit.hasWeapons() ? type.weapons.first().bullet.speed : 0f; + float mouseAngle = unit.angleTo(unit.aimX(), unit.aimY()); + boolean aimCursor = omni && player.shooting && type.hasWeapons() && type.faceTarget && !boosted && type.rotateShooting; + + if(aimCursor){ + unit.lookAt(mouseAngle); + }else{ + if(unit.moving()){ + unit.lookAt(unit.vel.angle()); + } + } + + if(moveTarget != null){ + targetPos.set(moveTarget); + attractDst = 0f; + + if(unit.within(moveTarget, 2f * Time.delta)){ + handleTapTarget(moveTarget); + moveTarget = null; + } + } + + movement.set(targetPos).sub(player).limit(speed); + movement.setAngle(Mathf.slerp(movement.angle(), unit.vel.angle(), 0.05f)); + + //pathfind for ground units + if(!flying && !type.canBoost && !(unit instanceof WaterMovec)){ + Tile on = unit.tileOn(); + if(on != null && !on.solid()){ + Tile to = pathfinder.getTargetTile(unit.tileOn(), unit.team, targetPos); + if(to != null){ + movement.set(to).sub(unit).setLength(speed); + } + } + } + + if(player.within(targetPos, attractDst)){ + movement.setZero(); + } + + float expansion = 3f; + + unit.hitbox(rect); + rect.x -= expansion; + rect.y -= expansion; + rect.width += expansion * 2f; + rect.height += expansion * 2f; + + player.boosting = collisions.overlapsTile(rect) || !unit.within(targetPos, 85f); + + if(omni){ + unit.moveAt(movement); + }else{ + unit.moveAt(Tmp.v2.trns(unit.rotation, movement.len())); + if(!movement.isZero() && legs){ + unit.vel.rotateTo(movement.angle(), type.rotateSpeed * Time.delta); + } + } + + if(flying){ + //hovering effect + unit.x += Mathf.sin(Time.time(), 25f, 0.08f); + unit.y += Mathf.cos(Time.time(), 25f, 0.08f); + } + + //update shooting if not building + not mining + if(!player.builder().isBuilding() && player.miner().mineTile() == null){ + + //autofire + if(target == null){ + player.shooting = false; + if(Core.settings.getBool("autotarget")){ + target = Units.closestTarget(unit.team, unit.x, unit.y, range, u -> u.team != Team.derelict, u -> u.team != Team.derelict); + + if(allowHealing && target == null){ + target = Geometry.findClosest(unit.x, unit.y, indexer.getDamaged(Team.sharded)); + if(target != null && !unit.within(target, range)){ + target = null; + } + } + + if(target != null && player.isMiner()){ + player.miner().mineTile(null); + } + } + }else{ + Vec2 intercept = Predict.intercept(unit, target, bulletSpeed); + + player.mouseX = intercept.x; + player.mouseY = intercept.y; + player.shooting = true; + + unit.aim(player.mouseX, player.mouseY); + } + + } + + unit.controlWeapons(player.shooting && !boosted); + } + + + protected void handleTapTarget(Teamc target){ + + } + //endregion } diff --git a/core/src/mindustry/input/Placement.java b/core/src/mindustry/input/Placement.java index 1d06fbd907..d2c3eb7d41 100644 --- a/core/src/mindustry/input/Placement.java +++ b/core/src/mindustry/input/Placement.java @@ -154,7 +154,7 @@ public class Placement{ public static NormalizeDrawResult normalizeDrawArea(Block block, int startx, int starty, int endx, int endy, boolean snap, int maxLength, float scaling){ normalizeArea(startx, starty, endx, endy, 0, snap, maxLength); - float offset = block.offset(); + float offset = block.offset; drawResult.x = result.x * tilesize; drawResult.y = result.y * tilesize; diff --git a/core/src/mindustry/io/TypeIO.java b/core/src/mindustry/io/TypeIO.java index 2e88a1bb71..5330f89af2 100644 --- a/core/src/mindustry/io/TypeIO.java +++ b/core/src/mindustry/io/TypeIO.java @@ -159,7 +159,7 @@ public class TypeIO{ Unit unit = Groups.unit.getByID(id); return unit == null ? Nulls.unit : unit; }else if(type == 1){ //block - Building tile = world.ent(id); + Building tile = world.build(id); return tile instanceof ControlBlock ? ((ControlBlock)tile).unit() : Nulls.unit; } return Nulls.unit; @@ -178,7 +178,7 @@ public class TypeIO{ } public static Building readBuilding(Reads read){ - return world.ent(read.i()); + return world.build(read.i()); } public static void writeTile(Writes write, Tile tile){ @@ -266,10 +266,10 @@ public class TypeIO{ //no real unit controller state is written, only the type if(control instanceof Player){ write.b(0); - write.i(((Player)control).id()); + write.i(((Player)control).id); }else if(control instanceof FormationAI){ write.b(1); - write.i(((FormationAI)control).leader.id()); + write.i(((FormationAI)control).leader.id); }else{ write.b(2); } diff --git a/core/src/mindustry/maps/generators/BaseGenerator.java b/core/src/mindustry/maps/generators/BaseGenerator.java index 3d8f11c4c2..90cc66418e 100644 --- a/core/src/mindustry/maps/generators/BaseGenerator.java +++ b/core/src/mindustry/maps/generators/BaseGenerator.java @@ -21,7 +21,7 @@ import static mindustry.Vars.*; public class BaseGenerator{ private static final Vec2 axis = new Vec2(), rotator = new Vec2(); - private final static int range = 180; + private static final int range = 180; private Tiles tiles; private Team team; diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index e4758a20a3..c2aad25a20 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -400,7 +400,7 @@ public class Mods implements Loadable{ d.button("$details", Icon.downOpen, Styles.transt, () -> { new Dialog(""){{ setFillParent(true); - cont.pane(e -> e.add(c.minfo.error)).grow(); + cont.pane(e -> e.add(c.minfo.error).wrap().grow()).grow(); cont.row(); cont.button("$ok", Icon.left, this::hide).size(240f, 60f); }}.show(); diff --git a/core/src/mindustry/net/Administration.java b/core/src/mindustry/net/Administration.java index 0c3b64f512..9c95b467cf 100644 --- a/core/src/mindustry/net/Administration.java +++ b/core/src/mindustry/net/Administration.java @@ -139,6 +139,9 @@ public class Administration{ /** @return whether this action is allowed by the action filters. */ public boolean allowAction(Player player, ActionType type, Tile tile, Cons setter){ + //some actions are done by the server (null player) and thus are always allowed + if(player == null) return true; + PlayerAction act = Pools.obtain(PlayerAction.class, PlayerAction::new); setter.get(act.set(player, type, tile)); for(ActionFilter filter : actionFilters){ diff --git a/core/src/mindustry/type/StatusEffect.java b/core/src/mindustry/type/StatusEffect.java index 5cc9a15308..1172b4d06c 100644 --- a/core/src/mindustry/type/StatusEffect.java +++ b/core/src/mindustry/type/StatusEffect.java @@ -52,7 +52,7 @@ public class StatusEffect extends MappableContent{ if(damage > 0){ unit.damageContinuousPierce(damage); }else if(damage < 0){ //heal unit - unit.heal(damage * Time.delta()); + unit.heal(damage * Time.delta); } if(effect != Fx.none && Mathf.chanceDelta(effectChance)){ diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 1941cca601..501ad22c6d 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -18,6 +18,7 @@ import mindustry.content.*; import mindustry.ctype.*; import mindustry.entities.*; import mindustry.entities.abilities.*; +import mindustry.entities.bullet.*; import mindustry.entities.units.*; import mindustry.game.*; import mindustry.gen.*; @@ -32,7 +33,7 @@ public class UnitType extends UnlockableContent{ public static final float shadowTX = -12, shadowTY = -13, shadowColor = Color.toFloatBits(0, 0, 0, 0.22f); private static final Vec2 legOffset = new Vec2(); - //TODO document + /** If true, the unit is always at elevation 1. */ public boolean flying; public @NonNull Prov constructor; public @NonNull Prov defaultController = () -> !flying ? new GroundAI() : new FlyingAI(); @@ -75,6 +76,8 @@ public class UnitType extends UnlockableContent{ public int parts = 0; public int trailLength = 3; public float trailX = 4f, trailY = -3f, trailScl = 1f; + /** Whether the unit can heal blocks. Initialized in init() */ + public boolean canHeal = false; public ObjectSet immunities = new ObjectSet<>(); public Sound deathSound = Sounds.bang; @@ -109,7 +112,7 @@ public class UnitType extends UnlockableContent{ public void update(Unit unit){ if(abilities.size > 0){ - for(mindustry.entities.abilities.Ability a : abilities){ + for(Ability a : abilities){ a.update(unit); } } @@ -132,10 +135,20 @@ public class UnitType extends UnlockableContent{ bars.row(); if(state.rules.unitAmmo){ - bars.add(new Bar("blocks.ammo", Pal.ammo, () -> (float)unit.ammo / ammoCapacity)); + bars.add(new Bar("blocks.ammo", Pal.ammo, () -> unit.ammo / ammoCapacity)); bars.row(); } }).growX(); + + table.row(); + if(unit.deactivated){ + table.table(d -> { + d.left(); + + d.label(() -> Core.bundle.format("bar.limitreached", unit.count(), unit.cap(), Fonts.getUnicodeStr(name))); + }).left().visible(() -> unit.deactivated); + } + } @Override @@ -155,6 +168,8 @@ public class UnitType extends UnlockableContent{ } } + canHeal = weapons.contains(w -> w.bullet instanceof HealBulletType); + //add mirrored weapon variants Seq mapped = new Seq<>(); for(Weapon w : weapons){ @@ -266,6 +281,10 @@ public class UnitType extends UnlockableContent{ unit.trns(-legOffset.x, -legOffset.y); } + if(unit.deactivated){ + drawDeactive(unit); + } + if(abilities.size > 0){ for(Ability a : abilities){ a.draw(unit); @@ -274,6 +293,16 @@ public class UnitType extends UnlockableContent{ } } + public void drawDeactive(Unit unit){ + Draw.color(Color.scarlet); + Draw.alpha(0.8f); + + float size = 8f; + Draw.rect(Icon.warning.getRegion(), unit.x, unit.y, size, size); + + Draw.reset(); + } + public void drawPayload(T unit){ if(unit.hasPayload()){ Payload pay = unit.payloads().first(); diff --git a/core/src/mindustry/type/Weather.java b/core/src/mindustry/type/Weather.java index 6ea132e428..a1d23a0a76 100644 --- a/core/src/mindustry/type/Weather.java +++ b/core/src/mindustry/type/Weather.java @@ -127,7 +127,7 @@ public abstract class Weather extends MappableContent{ opacity = Mathf.lerpDelta(opacity, 1f, 0.004f); } - life -= Time.delta(); + life -= Time.delta; weather.update(base()); diff --git a/core/src/mindustry/ui/Fonts.java b/core/src/mindustry/ui/Fonts.java index 40d3687fa6..ef10ba3f54 100644 --- a/core/src/mindustry/ui/Fonts.java +++ b/core/src/mindustry/ui/Fonts.java @@ -28,6 +28,7 @@ import java.util.*; public class Fonts{ private static ObjectIntMap unicodeIcons = new ObjectIntMap<>(); + private static ObjectMap stringIcons = new ObjectMap<>(); public static BitmapFont def; public static BitmapFont outline; @@ -39,6 +40,10 @@ public class Fonts{ return unicodeIcons.get(content, 0); } + public static String getUnicodeStr(String content){ + return stringIcons.get(content, ""); + } + /** Called from a static context to make the cursor appear immediately upon startup.*/ public static void loadSystemCursors(){ SystemCursor.arrow.set(Core.graphics.newCursor("cursor", cursorScale())); @@ -86,6 +91,7 @@ public class Fonts{ } unicodeIcons.put(nametex[0], ch); + stringIcons.put(nametex[0], ((char)ch) + ""); Glyph glyph = new Glyph(); glyph.id = ch; diff --git a/core/src/mindustry/ui/MultiReqImage.java b/core/src/mindustry/ui/MultiReqImage.java index 715f629088..53308eb51c 100644 --- a/core/src/mindustry/ui/MultiReqImage.java +++ b/core/src/mindustry/ui/MultiReqImage.java @@ -17,7 +17,7 @@ public class MultiReqImage extends Stack{ public void act(float delta){ super.act(delta); - time += Time.delta() / 60f; + time += Time.delta / 60f; displays.each(req -> req.visible(false)); diff --git a/core/src/mindustry/ui/dialogs/DatabaseDialog.java b/core/src/mindustry/ui/dialogs/DatabaseDialog.java index 3a12350a19..fa15d4aba8 100644 --- a/core/src/mindustry/ui/dialogs/DatabaseDialog.java +++ b/core/src/mindustry/ui/dialogs/DatabaseDialog.java @@ -62,7 +62,7 @@ public class DatabaseDialog extends BaseDialog{ image.addListener(listener); if(!Vars.mobile && unlocked(unlock)){ image.addListener(new HandCursorListener()); - image.update(() -> image.getColor().lerp(!listener.isOver() ? Color.lightGray : Color.white, 0.4f * Time.delta())); + image.update(() -> image.getColor().lerp(!listener.isOver() ? Color.lightGray : Color.white, 0.4f * Time.delta)); } if(unlocked(unlock)){ diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 7e63b4533f..4d008d96e4 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -416,7 +416,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ stable.update(() -> { if(selected != null){ if(launching){ - stable.getColor().sub(0, 0, 0, 0.05f * Time.delta()); + stable.getColor().sub(0, 0, 0, 0.05f * Time.delta); }else{ //fade out UI when not facing selected sector Tmp.v31.set(selected.tile.v).rotate(Vec3.Y, -planets.planet.getRotation()).scl(-1f).nor(); diff --git a/core/src/mindustry/ui/fragments/BlockInventoryFragment.java b/core/src/mindustry/ui/fragments/BlockInventoryFragment.java index 9ba68ae719..4ec5a83e5f 100644 --- a/core/src/mindustry/ui/fragments/BlockInventoryFragment.java +++ b/core/src/mindustry/ui/fragments/BlockInventoryFragment.java @@ -28,8 +28,8 @@ import java.util.*; import static mindustry.Vars.*; public class BlockInventoryFragment extends Fragment{ - private final static float holdWithdraw = 20f; - private final static float holdShrink = 120f; + private static final float holdWithdraw = 20f; + private static final float holdShrink = 120f; private Table table = new Table(); private Building tile; @@ -110,13 +110,13 @@ public class BlockInventoryFragment extends Fragment{ hide(); }else{ if(tile.items.total() == 0){ - emptyTime += Time.delta(); + emptyTime += Time.delta; }else{ emptyTime = 0f; } if(holding && lastItem != null){ - holdTime += Time.delta(); + holdTime += Time.delta; if(holdTime >= holdWithdraw){ int amount = Math.min(tile.items.get(lastItem), player.unit().maxAccepted(lastItem)); @@ -140,7 +140,7 @@ public class BlockInventoryFragment extends Fragment{ shrinkHoldTimes[i] = 0f; dirty |= !had; }else if(had){ - shrinkHoldTimes[i] += Time.delta(); + shrinkHoldTimes[i] += Time.delta; dirty |= shrinkHoldTimes[i] >= holdShrink; } } diff --git a/core/src/mindustry/ui/fragments/ChatFragment.java b/core/src/mindustry/ui/fragments/ChatFragment.java index 7b5057bb46..c1e780e144 100644 --- a/core/src/mindustry/ui/fragments/ChatFragment.java +++ b/core/src/mindustry/ui/fragments/ChatFragment.java @@ -21,7 +21,7 @@ import static mindustry.Vars.net; import static mindustry.Vars.*; public class ChatFragment extends Table{ - private final static int messagesShown = 10; + private static final int messagesShown = 10; private Seq messages = new Seq<>(); private float fadetime; private boolean shown = false; @@ -164,7 +164,7 @@ public class ChatFragment extends Table{ Draw.color(); if(fadetime > 0 && !shown) - fadetime -= Time.delta() / 180f; + fadetime -= Time.delta / 180f; } private void sendMessage(){ diff --git a/core/src/mindustry/ui/fragments/HudFragment.java b/core/src/mindustry/ui/fragments/HudFragment.java index 1032a7e749..eb5f94dbae 100644 --- a/core/src/mindustry/ui/fragments/HudFragment.java +++ b/core/src/mindustry/ui/fragments/HudFragment.java @@ -257,7 +257,7 @@ public class HudFragment extends Fragment{ coreAttackOpacity[0] = Mathf.lerpDelta(coreAttackOpacity[0], 0f, 0.1f); } - coreAttackTime[0] -= Time.delta(); + coreAttackTime[0] -= Time.delta; return coreAttackOpacity[0] > 0; }); diff --git a/core/src/mindustry/ui/fragments/PlacementFragment.java b/core/src/mindustry/ui/fragments/PlacementFragment.java index 671b6d4f8a..393e7f6272 100644 --- a/core/src/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/mindustry/ui/fragments/PlacementFragment.java @@ -34,6 +34,7 @@ public class PlacementFragment extends Fragment{ ObjectMap selectedBlocks = new ObjectMap<>(); ObjectFloatMap scrollPositions = new ObjectFloatMap<>(); Block menuHoverBlock; + Displayable hover; Object lastDisplayState; boolean wasHovered; Table blockTable, toggler, topTable; @@ -90,7 +91,7 @@ public class PlacementFragment extends Fragment{ scrollPositions.put(currentCategory, blockPane.getScrollY()); if(Core.input.keyDown(Binding.pick) && player.isBuilder()){ //mouse eyedropper select - Building tile = world.entWorld(Core.input.mouseWorld().x, Core.input.mouseWorld().y); + Building tile = world.buildWorld(Core.input.mouseWorld().x, Core.input.mouseWorld().y); Block tryRecipe = tile == null ? null : tile.block(); Object tryConfig = tile == null ? null : tile.config(); @@ -262,7 +263,7 @@ public class PlacementFragment extends Fragment{ top.add(new Table()).growX().update(topTable -> { //find current hovered thing - Displayable hovered = hovered(); + Displayable hovered = hover; Block displayBlock = menuHoverBlock != null ? menuHoverBlock : control.input.block; Object displayState = displayBlock != null ? displayBlock : hovered; boolean isHovered = displayBlock == null; //use hovered thing if displayblock is null @@ -430,7 +431,8 @@ public class PlacementFragment extends Fragment{ } boolean hasInfoBox(){ - return control.input.block != null || menuHoverBlock != null || hovered() != null; + hover = hovered(); + return control.input.block != null || menuHoverBlock != null || hover != null; } /** Returns the thing being hovered over. */ @@ -449,9 +451,9 @@ public class PlacementFragment extends Fragment{ //check tile being hovered over Tile hoverTile = world.tileWorld(Core.input.mouseWorld().x, Core.input.mouseWorld().y); if(hoverTile != null){ - //if the tile has an entity, display it + //if the tile has a building, display it if(hoverTile.build != null){ - hoverTile.build.updateFlow(true); + hoverTile.build.updateFlow = true; return hoverTile.build; } diff --git a/core/src/mindustry/ui/fragments/ScriptConsoleFragment.java b/core/src/mindustry/ui/fragments/ScriptConsoleFragment.java index 7a057a262d..d19a278a29 100644 --- a/core/src/mindustry/ui/fragments/ScriptConsoleFragment.java +++ b/core/src/mindustry/ui/fragments/ScriptConsoleFragment.java @@ -19,7 +19,7 @@ import static arc.Core.*; import static mindustry.Vars.*; public class ScriptConsoleFragment extends Table{ - private final static int messagesShown = 30; + private static final int messagesShown = 30; private Seq messages = new Seq<>(); private boolean open = false, shown; private TextField chatfield; diff --git a/core/src/mindustry/world/Block.java b/core/src/mindustry/world/Block.java index 6628c74dea..ee08bb03ed 100644 --- a/core/src/mindustry/world/Block.java +++ b/core/src/mindustry/world/Block.java @@ -96,6 +96,8 @@ public class Block extends UnlockableContent{ public boolean floating = false; /** multiblock size */ public int size = 1; + /** multiblock offset */ + public float offset = 0f; /** Whether to draw this block in the expanded draw range. */ public boolean expanded = false; /** Max of timers used. */ @@ -242,7 +244,7 @@ public class Block extends UnlockableContent{ float width = layout.width; font.setColor(color); - float dx = x * tilesize + offset(), dy = y * tilesize + offset() + size * tilesize / 2f + 3; + float dx = x * tilesize + offset, dy = y * tilesize + offset + size * tilesize / 2f + 3; font.draw(text, dx, dy + layout.height + 1, Align.center); dy -= 1f; Lines.stroke(2f, Color.darkGray); @@ -470,13 +472,8 @@ public class Block extends UnlockableContent{ return entityType.get(); } - /** Offset for placing and drawing multiblocks. */ - public float offset(){ - return ((size + 1) % 2) * tilesize / 2f; - } - public Rect bounds(int x, int y, Rect rect){ - return rect.setSize(size * tilesize).setCenter(x * tilesize + offset(), y * tilesize + offset()); + return rect.setSize(size * tilesize).setCenter(x * tilesize + offset, y * tilesize + offset); } public boolean isMultiblock(){ @@ -604,6 +601,8 @@ public class Block extends UnlockableContent{ health = size * size * 40; } + offset = ((size + 1) % 2) * tilesize / 2f; + buildCost = 0f; for(ItemStack stack : requirements){ buildCost += stack.amount * stack.item.cost; diff --git a/core/src/mindustry/world/Build.java b/core/src/mindustry/world/Build.java index bf421592b3..5ea1ef3aae 100644 --- a/core/src/mindustry/world/Build.java +++ b/core/src/mindustry/world/Build.java @@ -73,11 +73,11 @@ public class Build{ return false; } - if((type.solid || type.solidifes) && Units.anyEntities(x * tilesize + type.offset() - type.size*tilesize/2f, y * tilesize + type.offset() - type.size*tilesize/2f, type.size * tilesize, type.size*tilesize)){ + if((type.solid || type.solidifes) && Units.anyEntities(x * tilesize + type.offset - type.size*tilesize/2f, y * tilesize + type.offset - type.size*tilesize/2f, type.size * tilesize, type.size*tilesize)){ return false; } - if(state.teams.eachEnemyCore(team, core -> Mathf.dst(x * tilesize + type.offset(), y * tilesize + type.offset(), core.x, core.y) < state.rules.enemyCoreBuildRadius + type.size * tilesize / 2f)){ + if(state.teams.eachEnemyCore(team, core -> Mathf.dst(x * tilesize + type.offset, y * tilesize + type.offset, core.x, core.y) < state.rules.enemyCoreBuildRadius + type.size * tilesize / 2f)){ return false; } diff --git a/core/src/mindustry/world/Tile.java b/core/src/mindustry/world/Tile.java index 1153fe09cb..93aab9bcc9 100644 --- a/core/src/mindustry/world/Tile.java +++ b/core/src/mindustry/world/Tile.java @@ -121,11 +121,11 @@ public class Tile implements Position, QuadTreeObject, Displayable{ } public float drawx(){ - return block().offset() + worldx(); + return block().offset + worldx(); } public float drawy(){ - return block().offset() + worldy(); + return block().offset + worldy(); } public boolean isDarkened(){ @@ -436,10 +436,10 @@ public class Tile implements Position, QuadTreeObject, Displayable{ } public Building getNearbyEntity(int rotation){ - if(rotation == 0) return world.ent(x + 1, y); - if(rotation == 1) return world.ent(x, y + 1); - if(rotation == 2) return world.ent(x - 1, y); - if(rotation == 3) return world.ent(x, y - 1); + if(rotation == 0) return world.build(x + 1, y); + if(rotation == 1) return world.build(x, y + 1); + if(rotation == 2) return world.build(x - 1, y); + if(rotation == 3) return world.build(x, y - 1); return null; } @@ -558,7 +558,7 @@ public class Tile implements Position, QuadTreeObject, Displayable{ tileSet.clear(); for(Point2 edge : Edges.getEdges(size)){ - Building other = world.ent(x + edge.x, y + edge.y); + Building other = world.build(x + edge.x, y + edge.y); if(other != null){ tileSet.add(other); } @@ -582,7 +582,7 @@ public class Tile implements Position, QuadTreeObject, Displayable{ }else{ //since the entity won't update proximity for us, update proximity for all nearby tiles manually for(Point2 p : Geometry.d4){ - Building tile = world.ent(x + p.x, y + p.y); + Building tile = world.build(x + p.x, y + p.y); if(tile != null && !tile.tile().changing){ tile.onProximityUpdate(); } diff --git a/core/src/mindustry/world/blocks/defense/ForceProjector.java b/core/src/mindustry/world/blocks/defense/ForceProjector.java index a2570b8385..44243f9fb6 100644 --- a/core/src/mindustry/world/blocks/defense/ForceProjector.java +++ b/core/src/mindustry/world/blocks/defense/ForceProjector.java @@ -126,7 +126,7 @@ public class ForceProjector extends Block{ } if(hit > 0f){ - hit -= 1f / 5f * Time.delta(); + hit -= 1f / 5f * Time.delta; } float realRadius = realRadius(); diff --git a/core/src/mindustry/world/blocks/defense/MendProjector.java b/core/src/mindustry/world/blocks/defense/MendProjector.java index eea22dc31a..dfa10b9383 100644 --- a/core/src/mindustry/world/blocks/defense/MendProjector.java +++ b/core/src/mindustry/world/blocks/defense/MendProjector.java @@ -52,7 +52,7 @@ public class MendProjector extends Block{ @Override public void drawPlace(int x, int y, int rotation, boolean valid){ - Drawf.dashCircle(x * tilesize + offset(), y * tilesize + offset(), range, Pal.accent); + Drawf.dashCircle(x * tilesize + offset, y * tilesize + offset, range, Pal.accent); } public class MendEntity extends Building{ diff --git a/core/src/mindustry/world/blocks/defense/OverdriveProjector.java b/core/src/mindustry/world/blocks/defense/OverdriveProjector.java index f21bc14d08..034b7407b7 100644 --- a/core/src/mindustry/world/blocks/defense/OverdriveProjector.java +++ b/core/src/mindustry/world/blocks/defense/OverdriveProjector.java @@ -43,7 +43,7 @@ public class OverdriveProjector extends Block{ @Override public void drawPlace(int x, int y, int rotation, boolean valid){ - Drawf.dashCircle(x * tilesize + offset(), y * tilesize + offset(), range, Pal.accent); + Drawf.dashCircle(x * tilesize + offset, y * tilesize + offset, range, Pal.accent); } @Override @@ -73,7 +73,7 @@ public class OverdriveProjector extends Block{ @Override public void updateTile(){ heat = Mathf.lerpDelta(heat, consValid() ? 1f : 0f, 0.08f); - charge += heat * Time.delta(); + charge += heat * Time.delta; if(hasBoost){ phaseHeat = Mathf.lerpDelta(phaseHeat, Mathf.num(cons().optionalValid()), 0.1f); diff --git a/core/src/mindustry/world/blocks/defense/PointDefenseTurret.java b/core/src/mindustry/world/blocks/defense/PointDefenseTurret.java index 25e5439c69..51df62d6fe 100644 --- a/core/src/mindustry/world/blocks/defense/PointDefenseTurret.java +++ b/core/src/mindustry/world/blocks/defense/PointDefenseTurret.java @@ -44,7 +44,7 @@ public class PointDefenseTurret extends Block{ @Override public void drawPlace(int x, int y, int rotation, boolean valid){ - Drawf.dashCircle(x * tilesize + offset(), y * tilesize + offset(), range, Pal.accent); + Drawf.dashCircle(x * tilesize + offset, y * tilesize + offset, range, Pal.accent); } @Override diff --git a/core/src/mindustry/world/blocks/defense/TractorBeamTurret.java b/core/src/mindustry/world/blocks/defense/TractorBeamTurret.java index 941393b22d..5bffb5c032 100644 --- a/core/src/mindustry/world/blocks/defense/TractorBeamTurret.java +++ b/core/src/mindustry/world/blocks/defense/TractorBeamTurret.java @@ -42,7 +42,7 @@ public class TractorBeamTurret extends Block{ @Override public void drawPlace(int x, int y, int rotation, boolean valid){ - Drawf.dashCircle(x * tilesize + offset(), y * tilesize + offset(), range, Pal.accent); + Drawf.dashCircle(x * tilesize + offset, y * tilesize + offset, range, Pal.accent); } @Override diff --git a/core/src/mindustry/world/blocks/defense/Wall.java b/core/src/mindustry/world/blocks/defense/Wall.java index 09ca13b6c5..0a4cae8de7 100644 --- a/core/src/mindustry/world/blocks/defense/Wall.java +++ b/core/src/mindustry/world/blocks/defense/Wall.java @@ -78,7 +78,7 @@ public class Wall extends Block{ Draw.blend(); Draw.reset(); - hit = Mathf.clamp(hit - Time.delta() / 10f); + hit = Mathf.clamp(hit - Time.delta / 10f); } } diff --git a/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java b/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java index 4eee57f8f0..a7554b49f8 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java @@ -60,7 +60,7 @@ public class LaserTurret extends PowerTurret{ bullet.time(0f); heat = 1f; recoil = recoilAmount; - bulletLife -= Time.delta() / Math.max(efficiency(), 0.00001f); + bulletLife -= Time.delta / Math.max(efficiency(), 0.00001f); if(bulletLife <= 0f){ bullet = null; } @@ -68,7 +68,7 @@ public class LaserTurret extends PowerTurret{ Liquid liquid = liquids().current(); float maxUsed = consumes.get(ConsumeType.liquid).amount; - float used = (cheating() ? maxUsed * Time.delta() : Math.min(liquids.get(liquid), maxUsed * Time.delta())) * liquid.heatCapacity * coolantMultiplier; + float used = (cheating() ? maxUsed * Time.delta : Math.min(liquids.get(liquid), maxUsed * Time.delta)) * liquid.heatCapacity * coolantMultiplier; reload -= used; liquids.remove(liquid, used); diff --git a/core/src/mindustry/world/blocks/defense/turrets/LiquidTurret.java b/core/src/mindustry/world/blocks/defense/turrets/LiquidTurret.java index ec54d28e90..9109937f95 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/LiquidTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/LiquidTurret.java @@ -41,6 +41,11 @@ public class LiquidTurret extends Turret{ return entity.liquids.total() > 0.001f; } + @Override + public void update(Building entity){ + + } + @Override public void display(BlockStats stats){ diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 728e91f11d..73b478d582 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -128,7 +128,7 @@ public abstract class Turret extends Block{ @Override public void drawPlace(int x, int y, int rotation, boolean valid){ - Drawf.dashCircle(x * tilesize + offset(), y * tilesize + offset(), range, Pal.placing); + Drawf.dashCircle(x * tilesize + offset, y * tilesize + offset, range, Pal.placing); } public static abstract class AmmoEntry{ @@ -249,7 +249,7 @@ public abstract class Turret extends Block{ Liquid liquid = liquids.current(); - float used = Math.min(Math.min(liquids.get(liquid), maxUsed * Time.delta()), Math.max(0, ((reloadTime - reload) / coolantMultiplier) / liquid.heatCapacity)) * baseReloadSpeed(); + float used = Math.min(Math.min(liquids.get(liquid), maxUsed * Time.delta), Math.max(0, ((reloadTime - reload) / coolantMultiplier) / liquid.heatCapacity)) * baseReloadSpeed(); reload += used * liquid.heatCapacity * coolantMultiplier; liquids.remove(liquid, used); diff --git a/core/src/mindustry/world/blocks/distribution/MassDriver.java b/core/src/mindustry/world/blocks/distribution/MassDriver.java index eeb4b639a5..6cd1e57d6c 100644 --- a/core/src/mindustry/world/blocks/distribution/MassDriver.java +++ b/core/src/mindustry/world/blocks/distribution/MassDriver.java @@ -62,7 +62,7 @@ public class MassDriver extends Block{ //if so, draw a dotted line towards it while it is in range float sin = Mathf.absin(Time.time(), 6f, 1f); - Tmp.v1.set(x * tilesize + offset(), y * tilesize + offset()).sub(selected.x, selected.y).limit((size / 2f + 1) * tilesize + sin + 0.5f); + Tmp.v1.set(x * tilesize + offset, y * tilesize + offset).sub(selected.x, selected.y).limit((size / 2f + 1) * tilesize + sin + 0.5f); float x2 = x * tilesize - Tmp.v1.x, y2 = y * tilesize - Tmp.v1.y, x1 = selected.x + Tmp.v1.x, y1 = selected.y + Tmp.v1.y; int segs = (int)(selected.dst(x * tilesize, y * tilesize) / tilesize); @@ -98,7 +98,7 @@ public class MassDriver extends Block{ @Override public void updateTile(){ - Building link = world.ent(this.link); + Building link = world.build(this.link); boolean hasLink = linkValid(); //reload regardless of state diff --git a/core/src/mindustry/world/blocks/distribution/OverflowGate.java b/core/src/mindustry/world/blocks/distribution/OverflowGate.java index 2fa2417c4b..2c80b29a1e 100644 --- a/core/src/mindustry/world/blocks/distribution/OverflowGate.java +++ b/core/src/mindustry/world/blocks/distribution/OverflowGate.java @@ -61,7 +61,7 @@ public class OverflowGate extends Block{ return; } - time += 1f / speed * Time.delta(); + time += 1f / speed * Time.delta; Building target = getTileTarget(lastItem, lastInput, false); if(target != null && (time >= 1f)){ diff --git a/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java b/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java index bff33e8ba6..d4a56458ff 100644 --- a/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java +++ b/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java @@ -41,7 +41,7 @@ public class PayloadConveyor extends Block{ super.drawPlace(x, y, rotation, valid); for(int i = 0; i < 4; i++){ - Building other = world.ent(x + Geometry.d4x[i] * size, y + Geometry.d4y[i] * size); + Building other = world.build(x + Geometry.d4x[i] * size, y + Geometry.d4y[i] * size); if(other != null && other.block().outputsPayload && other.block().size == size){ Drawf.selected(other.tileX(), other.tileY(), other.block(), Pal.accent); } @@ -88,6 +88,11 @@ public class PayloadConveyor extends Block{ blocked = (next != null && next.solid()) || (this.next != null && (this.next.rotation() + 2)%4 == rotation()); } + @Override + public Payload getPayload(){ + return item; + } + @Override public void updateTile(){ progress = Time.time() % moveTime; diff --git a/core/src/mindustry/world/blocks/distribution/StackConveyor.java b/core/src/mindustry/world/blocks/distribution/StackConveyor.java index abd62e28bf..1868e02662 100644 --- a/core/src/mindustry/world/blocks/distribution/StackConveyor.java +++ b/core/src/mindustry/world/blocks/distribution/StackConveyor.java @@ -60,7 +60,7 @@ public class StackConveyor extends Block implements Autotiler{ return (otherblock.hasItems || otherblock.outputsItems() || otherblock.acceptsItems) && (notLookingAt(tile, rotation, otherx, othery, otherrot, otherblock) || (otherblock instanceof StackConveyor && facing(otherx, othery, otherrot, tile.x, tile.y))) && - !(world.ent(otherx, othery) instanceof StackConveyorEntity && ((StackConveyorEntity)world.ent(otherx, othery)).state == stateUnload); + !(world.build(otherx, othery) instanceof StackConveyorEntity && ((StackConveyorEntity)world.build(otherx, othery)).state == stateUnload); } } return otherblock.outputsItems() && blendsArmored(tile, rotation, otherx, othery, otherrot, otherblock) && otherblock instanceof StackConveyor; @@ -84,7 +84,7 @@ public class StackConveyor extends Block implements Autotiler{ @Override public boolean rotatedOutput(int x, int y){ - Building tile = world.ent(x, y); + Building tile = world.build(x, y); if(tile instanceof StackConveyorEntity){ return ((StackConveyorEntity)tile).state != stateUnload; } diff --git a/core/src/mindustry/world/blocks/liquid/LiquidBridge.java b/core/src/mindustry/world/blocks/liquid/LiquidBridge.java index c0eb7d44bd..f8de48a4ff 100644 --- a/core/src/mindustry/world/blocks/liquid/LiquidBridge.java +++ b/core/src/mindustry/world/blocks/liquid/LiquidBridge.java @@ -26,7 +26,7 @@ public class LiquidBridge extends ItemBridge{ checkIncoming(); - Building other = world.ent(link); + Building other = world.build(link); if(other == null || !linkValid(tile, other.tile())){ dumpLiquid(liquids.current()); }else{ diff --git a/core/src/mindustry/world/blocks/liquid/LiquidExtendingBridge.java b/core/src/mindustry/world/blocks/liquid/LiquidExtendingBridge.java index 538354ded9..8ceef95d12 100644 --- a/core/src/mindustry/world/blocks/liquid/LiquidExtendingBridge.java +++ b/core/src/mindustry/world/blocks/liquid/LiquidExtendingBridge.java @@ -26,7 +26,7 @@ public class LiquidExtendingBridge extends ExtendingItemBridge{ checkIncoming(); - Building other = world.ent(link); + Building other = world.build(link); if(other == null || !linkValid(tile, other.tile())){ dumpLiquid(liquids.current()); }else{ diff --git a/core/src/mindustry/world/blocks/payloads/BlockPayload.java b/core/src/mindustry/world/blocks/payloads/BlockPayload.java index b73836e9e5..ddc013b4c2 100644 --- a/core/src/mindustry/world/blocks/payloads/BlockPayload.java +++ b/core/src/mindustry/world/blocks/payloads/BlockPayload.java @@ -33,6 +33,11 @@ public class BlockPayload implements Payload{ tile.setBlock(entity.block(), entity.team(), rotation, () -> entity); } + @Override + public boolean canBeTaken(Payloadc picker){ + return entity.block.size <= 2; + } + @Override public boolean fits(){ return entity.block().size < 3; diff --git a/core/src/mindustry/world/blocks/payloads/Payload.java b/core/src/mindustry/world/blocks/payloads/Payload.java index a63698d09b..3a136474b3 100644 --- a/core/src/mindustry/world/blocks/payloads/Payload.java +++ b/core/src/mindustry/world/blocks/payloads/Payload.java @@ -27,6 +27,11 @@ public interface Payload{ return true; } + /** @return whether the unit can pick up this payload. */ + default boolean canBeTaken(Payloadc picker){ + return true; + } + /** writes the payload for saving. */ void write(Writes write); diff --git a/core/src/mindustry/world/blocks/payloads/UnitPayload.java b/core/src/mindustry/world/blocks/payloads/UnitPayload.java index ff4e1d80ef..ee912480de 100644 --- a/core/src/mindustry/world/blocks/payloads/UnitPayload.java +++ b/core/src/mindustry/world/blocks/payloads/UnitPayload.java @@ -20,6 +20,11 @@ public class UnitPayload implements Payload{ return unit.hitSize <= 16f; } + @Override + public boolean canBeTaken(Payloadc picker){ + return unit.hitSize < picker.hitSize(); + } + @Override public void write(Writes write){ write.b(payloadUnit); diff --git a/core/src/mindustry/world/blocks/power/NuclearReactor.java b/core/src/mindustry/world/blocks/power/NuclearReactor.java index 51db86567f..ec8abc9176 100644 --- a/core/src/mindustry/world/blocks/power/NuclearReactor.java +++ b/core/src/mindustry/world/blocks/power/NuclearReactor.java @@ -159,7 +159,7 @@ public class NuclearReactor extends PowerGenerator{ if(heat > flashThreshold){ float flash = 1f + ((heat - flashThreshold) / (1f - flashThreshold)) * 5.4f; - flash += flash * Time.delta(); + flash += flash * Time.delta; Draw.color(Color.red, Color.yellow, Mathf.absin(flash, 9f, 1f)); Draw.alpha(0.6f); Draw.rect(lightsRegion, x, y); diff --git a/core/src/mindustry/world/blocks/power/PowerGraph.java b/core/src/mindustry/world/blocks/power/PowerGraph.java index 302b2a06c1..e0447dbad5 100644 --- a/core/src/mindustry/world/blocks/power/PowerGraph.java +++ b/core/src/mindustry/world/blocks/power/PowerGraph.java @@ -8,10 +8,10 @@ import mindustry.gen.*; import mindustry.world.consumers.*; public class PowerGraph{ - private final static Queue queue = new Queue<>(); - private final static Seq outArray1 = new Seq<>(); - private final static Seq outArray2 = new Seq<>(); - private final static IntSet closedSet = new IntSet(); + private static final Queue queue = new Queue<>(); + private static final Seq outArray1 = new Seq<>(); + private static final Seq outArray2 = new Seq<>(); + private static final IntSet closedSet = new IntSet(); private final ObjectSet producers = new ObjectSet<>(); private final ObjectSet consumers = new ObjectSet<>(); @@ -197,7 +197,7 @@ public class PowerGraph{ lastPowerNeeded = powerNeeded; lastPowerProduced = powerProduced; - powerBalance.add((lastPowerProduced - lastPowerNeeded) / Time.delta()); + powerBalance.add((lastPowerProduced - lastPowerNeeded) / Time.delta); if(!(consumers.size == 0 && producers.size == 0 && batteries.size == 0)){ diff --git a/core/src/mindustry/world/blocks/power/PowerNode.java b/core/src/mindustry/world/blocks/power/PowerNode.java index 3a40d185bb..ae76588b8b 100644 --- a/core/src/mindustry/world/blocks/power/PowerNode.java +++ b/core/src/mindustry/world/blocks/power/PowerNode.java @@ -41,7 +41,7 @@ public class PowerNode extends PowerBlock{ outputsPower = false; config(Integer.class, (entity, value) -> { PowerModule power = entity.power; - Building other = world.ent(value); + Building other = world.build(value); boolean contains = power.links.contains(value), valid = other != null && other.power() != null; if(contains){ @@ -119,7 +119,7 @@ public class PowerNode extends PowerBlock{ Lines.stroke(1f); Draw.color(Pal.placing); - Drawf.circles(x * tilesize + offset(), y * tilesize + offset(), laserRange * tilesize); + Drawf.circles(x * tilesize + offset, y * tilesize + offset, laserRange * tilesize); getPotentialLinks(tile, other -> { Drawf.square(other.x, other.y, other.block().size * tilesize / 2f + 2f, Pal.place); @@ -167,13 +167,13 @@ public class PowerNode extends PowerBlock{ public boolean overlaps(@Nullable Tile src, @Nullable Tile other){ if(src == null || other == null) return true; - return Intersector.overlaps(Tmp.cr1.set(src.worldx() + offset(), src.worldy() + offset(), laserRange * tilesize), Tmp.r1.setSize(size * tilesize).setCenter(other.worldx() + offset(), other.worldy() + offset())); + return Intersector.overlaps(Tmp.cr1.set(src.worldx() + offset, src.worldy() + offset, laserRange * tilesize), Tmp.r1.setSize(size * tilesize).setCenter(other.worldx() + offset, other.worldy() + offset)); } protected void getPotentialLinks(Tile tile, Cons others){ Boolf valid = other -> other != null && other.tile() != tile && other.power() != null && ((!other.block().outputsPower && other.block().consumesPower) || (other.block().outputsPower && !other.block().consumesPower) || other.block() instanceof PowerNode) && - overlaps(tile.x * tilesize + offset(), tile.y * tilesize + offset(), other.tile(), laserRange * tilesize) && other.team() == player.team() + overlaps(tile.x * tilesize + offset, tile.y * tilesize + offset, other.tile(), laserRange * tilesize) && other.team() == player.team() && !other.proximity().contains(e -> e.tile() == tile) && !graphs.contains(other.power().graph); tempTileEnts.clear(); @@ -183,7 +183,7 @@ public class PowerNode extends PowerBlock{ } Geometry.circle(tile.x, tile.y, (int)(laserRange + 2), (x, y) -> { - Building other = world.ent(x, y); + Building other = world.build(x, y); if(valid.get(other) && !tempTileEnts.contains(other)){ tempTileEnts.add(other); } @@ -252,7 +252,7 @@ public class PowerNode extends PowerBlock{ public static void insulators(int x, int y, int x2, int y2, Cons iterator){ world.raycastEach(x, y, x2, y2, (wx, wy) -> { - Building tile = world.ent(wx, wy); + Building tile = world.build(wx, wy); if(tile != null && tile.block().insulated){ iterator.get(tile); } @@ -273,7 +273,7 @@ public class PowerNode extends PowerBlock{ tempTileEnts.clear(); Geometry.circle(tile.x, tile.y, (int)(laserRange + 2), (x, y) -> { - Building other = world.ent(x, y); + Building other = world.build(x, y); if(valid.get(other)){ if(!insulated(this, other)){ tempTileEnts.add(other); @@ -346,7 +346,7 @@ public class PowerNode extends PowerBlock{ for(int x = (int)(tile.x - laserRange - 2); x <= tile.x + laserRange + 2; x++){ for(int y = (int)(tile.y - laserRange - 2); y <= tile.y + laserRange + 2; y++){ - Building link = world.ent(x, y); + Building link = world.build(x, y); if(link != this && linkValid(this, link, false)){ boolean linked = linked(link); @@ -370,7 +370,7 @@ public class PowerNode extends PowerBlock{ Draw.z(Layer.power); for(int i = 0; i < power.links.size; i++){ - Building link = world.ent(power.links.get(i)); + Building link = world.build(power.links.get(i)); if(!linkValid(this, link)) continue; diff --git a/core/src/mindustry/world/blocks/production/Drill.java b/core/src/mindustry/world/blocks/production/Drill.java index cd827ade21..a893041396 100644 --- a/core/src/mindustry/world/blocks/production/Drill.java +++ b/core/src/mindustry/world/blocks/production/Drill.java @@ -117,7 +117,7 @@ public class Drill extends Block{ if(returnItem != null){ float width = drawPlaceText(Core.bundle.formatFloat("bar.drillspeed", 60f / (drillTime + hardnessDrillMultiplier * returnItem.hardness) * returnCount, 2), x, y, valid); - float dx = x * tilesize + offset() - width/2f - 4f, dy = y * tilesize + offset() + size * tilesize / 2f + 5; + float dx = x * tilesize + offset - width/2f - 4f, dy = y * tilesize + offset + size * tilesize / 2f + 5; Draw.mixcol(Color.darkGray, 1f); Draw.rect(returnItem.icon(Cicon.small), dx, dy - 1); Draw.reset(); diff --git a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java index 9ecbeba6ff..e48985ebe8 100644 --- a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java +++ b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java @@ -65,6 +65,11 @@ public class PayloadAcceptor extends Block{ updatePayload(); } + @Override + public Payload getPayload(){ + return payload; + } + @Override public Payload takePayload(){ T t = payload; diff --git a/core/src/mindustry/world/blocks/production/Pump.java b/core/src/mindustry/world/blocks/production/Pump.java index 0dff2b248b..ae77c42690 100644 --- a/core/src/mindustry/world/blocks/production/Pump.java +++ b/core/src/mindustry/world/blocks/production/Pump.java @@ -13,8 +13,8 @@ import mindustry.world.meta.*; import static mindustry.Vars.*; public class Pump extends LiquidBlock{ - /** Pump amount, total. */ - protected float pumpAmount = 1f; + /** Pump amount per tile. */ + protected float pumpAmount = 0.2f; public Pump(String name){ super(name); @@ -25,7 +25,7 @@ public class Pump extends LiquidBlock{ @Override public void setStats(){ super.setStats(); - stats.add(BlockStat.output, 60f * pumpAmount, StatUnit.liquidSecond); + stats.add(BlockStat.output, 60f * pumpAmount * size * size, StatUnit.liquidSecond); } @Override @@ -44,8 +44,8 @@ public class Pump extends LiquidBlock{ } if(liquidDrop != null){ - float width = drawPlaceText(Core.bundle.formatFloat("bar.pumpspeed", tiles * pumpAmount / size / size * 60f, 0), x, y, valid); - float dx = x * tilesize + offset() - width/2f - 4f, dy = y * tilesize + offset() + size * tilesize / 2f + 5; + float width = drawPlaceText(Core.bundle.formatFloat("bar.pumpspeed", tiles * pumpAmount * 60f, 0), x, y, valid); + float dx = x * tilesize + offset - width/2f - 4f, dy = y * tilesize + offset + size * tilesize / 2f + 5; Draw.mixcol(Color.darkGray, 1f); Draw.rect(liquidDrop.icon(Cicon.small), dx, dy - 1); Draw.reset(); @@ -80,6 +80,8 @@ public class Pump extends LiquidBlock{ } public class PumpEntity extends LiquidBlockEntity{ + float tiles = 0f; + Liquid liquidDrop = null; @Override public void draw(){ @@ -92,9 +94,11 @@ public class Pump extends LiquidBlock{ } @Override - public void updateTile(){ - float tiles = 0f; - Liquid liquidDrop = null; + public void onProximityUpdate(){ + super.onProximityUpdate(); + + tiles = 0f; + liquidDrop = null; if(isMultiblock()){ for(Tile other : tile.getLinkedTiles(tempTiles)){ @@ -107,9 +111,12 @@ public class Pump extends LiquidBlock{ tiles = 1f; liquidDrop = tile.floor().liquidDrop; } + } - if(cons.valid() && liquidDrop != null){ - float maxPump = Math.min(liquidCapacity - liquids.total(), tiles * pumpAmount * delta() / size / size) * efficiency(); + @Override + public void updateTile(){ + if(consValid() && liquidDrop != null){ + float maxPump = Math.min(liquidCapacity - liquids.total(), tiles * pumpAmount * edelta()); liquids.add(liquidDrop, maxPump); } diff --git a/core/src/mindustry/world/blocks/production/SolidPump.java b/core/src/mindustry/world/blocks/production/SolidPump.java index 64f6570d63..5c83b4fcec 100644 --- a/core/src/mindustry/world/blocks/production/SolidPump.java +++ b/core/src/mindustry/world/blocks/production/SolidPump.java @@ -43,9 +43,8 @@ public class SolidPump extends Pump{ @Override public void setBars(){ super.setBars(); - bars.add("efficiency", (SolidPumpEntity entity) -> new Bar(() -> - Core.bundle.formatFloat("bar.pumpspeed", - entity.lastPump / Time.delta() * 60, 1), + bars.add("efficiency", (SolidPumpEntity entity) -> new Bar(() -> Core.bundle.formatFloat("bar.pumpspeed", + entity.lastPump / Time.delta * 60, 1), () -> Pal.ammo, () -> entity.warmup)); } diff --git a/core/src/mindustry/world/blocks/storage/CoreBlock.java b/core/src/mindustry/world/blocks/storage/CoreBlock.java index d61c94b5b1..80902f9636 100644 --- a/core/src/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/mindustry/world/blocks/storage/CoreBlock.java @@ -81,13 +81,6 @@ public class CoreBlock extends StorageBlock{ () -> Pal.items, () -> e.items.total() / ((float)e.storageCapacity * content.items().count(i -> i.unlockedNow())) )); - - bars.add("units", e -> - new Bar( - () -> Core.bundle.format("bar.units", teamIndex.count(e.team()), Units.getCap(e.team())), - () -> Pal.power, - () -> (float)teamIndex.count(e.team()) / Units.getCap(e.team()) - )); } @Override diff --git a/core/src/mindustry/world/blocks/units/RepairPoint.java b/core/src/mindustry/world/blocks/units/RepairPoint.java index 0e10c0b32c..a5a5646dc6 100644 --- a/core/src/mindustry/world/blocks/units/RepairPoint.java +++ b/core/src/mindustry/world/blocks/units/RepairPoint.java @@ -53,7 +53,7 @@ public class RepairPoint extends Block{ @Override public void drawPlace(int x, int y, int rotation, boolean valid){ - Drawf.dashCircle(x * tilesize + offset(), y * tilesize + offset(), repairRadius, Pal.accent); + Drawf.dashCircle(x * tilesize + offset, y * tilesize + offset, repairRadius, Pal.accent); } @Override @@ -96,15 +96,15 @@ public class RepairPoint extends Block{ if(target != null && (target.dead() || target.dst(tile) > repairRadius || target.health() >= target.maxHealth())){ target = null; }else if(target != null && consValid()){ - target.heal(repairSpeed * Time.delta() * strength * efficiency()); + target.heal(repairSpeed * Time.delta * strength * efficiency()); rotation = Mathf.slerpDelta(rotation, angleTo(target), 0.5f); targetIsBeingRepaired = true; } if(target != null && targetIsBeingRepaired){ - strength = Mathf.lerpDelta(strength, 1f, 0.08f * Time.delta()); + strength = Mathf.lerpDelta(strength, 1f, 0.08f * Time.delta); }else{ - strength = Mathf.lerpDelta(strength, 0f, 0.07f * Time.delta()); + strength = Mathf.lerpDelta(strength, 0f, 0.07f * Time.delta); } if(timer(timerTarget, 20)){ diff --git a/core/src/mindustry/world/blocks/units/ResupplyPoint.java b/core/src/mindustry/world/blocks/units/ResupplyPoint.java index c58847f94c..5baa7f5f3b 100644 --- a/core/src/mindustry/world/blocks/units/ResupplyPoint.java +++ b/core/src/mindustry/world/blocks/units/ResupplyPoint.java @@ -30,7 +30,7 @@ public class ResupplyPoint extends Block{ @Override public void drawPlace(int x, int y, int rotation, boolean valid){ - Drawf.dashCircle(x * tilesize + offset(), y * tilesize + offset(), range, Pal.placing); + Drawf.dashCircle(x * tilesize + offset, y * tilesize + offset, range, Pal.placing); } public class ResupplyPointEntity extends Building{ diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index 7b9226df54..f2804359b4 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -1,5 +1,6 @@ package mindustry.world.blocks.units; +import arc.*; import arc.graphics.*; import arc.graphics.g2d.*; import arc.math.*; @@ -7,6 +8,7 @@ import arc.scene.style.*; import arc.scene.ui.layout.*; import arc.struct.*; import arc.util.*; +import arc.util.ArcAnnotate.*; import arc.util.io.*; import mindustry.*; import mindustry.entities.*; @@ -20,6 +22,8 @@ import mindustry.world.blocks.payloads.*; import mindustry.world.consumers.*; import mindustry.world.meta.*; +import static mindustry.Vars.*; + public class UnitFactory extends UnitBlock{ public int[] capacities; @@ -61,7 +65,19 @@ public class UnitFactory extends UnitBlock{ @Override public void setBars(){ super.setBars(); - bars.add("progress", (UnitFactoryEntity entity) -> new Bar("bar.progress", Pal.ammo, entity::fraction)); + bars.add("progress", (UnitFactoryEntity e) -> new Bar("bar.progress", Pal.ammo, e::fraction)); + + bars.add("units", (UnitFactoryEntity e) -> + new Bar( + () -> e.unit() == null ? "[lightgray]" + Iconc.cancel : + Core.bundle.format("bar.unitcap", + Fonts.getUnicodeStr(e.unit().name), + teamIndex.countType(e.team, e.unit()), + Units.getCap(e.team) + ), + () -> Pal.power, + () -> e.unit() == null ? 0f : (float)teamIndex.countType(e.team, e.unit()) / Units.getCap(e.team) + )); } @Override @@ -129,13 +145,14 @@ public class UnitFactory extends UnitBlock{ table.row(); table.table(t -> { + t.left(); t.image().update(i -> { i.setDrawable(currentPlan == -1 ? Icon.cancel : reg.set(plans[currentPlan].unit.icon(Cicon.medium))); i.setScaling(Scaling.fit); i.setColor(currentPlan == -1 ? Color.lightGray : Color.white); }).size(32).padBottom(-4).padRight(2); t.label(() -> currentPlan == -1 ? "$none" : plans[currentPlan].unit.localizedName).color(Color.lightGray); - }); + }).left(); } @Override @@ -182,7 +199,7 @@ public class UnitFactory extends UnitBlock{ if(currentPlan != -1 && payload == null){ UnitPlan plan = plans[currentPlan]; - if(progress >= plan.time && Units.canCreate(team)){ + if(progress >= plan.time && consValid()){ progress = 0f; payload = new UnitPayload(plan.unit.create(team)); @@ -196,6 +213,15 @@ public class UnitFactory extends UnitBlock{ } } + @Override + public boolean shouldConsume(){ + //do not consume when cap reached + if(currentPlan != -1 && !Units.canCreate(team, plans[currentPlan].unit)){ + return false; + } + return super.shouldConsume(); + } + @Override public int getMaximumAccepted(Item item){ return capacities[item.id]; @@ -207,6 +233,10 @@ public class UnitFactory extends UnitBlock{ Structs.contains(plans[currentPlan].requirements, stack -> stack.item == item); } + public @Nullable UnitType unit(){ + return currentPlan == - 1 ? null : plans[currentPlan].unit; + } + @Override public byte version(){ return 1; diff --git a/core/src/mindustry/world/modules/ItemModule.java b/core/src/mindustry/world/modules/ItemModule.java index ead9f73505..09824a112b 100644 --- a/core/src/mindustry/world/modules/ItemModule.java +++ b/core/src/mindustry/world/modules/ItemModule.java @@ -72,7 +72,7 @@ public class ItemModule extends BlockModule{ cacheSums[i] = 0; if(updateFlow){ - displayFlow[i] = flow[i].hasEnoughData() ? flow[i].mean() : -1; + displayFlow[i] = flow[i].hasEnoughData() ? flow[i].mean() / Time.delta : -1; } } }else{ diff --git a/core/src/mindustry/world/modules/LiquidModule.java b/core/src/mindustry/world/modules/LiquidModule.java index b746b57b0c..8725f78fa4 100644 --- a/core/src/mindustry/world/modules/LiquidModule.java +++ b/core/src/mindustry/world/modules/LiquidModule.java @@ -29,7 +29,7 @@ public class LiquidModule extends BlockModule{ flow.add(lastAdded); lastAdded = 0; if(currentFlowRate < 0 || flowTimer.get(updateInterval)){ - currentFlowRate = flow.hasEnoughData() ? flow.mean() : -1f; + currentFlowRate = flow.hasEnoughData() ? flow.mean() / Time.delta : -1f; } }else{ currentFlowRate = -1f; @@ -39,7 +39,7 @@ public class LiquidModule extends BlockModule{ /** @return current liquid's flow rate in u/s; any value < 0 means 'not ready'. */ public float getFlowRate(){ - return currentFlowRate; + return currentFlowRate * 60; } public float smoothAmount(){ diff --git a/gradle.properties b/gradle.properties index 296e21044f..ceb565fae3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=bb0d60276c0471b920a636d3d32ea838e73be8c2 +archash=d1a629e5f26a038828d72d15c7c9acc01f84e77c diff --git a/server/src/mindustry/server/ServerControl.java b/server/src/mindustry/server/ServerControl.java index 03703921c1..6e9050291a 100644 --- a/server/src/mindustry/server/ServerControl.java +++ b/server/src/mindustry/server/ServerControl.java @@ -39,7 +39,8 @@ public class ServerControl implements ApplicationListener{ private static final int maxLogLength = 1024 * 512; protected static String[] tags = {"&lc&fb[D]", "&lg&fb[I]", "&ly&fb[W]", "&lr&fb[E]", ""}; - protected static DateTimeFormatter dateTime = DateTimeFormatter.ofPattern("MM-dd-yyyy HH:mm:ss"); + protected static DateTimeFormatter dateTime = DateTimeFormatter.ofPattern("MM-dd-yyyy HH:mm:ss"), + autosaveDate = DateTimeFormatter.ofPattern("MM-dd-yyyy_HH-mm-ss"); private final CommandHandler handler = new CommandHandler(""); private final Fi logFolder = Core.settings.getDataDirectory().child("logs/"); @@ -167,7 +168,7 @@ public class ServerControl implements ApplicationListener{ //use map file name to make sure it can be saved String mapName = (state.map.file == null ? "unknown" : state.map.file.nameWithoutExtension()).replace(" ", "_"); - String date = dateTime.format(LocalDateTime.now()).replace(" ", "_"); + String date = autosaveDate.format(LocalDateTime.now()); Seq autosaves = saveDirectory.findAll(f -> f.name().startsWith("auto_")); autosaves.sort(f -> -f.lastModified()); diff --git a/servers.json b/servers.json index d97d173380..9aec8a5f93 100644 --- a/servers.json +++ b/servers.json @@ -50,6 +50,9 @@ { "address": "mindustry.atannergaming.com:8000" }, + { + "address": "mindustry.atannergaming.com:6800" + }, { "address": "mindustry.kbni.net.au:6567" }, @@ -62,6 +65,9 @@ { "address": "Chaotic-Neutral.ddns.net:1111" }, + { + "address": "Chaotic-Neutral.ddns.net:4444" + }, { "address": "Chaotic-Neutral.ddns.net:3333" } diff --git a/tests/src/test/java/power/ItemLiquidGeneratorTests.java b/tests/src/test/java/power/ItemLiquidGeneratorTests.java index 0896892b8b..89765f2e00 100644 --- a/tests/src/test/java/power/ItemLiquidGeneratorTests.java +++ b/tests/src/test/java/power/ItemLiquidGeneratorTests.java @@ -83,7 +83,7 @@ public class ItemLiquidGeneratorTests extends PowerTestFixture{ final float baseEfficiency = liquid.flammability; final float expectedEfficiency = Math.min(1.0f, availableLiquidAmount / maximumLiquidUsage) * baseEfficiency; final float expectedConsumptionPerTick = Math.min(maximumLiquidUsage, availableLiquidAmount); - final float expectedRemainingLiquidAmount = Math.max(0.0f, availableLiquidAmount - expectedConsumptionPerTick * Time.delta()); + final float expectedRemainingLiquidAmount = Math.max(0.0f, availableLiquidAmount - expectedConsumptionPerTick * Time.delta); createGenerator(inputType); assertTrue(entity.acceptLiquid(null, liquid, availableLiquidAmount), inputType + " | " + parameterDescription + ": Liquids which will be declined by the generator don't need to be tested - The code won't be called for those cases."); @@ -170,7 +170,7 @@ public class ItemLiquidGeneratorTests extends PowerTestFixture{ float expectedEfficiency = entity.productionEfficiency; float currentDuration = 0.0f; - while((currentDuration += Time.delta()) <= fakeItemDuration){ + while((currentDuration += Time.delta) <= fakeItemDuration){ entity.updateTile(); assertEquals(expectedEfficiency, entity.productionEfficiency, "Duration: " + currentDuration); } diff --git a/tests/src/test/java/power/PowerTests.java b/tests/src/test/java/power/PowerTests.java index 41f851b804..bbe37653e3 100644 --- a/tests/src/test/java/power/PowerTests.java +++ b/tests/src/test/java/power/PowerTests.java @@ -61,8 +61,8 @@ public class PowerTests extends PowerTestFixture{ powerGraph.add(producerTile.build); powerGraph.add(directConsumerTile.build); - assertEquals(producedPower * Time.delta(), powerGraph.getPowerProduced(), Mathf.FLOAT_ROUNDING_ERROR); - assertEquals(requiredPower * Time.delta(), powerGraph.getPowerNeeded(), Mathf.FLOAT_ROUNDING_ERROR); + assertEquals(producedPower * Time.delta, powerGraph.getPowerProduced(), Mathf.FLOAT_ROUNDING_ERROR); + assertEquals(requiredPower * Time.delta, powerGraph.getPowerNeeded(), Mathf.FLOAT_ROUNDING_ERROR); // Update and check for the expected power status of the consumer powerGraph.update(); diff --git a/tools/build.gradle b/tools/build.gradle index b56bb4e12e..1b45dd95c0 100644 --- a/tools/build.gradle +++ b/tools/build.gradle @@ -16,6 +16,9 @@ import java.util.concurrent.TimeUnit def genFolder = "../core/assets-raw/sprites_out/generated/" def doAntialias = !project.hasProperty("disableAntialias") def colorMap = new IntMap>(), colorIndexMap = new IntIntMap() +//on my machine, I have a native Nim AA implementation that is ~10x faster +//it's not compiled for other platforms so they don't get it +def useFastAA = System.getProperty("user.name") == "anuke" def transformColors = { List> list -> list.each{ colors -> @@ -38,6 +41,11 @@ transformColors([["a387ea", "8a73c6", "5c5e9f"], ["6e7080", "989aa4", "b0bac0"], def antialias = { File file -> if(!doAntialias) return + if(useFastAA){ + "antialias ${file.absolutePath}".execute().waitFor() + return + } + def image = ImageIO.read(file) def out = ImageIO.read(file) def getRGB = { int ix, int iy -> @@ -354,6 +362,7 @@ task pack(dependsOn: classes){ } ExecutorService executor = Executors.newFixedThreadPool(16) + long ms = System.currentTimeMillis() //antialias everything except UI elements fileTree(dir: '../core/assets-raw/sprites_out/', include: "**/*.png").visit{ file -> @@ -371,6 +380,8 @@ task pack(dependsOn: classes){ e.printStackTrace() } + println "Time taken for AA: ${(System.currentTimeMillis() - ms) / 1000f}" + println("\n\nPacking normal 4096 sprites...\n\n") //pack normal sprites diff --git a/tools/src/mindustry/tools/Generators.java b/tools/src/mindustry/tools/Generators.java index fa59d2f733..391f24c57f 100644 --- a/tools/src/mindustry/tools/Generators.java +++ b/tools/src/mindustry/tools/Generators.java @@ -381,7 +381,12 @@ public class Generators{ wrecks[i].save(type.name + "-wreck" + i); } - //TODO GENERATE WRECKS + for(Cicon icon : Cicon.scaled){ + Image scaled = new Image(icon.size, icon.size); + scaled.drawScaled(image); + scaled.save("../ui/unit-" + type.name + "-" + icon.name()); + } + }catch(IllegalArgumentException e){ Log.err("WARNING: Skipping unit @: @", type.name, e.getMessage()); } diff --git a/tools/src/mindustry/tools/ImagePacker.java b/tools/src/mindustry/tools/ImagePacker.java index b2b1a951da..9f359dd30a 100644 --- a/tools/src/mindustry/tools/ImagePacker.java +++ b/tools/src/mindustry/tools/ImagePacker.java @@ -12,6 +12,7 @@ import mindustry.*; import mindustry.content.*; import mindustry.core.*; import mindustry.ctype.*; +import mindustry.type.*; import mindustry.world.*; import mindustry.world.blocks.*; @@ -121,7 +122,7 @@ public class ImagePacker{ ObjectMap content2id = new ObjectMap<>(); map.each((key, val) -> content2id.put(val.split("\\|")[0], key)); - Seq cont = Seq.withArrays(Vars.content.blocks(), Vars.content.items(), Vars.content.liquids()); + Seq cont = Seq.withArrays(Vars.content.blocks(), Vars.content.items(), Vars.content.liquids(), Vars.content.units()); cont.removeAll(u -> u instanceof BuildBlock || u == Blocks.air); int minid = 0xF8FF; @@ -146,6 +147,7 @@ public class ImagePacker{ static String texname(UnlockableContent c){ if(c instanceof Block) return "block-" + c.name + "-medium"; + if(c instanceof UnitType) return "unit-" + c.name + "-medium"; return c.getContentType() + "-" + c.name + "-icon"; }